Full Code of krakenjs/zoid for AI

main f88d82187fc1 cached
199 files
8.9 MB
2.3M tokens
5924 symbols
1 requests
Download .txt
Showing preview only (9,355K chars total). Download the full file or copy to clipboard to get everything.
Repository: krakenjs/zoid
Branch: main
Commit: f88d82187fc1
Files: 199
Total size: 8.9 MB

Directory structure:
gitextract_3tngctqw/

├── .eslintignore
├── .eslintrc.js
├── .flowconfig
├── .github/
│   ├── CODEOWNERS
│   └── workflows/
│       ├── main.yml
│       └── publish.yml
├── .gitignore
├── .husky/
│   ├── .gitignore
│   ├── commit-msg
│   └── pre-commit
├── .npmrc
├── .prettierignore
├── .prettierrc.json
├── AUTHORS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── babel.config.js
├── commitlint.config.js
├── demo/
│   ├── advanced/
│   │   ├── props/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── react-end-to-end/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── redirect-different-domain/
│   │   │   ├── index.htm
│   │   │   ├── login-button.htm
│   │   │   ├── login-button.js
│   │   │   ├── login.htm
│   │   │   ├── login.js
│   │   │   └── redirect.htm
│   │   ├── remote/
│   │   │   ├── index.htm
│   │   │   ├── login-button.htm
│   │   │   ├── login-button.js
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── remote-popup/
│   │       ├── index.htm
│   │       ├── login-button.htm
│   │       ├── login-button.js
│   │       ├── login.htm
│   │       └── login.js
│   ├── basic/
│   │   ├── iframe/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── popup/
│   │       ├── index.htm
│   │       ├── login.htm
│   │       └── login.js
│   ├── common/
│   │   ├── common.js
│   │   ├── index.css
│   │   └── login.css
│   ├── frameworks/
│   │   ├── angular/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── angular2/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── angular2_TypeScript/
│   │   │   ├── app-component.html
│   │   │   ├── app-component.ts
│   │   │   ├── app-module.ts
│   │   │   ├── config.js
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   ├── login.js
│   │   │   ├── main.ts
│   │   │   ├── start.cmd
│   │   │   └── start.sh
│   │   ├── react/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── vue/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── vue3/
│   │       ├── index.htm
│   │       ├── login.htm
│   │       └── login.js
│   └── index.htm
├── dist/
│   ├── zoid.frame.js
│   ├── zoid.frameworks.frame.js
│   ├── zoid.frameworks.js
│   └── zoid.js
├── docs/
│   ├── api/
│   │   ├── component.md
│   │   ├── create.md
│   │   ├── index.md
│   │   ├── instance.md
│   │   ├── parent-props.md
│   │   ├── prop-definitions.md
│   │   ├── render.md
│   │   └── xprops.md
│   └── example.md
├── flow-typed/
│   └── npm/
│       ├── @commitlint/
│       │   ├── cli_vx.x.x.js
│       │   └── config-conventional_vx.x.x.js
│       ├── @krakenjs/
│       │   ├── belter_vx.x.x.js
│       │   ├── cross-domain-utils_vx.x.x.js
│       │   ├── grumbler-scripts_vx.x.x.js
│       │   ├── jsx-pragmatic_vx.x.x.js
│       │   ├── post-robot_vx.x.x.js
│       │   └── zalgo-promise_vx.x.x.js
│       ├── @octokit/
│       │   └── rest_v18.x.x.js
│       ├── colors_v1.x.x.js
│       ├── cross-env_vx.x.x.js
│       ├── flow-bin_v0.x.x.js
│       ├── fs-extra_v8.x.x.js
│       ├── glob_v7.x.x.js
│       ├── husky_vx.x.x.js
│       ├── jest_v29.x.x.js
│       ├── lint-staged_vx.x.x.js
│       ├── md5_v2.x.x.js
│       ├── mkdirp_v1.x.x.js
│       ├── mocha_v4.x.x.js
│       ├── node-stream-zip_v1.x.x.js
│       ├── prettier_v1.x.x.js
│       ├── prettier_vx.x.x.js
│       ├── rimraf_v3.x.x.js
│       ├── semver_v7.x.x.js
│       ├── serve_vx.x.x.js
│       ├── standard-version_vx.x.x.js
│       └── yargs_v15.x.x.js
├── globals.js
├── index.js
├── karma.conf.js
├── package.json
├── src/
│   ├── babel.config.js
│   ├── child/
│   │   ├── child.js
│   │   ├── index.js
│   │   └── props.js
│   ├── component/
│   │   ├── component.js
│   │   ├── index.js
│   │   ├── props.js
│   │   ├── templates/
│   │   │   ├── component.js
│   │   │   ├── container.js
│   │   │   └── index.js
│   │   └── validate.js
│   ├── constants.js
│   ├── declarations.js
│   ├── drivers/
│   │   ├── angular.js
│   │   ├── angular2.js
│   │   ├── index.js
│   │   ├── react.js
│   │   ├── vue.js
│   │   └── vue3.js
│   ├── index.js
│   ├── lib/
│   │   ├── global.js
│   │   ├── index.js
│   │   ├── serialize.js
│   │   └── window.js
│   ├── parent/
│   │   ├── index.js
│   │   ├── parent.js
│   │   └── props.js
│   └── types.js
├── test/
│   ├── babel.config.js
│   ├── common.js
│   ├── index.js
│   ├── lib/
│   │   ├── angular-12/
│   │   │   ├── angular-12-common.js
│   │   │   ├── angular-12-compiler.js
│   │   │   ├── angular-12-core.js
│   │   │   ├── angular-12-platform-browser-dynamic.js
│   │   │   ├── angular-12-platform-browser.js
│   │   │   ├── rxjs_v6.2.0.js
│   │   │   └── zone_v0.8.12.js
│   │   ├── angular-4.js
│   │   ├── react-dom_v15.1.0.js
│   │   ├── react-dom_v16.0.0.js
│   │   ├── react_v15.1.0.js
│   │   ├── react_v16.0.0.js
│   │   └── vue_v3.2.1.js
│   ├── test.js
│   ├── tests/
│   │   ├── actions.jsx
│   │   ├── attributes.js
│   │   ├── bridge.js
│   │   ├── child.js
│   │   ├── children.jsx
│   │   ├── clone.jsx
│   │   ├── dimensions.jsx
│   │   ├── domain.js
│   │   ├── drivers.js
│   │   ├── eligible.jsx
│   │   ├── error.js
│   │   ├── exports.js
│   │   ├── extensions.jsx
│   │   ├── happy.jsx
│   │   ├── index.js
│   │   ├── method.jsx
│   │   ├── props.js
│   │   ├── remove.jsx
│   │   ├── renderto.jsx
│   │   ├── rerender.js
│   │   ├── validation.js
│   │   └── window.js
│   ├── windows/
│   │   ├── basicchild/
│   │   │   ├── index.htm
│   │   │   └── index.js
│   │   ├── bridge/
│   │   │   ├── index.htm
│   │   │   └── index.js
│   │   └── child/
│   │       ├── index.htm
│   │       └── index.js
│   ├── zoid.global.js
│   └── zoid.js
└── webpack.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .eslintignore
================================================
test/lib
demo
dist
test/.eslintrc.js


================================================
FILE: .eslintrc.js
================================================
/* @flow */

module.exports = {
  extends: "@krakenjs/eslint-config-grumbler/eslintrc-browser",

  globals: {
    __ZOID__: true,
    __POST_ROBOT__: true,
  },

  rules: {
    "react/display-name": "off",
    "react/prop-types": "off",
  },

  overrides: [
    {
      files: ["test/**/*"],
      rules: {
        "max-lines": "off",
        "compat/compat": "off",
      },
    },
  ],
};


================================================
FILE: .flowconfig
================================================
[ignore]
.*/node_modules/babel-plugin-flow-runtime
.*/node_modules/flow-runtime
.*/node_modules/npm
.*/node_modules/jsonlint
.*/node_modules/resolve
.*/dist/module
[include]
[libs]
flow-typed
src/declarations.js
node_modules/@krakenjs/post-robot/src/declarations.js
[options]
module.name_mapper='^src\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
experimental.const_params=false

================================================
FILE: .github/CODEOWNERS
================================================
# Owner for everything in the repo
*       @krakenjs/checkout-sdk


================================================
FILE: .github/workflows/main.yml
================================================
name: build

on:
  push:
    branches:
      - main
  pull_request: {}
jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - name: ⬇️ Checkout repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: ⎔ Setup node
        uses: actions/setup-node@v2
        with:
          node-version: "16"
          registry-url: "https://registry.npmjs.org"

      - name: 📥 Download deps
        uses: bahmutov/npm-install@v1
        with:
          useLockFile: false

      - name: 👕 Lint commit messages
        uses: wagoid/commitlint-github-action@v4

      - name: ▶️ Run build and test script
        run: npm run build

      - name: ⬆️ Upload karma coverage report
        uses: codecov/codecov-action@v2


================================================
FILE: .github/workflows/publish.yml
================================================
name: publish to npm
on: workflow_dispatch
jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - name: ⬇️ Checkout repo
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: ⎔ Setup node
        # sets up the .npmrc file to publish to npm
        uses: actions/setup-node@v2
        with:
          node-version: "16"
          registry-url: "https://registry.npmjs.org"

      - name: 📥 Download deps
        uses: bahmutov/npm-install@v1
        with:
          useLockFile: false

      - name: Configure git user
        run: |
          git config --global user.email ${{ github.actor }}@users.noreply.github.com
          git config --global user.name ${{ github.actor }}

      - name: Publish to npm (main branch)
        if: github.ref_name == 'main'
        run: npm run release
        env:
          NODE_AUTH_TOKEN: ${{ secrets.KRAKENJS_PAYPAL_SDK_NPM_AUTH_TOKEN }}

      - name: Publish alpha to npm (non-main branch)
        if: github.ref_name != 'main'
        run: npm run release:alpha
        env:
          NODE_AUTH_TOKEN: ${{ secrets.KRAKENJS_PAYPAL_SDK_NPM_AUTH_TOKEN }}


================================================
FILE: .gitignore
================================================
# Logs
logs
*.log

# Runtime data
pids
*.pid
*.seed

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# node-waf configuration
.lock-wscript

# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release

# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules

#IDE
.idea/*

.DS_Store

package-lock.json


================================================
FILE: .husky/.gitignore
================================================
_


================================================
FILE: .husky/commit-msg
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx --no -- commitlint --edit "$1"


================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx lint-staged


================================================
FILE: .npmrc
================================================
registry=https://registry.npmjs.org/
package-lock=false
save=false


================================================
FILE: .prettierignore
================================================
build
dist
coverage
flow-typed
test/lib/
CHANGELOG.md


================================================
FILE: .prettierrc.json
================================================
{}


================================================
FILE: AUTHORS.md
================================================
Daniel Brain <dbrain@paypal.com>
Anurag Sinha <anusinha@paypal.com>


================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

### [10.5.1](https://github.com/krakenjs/zoid/compare/v10.5.0...v10.5.1) (2026-03-23)

## [10.5.0](https://github.com/krakenjs/zoid/compare/v10.4.0...v10.5.0) (2026-01-07)


### Features

* add support for publishing alpha branches to npm ([#474](https://github.com/krakenjs/zoid/issues/474)) ([90c0b73](https://github.com/krakenjs/zoid/commit/90c0b73b2e658b5931f644cf8ae1f2871bc8f829))

## [10.4.0](https://github.com/krakenjs/zoid/compare/v10.3.3...v10.4.0) (2024-12-19)


### Features

* add getExtensions method to extend zoid component instance ([#468](https://github.com/krakenjs/zoid/issues/468)) ([44d2d24](https://github.com/krakenjs/zoid/commit/44d2d242dc60765a015821b7b3153fdfa18d7c00))
* support additional properties to be added to zoid component from the client ([#464](https://github.com/krakenjs/zoid/issues/464)) ([d2f3f09](https://github.com/krakenjs/zoid/commit/d2f3f0992ae9947e709d20875a666aedce645e3c))


### Bug Fixes

* commit flow-typed to fix ci ([#457](https://github.com/krakenjs/zoid/issues/457)) ([e4da223](https://github.com/krakenjs/zoid/commit/e4da22308b286fb2212af543574a1e66de7c70d1))
* resolve the promise when component is closed/destroyed ([#455](https://github.com/krakenjs/zoid/issues/455)) ([b42cc03](https://github.com/krakenjs/zoid/commit/b42cc038ec0019165848aa95ebffa652960e61d7))
* skip failing test ([#466](https://github.com/krakenjs/zoid/issues/466)) ([a70f250](https://github.com/krakenjs/zoid/commit/a70f250501cdfeba253a36afcdc8937afc2c42ee))

### [10.3.3](https://github.com/krakenjs/zoid/compare/v10.3.2...v10.3.3) (2023-11-02)


### Bug Fixes

* **initChild:** setName is applied in popup context ([#444](https://github.com/krakenjs/zoid/issues/444)) ([b26b8cb](https://github.com/krakenjs/zoid/commit/b26b8cba89324710beecbc09b99551ccf6630e32))

### [10.3.2](https://github.com/krakenjs/zoid/compare/v10.3.1...v10.3.2) (2023-10-30)


### Bug Fixes

* reduce frequency of iframe removed error ([#429](https://github.com/krakenjs/zoid/issues/429)) ([fd2ec05](https://github.com/krakenjs/zoid/commit/fd2ec05cab35143abc287649f6868ace4eb5626e))
* **venmo:** window name ([#443](https://github.com/krakenjs/zoid/issues/443)) ([02bcaab](https://github.com/krakenjs/zoid/commit/02bcaab83512d5339c921fe240f5929b4580e97d))

### [10.3.1](https://github.com/krakenjs/zoid/compare/v10.3.0...v10.3.1) (2023-06-13)


### Bug Fixes

* **prop:** trusted domain ([#440](https://github.com/krakenjs/zoid/issues/440)) ([081d0d5](https://github.com/krakenjs/zoid/commit/081d0d5a77bbd496284ef9e138f353a4386b6ee8))

## [10.3.0](https://github.com/krakenjs/zoid/compare/v10.2.4...v10.3.0) (2023-06-12)


### Features

* **venmo:** allow trusted domains ([#439](https://github.com/krakenjs/zoid/issues/439)) ([5f3bf00](https://github.com/krakenjs/zoid/commit/5f3bf00a08715154ff110023f0a1b862d560670e))


* **docs:** update npm badge ([#437](https://github.com/krakenjs/zoid/issues/437)) ([2ef6fdb](https://github.com/krakenjs/zoid/commit/2ef6fdb4efeeecdbbe446623cf45650499d598fa))

### [10.2.4](https://github.com/krakenjs/zoid/compare/v10.2.3...v10.2.4) (2023-05-22)

### [10.2.3](https://github.com/krakenjs/zoid/compare/v10.2.2...v10.2.3) (2023-05-03)

### [10.2.2](https://github.com/krakenjs/zoid/compare/v10.2.1...v10.2.2) (2023-05-01)


### Bug Fixes

* reduce frequency of "Detected iframe close" error ([#426](https://github.com/krakenjs/zoid/issues/426)) ([5343277](https://github.com/krakenjs/zoid/commit/53432775742a56aad8377c84258ec8d7a17d0450))

### [10.2.1](https://github.com/krakenjs/zoid/compare/v10.2.0...v10.2.1) (2023-04-25)


### Bug Fixes

* only throw errors for major version changes ([#425](https://github.com/krakenjs/zoid/issues/425)) ([57e8989](https://github.com/krakenjs/zoid/commit/57e8989fedf94ea1e1084827acc21fedfad6e267))

## [10.2.0](https://github.com/krakenjs/zoid/compare/v10.1.0...v10.2.0) (2023-04-24)


### Features

* upgrade to grumbler scripts 8 ([#414](https://github.com/krakenjs/zoid/issues/414)) ([b857e89](https://github.com/krakenjs/zoid/commit/b857e8930e76ebae77d755f5e9e0f5ac432a5790))


### Bug Fixes

* avoid throwing errors if container is no longer in page ([#424](https://github.com/krakenjs/zoid/issues/424)) ([e2825bb](https://github.com/krakenjs/zoid/commit/e2825bb5e08eadde14e8fc7b6b76d9069c5a3daf))


* **docs:** update github actions badge url ([#419](https://github.com/krakenjs/zoid/issues/419)) ([31d59fb](https://github.com/krakenjs/zoid/commit/31d59fbd1c89697e3773a5f043a506c95ee009a5))
* fix typos in parent-props and xprops docs ([#408](https://github.com/krakenjs/zoid/issues/408)) ([2fe2858](https://github.com/krakenjs/zoid/commit/2fe28584d75f9f740ec7a6d162b8d775c9cf39a0))
* remove token from publish action ([#422](https://github.com/krakenjs/zoid/issues/422)) ([3c6fa18](https://github.com/krakenjs/zoid/commit/3c6fa180c564b248d0e1b2ed66a2eaef8e2527e6))
* update babel config ([#418](https://github.com/krakenjs/zoid/issues/418)) ([2657252](https://github.com/krakenjs/zoid/commit/2657252085d401d64740fc3c8b372f085705bbf6))
* use prettier ([#401](https://github.com/krakenjs/zoid/issues/401)) ([3974c52](https://github.com/krakenjs/zoid/commit/3974c52a880e8b7a72201c9ad205b576611e7c65))

## [10.1.0](https://github.com/krakenjs/zoid/compare/v10.0.0...v10.1.0) (2022-05-03)


### Features

* add events on prerender start and finish ([#403](https://github.com/krakenjs/zoid/issues/403)) ([c603048](https://github.com/krakenjs/zoid/commit/c6030488dcbb4bb182b630acf722b6a8bbafc5dd))


* move devDependencies to [@krakenjs](https://github.com/krakenjs) scope ([#400](https://github.com/krakenjs/zoid/issues/400)) ([a085f40](https://github.com/krakenjs/zoid/commit/a085f408ff4f20d95f22ab5b44acb490038c33d7))

## [10.0.0](https://github.com/krakenjs/zoid/compare/v9.0.87...v10.0.0) (2022-03-01)


### ⚠ BREAKING CHANGES

* move to krakenjs scope (#395)

* fix build badge ([eb8677a](https://github.com/krakenjs/zoid/commit/eb8677a3c41f8ad52158ad946573d0df9a47538d))
* move to krakenjs scope ([#395](https://github.com/krakenjs/zoid/issues/395)) ([c10ac41](https://github.com/krakenjs/zoid/commit/c10ac415ce6a2174c7ef08f2451da95bb9795888))
* standardize configs ([7504244](https://github.com/krakenjs/zoid/commit/7504244fe9c856a74e210008ed5fac00d2bf114d))


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to zoid

We are always looking for ways to make our modules better. Adding features and fixing bugs allows everyone who depends
on this code to create better, more stable applications.
Feel free to raise a pull request to us. Our team would review your proposed modifications and, if appropriate, merge
your changes into our code. Ideas and other comments are also welcome.

## Getting Started

1. Create your own [fork](https://help.github.com/articles/fork-a-repo) of this [repository](../../fork).

```bash
# Clone it
$ git clone git@github.com:me/zoid.git

# Change directory
$ cd zoid

# Add the upstream repo
$ git remote add upstream git://github.com/krakenjs/zoid.git

# Get the latest upstream changes
$ git pull upstream

# Install dependencies
$ npm install

# Run scripts to verify installation
$ npm test
$ npm run-script lint
$ npm run-script cover
```

## Making Changes

1. Make sure that your changes adhere to the current coding conventions used throughout the project, indentation, accurate comments, etc.
2. Lint your code regularly and ensure it passes prior to submitting a PR:
   `$ npm run lint`.
3. Ensure existing tests pass (`$ npm test`) and include test cases which fail without your change and succeed with it.

## Submitting Changes

1. Ensure that no errors are generated by ESLint.
2. Commit your changes in logical chunks, i.e. keep your changes small per single commit.
3. Locally merge (or rebase) the upstream branch into your topic branch: `$ git pull upstream && git merge`.
4. Push your topic branch up to your fork: `$ git push origin <topic-branch-name>`.
5. Open a [Pull Request](https://help.github.com/articles/using-pull-requests) with a clear title and description.

If you have any questions about contributing, please feel free to contact us by posting your questions on GitHub.

Copyright 2016, PayPal under [the Apache 2.0 license](LICENSE.txt).


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        https://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   Copyright 2017 PayPal

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       https://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
<p align="center"><img width="45%" alt="zoid" src="https://cdn.rawgit.com/krakenjs/zoid/main/zoid.png"></p>

---

[![build status][build-badge]][build]
[![code coverage][coverage-badge]][coverage]
[![npm version][version-badge]][package]

[build-badge]: https://img.shields.io/github/actions/workflow/status/krakenjs/zoid/main.yml?branch=main&logo=github&style=flat-square
[build]: https://github.com/krakenjs/zoid/actions/workflows/main.yml?query=workflow:build
[coverage-badge]: https://img.shields.io/codecov/c/github/krakenjs/zoid.svg?style=flat-square
[coverage]: https://codecov.io/github/krakenjs/zoid/
[version-badge]: https://img.shields.io/npm/v/@krakenjs/zoid.svg?style=flat-square
[package]: https://www.npmjs.com/package/@krakenjs/zoid

A cross-domain component toolkit, supporting:

- Render an iframe or popup on a different domain, and pass down props, including objects and functions
- Call callbacks natively from the child window without worrying about post-messaging or cross-domain restrictions
- Create and expose components to share functionality from your site to others!
- Render your component directly as a React, Vue or Angular component!

It's 'data-down, actions up' style components, but 100% cross-domain using iframes and popups!

---

### [API Docs](./docs/api/index.md)

Public options and methods supported by zoid

### [Demos](http://krakenjs.com/zoid/demo/index.htm)

Working demos of different zoid patterns

### [Demo App](https://github.com/krakenjs/zoid-demo)

Forkable demo app with build, test, publishing and demos pre-configured.

### [Example](./docs/example.md)

A full example of a cross-domain component using zoid

---

### Quick example

Define a component to be put on both the parent and child pages:

```javascript
var MyLoginComponent = zoid.create({
  tag: "my-login-component",
  url: "http://www.my-site.com/my-login-component",
});
```

Render the component on the parent page:

```javascript
<div id="container"></div>

<script src="script-where-my-login-component-is-defined.js"></script>
<script>
    MyLoginComponent({

        prefilledEmail: 'foo@bar.com',

        onLogin: function(email) {
            console.log('User logged in with email:', email);
        }

    }).render('#container');
</script>
```

Implement the component in the iframe:

```javascript
<input type="text" id="email" />
<input type="password" id="password" />
<button id="login">Log In</button>

<script src="script-where-my-login-component-is-defined.js"></script>
<script>
    var email = document.querySelector('#email');
    var password = document.querySelector('#password');
    var button = document.querySelector('#login');

    email.value = window.xprops.prefilledEmail;

    function validUser (email, password) {
      return email && password;
    }

    button.addEventListener('click', function() {
        if (validUser(email.value, password.value)) {
            window.xprops.onLogin(email.value);
        }
    });
</script>
```

### Useful Links

- [Introducing zoid](https://medium.com/@bluepnume/introducing-zoid-seamless-cross-domain-web-components-from-paypal-c0144f3e82bf#.ikbg9r1ml)
- [Turn your web-app into a cross-domain component with five lines of code](https://medium.com/@bluepnume/turn-your-web-app-into-a-cross-domain-component-with-5-lines-of-code-ced01e6795f9#.w8ea7h6ky)
- [A full example of how to implement and use a zoid](./docs/example.md)
- [Building PayPal's Button with zoid](https://medium.com/@bluepnume/less-is-more-reducing-thousands-of-paypal-buttons-into-a-single-iframe-using-zoid-d902d71d8875#.o3ib7y58n)
- [PayPal Checkout - zoid powered Button and Checkout components](https://github.com/paypal/paypal-checkout)
- [Post-Robot - the cross-domain messaging library which powers zoid](https://github.com/krakenjs/post-robot)
- [Implementing Zoid video tutorial](https://www.youtube.com/watch?v=UpXavGv7FaI)

#### Framework Specific

- [Build a cross-domain React component](https://medium.com/@bluepnume/creating-a-cross-domain-react-component-with-zoid-fbcccc4778fd#.73jnwv44c)
- [Introducing support for cross-domain Glimmer components, with zoid](https://medium.com/@bluepnume/introducing-support-for-cross-domain-glimmer-components-with-zoid-21287c9f91f1)

## Rationale

**Writing cross domain components is tricky.**

Consider this: I own `foo.com`, you own `bar.com`, and I have some functionality I want to share on your page.
I could just give you some javascript to load in your page. But then:

- What if I've written a component in React, but you're using some other framework?
- What if I have secure form fields, or secure data I don't want your site to spy on?
- What if I need to make secure calls to my back-end, without resorting to CORS?

**What about an iframe?**

You could just use a vanilla iframe for all of this. But:

- You have to pass data down in the url, or with a post-message.
- You need to set up post-message listeners to get events back up from the child.
- You need to deal with error cases, like if your iframe fails to load or doesn't respond to a post-message.
- You need to think carefully about how to expose all this functionality behind a simple, clear interface.

**zoid solves all of these problems.**

- You pass data and callbacks down as a javascript object
- zoid renders the component and passes down the data
- The child calls your callbacks when it's ready

It will even automatically generate React and Angular bindings, so people can drop-in your component anywhere and not
worry about iframes or post-messages.

## FAQ

- **Do I need to use a particular framework like React to use zoid?**

  No, zoid is framework agnostic. You can:

  - Use it with vanilla javascript.
  - Use it with any framework of your choice.
  - Use it with React or Angular and take advantage of the automatic bindings on the parent page

- **Why write another ui / component library?**

  This isn't designed to replace libraries like React, which are responsible for rendering same-domain components. In fact, the only
  real rendering zoid does is iframes and popups; the rest is up to you! You can build your components using any framework,
  library or pattern you want, then use zoid to expose your components cross-domain. It should play nicely with any other framework!

- **Aren't iframes really slow?**

  Yes, but there are a few things to bear in mind here:

  - zoid isn't designed for building components for your own site. For that you should use native component libraries
    like React, which render quickly onto your page. Use zoid to share functionality with other sites, that you can't
    share native-javascript components with

  - zoid also provides mechanisms for pre-rendering html and css into iframes and popups, so you can at least render a
    loading spinner, or maybe something more advanced, while the new window loads its content.

- **I don't want to bother with popups, can I get zoid with just the iframe support?**

  You can indeed. There's an `zoid.frame.js` and `zoid.frame.min.js` in the `dist/` folder. There's a lot of
  magic that's needed to make popups work with IE, and that's all trimmed out.

- **Can I contribute?**

  By all means! But please raise an issue first if it's more than a small change, to discuss the feasibility.

- **Is this different to [react-frame-component](https://github.com/ryanseddon/react-frame-component)?**

  Yes. `react-frame-component` allows you to render html into a sandboxed iframe on the same domain. `zoid` is geared
  around sharing functionality from one domain to another, in a cross-domain iframe.

## Browser Support

- Internet Explorer 9+
- Chrome 27+
- Firefox 30+
- Safari 5.1+
- Opera 23+


================================================
FILE: SECURITY.md
================================================
# Security Policy

## How is Zoid secure?

Zoid uses [Post Robot](https://github.com/krakenjs/post-robot) to do [post messaging](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) between multiple domains.
Zoid helps secure messaging through iframe sandboxing, domain validation, and data protection.

- **Iframe sandboxing** is a default browser feature that blocks others from accessing the data of your iframe instance.
- **Domain Validation** checks the domain of the connection made to the Zoid child component, if requested. If domains don’t match accepted domains the connect fails. This is to stop access to secure components.
- **Data Protection** is the way Zoid manages checking domains of where the data was sent from to help protect against malicious data being injected through events.

## Things Zoid does NOT protect against

- **Clickjacking** cannot be avoided. Even though the data is secure, the click is happening outside the scope of Zoid, therefore, Zoid cannot validate those actions. To learn more about **clickjacking** read [this](https://en.wikipedia.org/wiki/Clickjacking).

## Contact us

We take security very seriously and ask that you follow the following process.
If you think you may have found a security bug we ask that you privately send the details to DL-PP-Kraken-Js@paypal.com. Please make sure to use a descriptive title in the email.

## Expectations

We will generally get back to you within **24 hours**, but a more detailed response may take up to **48 hours**. If you feel we're not responding back in time, please send us a message _without detail_ on Twitter [@kraken_js](https://twitter.com/kraken_js).

## History

No reported issues


================================================
FILE: babel.config.js
================================================
/* @flow */

// eslint-disable-next-line import/no-commonjs
module.exports = {
  extends: "@krakenjs/babel-config-grumbler/babelrc-node",

  ignore: ["test/lib"],
};


================================================
FILE: commitlint.config.js
================================================
/* @flow */
/* eslint import/no-commonjs: off */

module.exports = {
  extends: ["@commitlint/config-conventional"],
};


================================================
FILE: demo/advanced/props/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <input id="email" placeholder="Custom Email" />
  <br /><br />

  <div id="container"></div>

  <div id="result"></div>

  <script>
    // Render the component

    var instance = MyLoginZoidComponent({
      prefilledEmail: "foo@bar.com",

      onLogin: function (email) {
        console.log("User logged in with email:", email);
        document.querySelector("#result").innerText = email + " logged in!";
      },
    });

    instance.render("#container");

    document
      .querySelector("#email")
      .addEventListener("keyup", function (event) {
        instance.updateProps({
          prefilledEmail: event.target.value,
        });
      });
  </script>
</body>


================================================
FILE: demo/advanced/props/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    window.xprops.onProps((newProps) => {
      document.querySelector("#email").value = newProps.prefilledEmail;
    });

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/advanced/props/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,

  // The properties they can (or must) pass down to my component

  props: {
    prefilledEmail: {
      type: "string",
      required: false,
    },

    onLogin: {
      type: "function",
    },
  },
});


================================================
FILE: demo/advanced/react-end-to-end/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.development.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.development.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <div id="container"></div>

  <script type="text/babel">
    let LoginZoidReactComponent = LoginZoidComponent.driver("react", {
      React: window.React,
      ReactDOM: window.ReactDOM,
    });

    function App() {
      const [loggedIn, setLoggedIn] = React.useState(false);
      const [email, setEmail] = React.useState("foo@bar.com");

      let onLogin = (email) => {
        setEmail(email);
        setLoggedIn(true);
      };

      return (
        <div>
          <h3>Log in on xyz.com</h3>

          {loggedIn ? (
            <p>User logged in with email: {email}</p>
          ) : (
            <LoginZoidReactComponent prefilledEmail={email} onLogin={onLogin} />
          )}
        </div>
      );
    }

    ReactDOM.render(<App />, document.querySelector("#container"));
  </script>
</body>


================================================
FILE: demo/advanced/react-end-to-end/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.development.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom.development.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <div id="container"></div>

  <script type="text/babel">
    function Login({ onLogin, prefilledEmail }) {
      let [email, setEmail] = React.useState(prefilledEmail);
      let [password, setPassword] = React.useState("");
      let [displaySpinner, setDisplaySpinner] = React.useState(false);

      let login = () => {
        setDisplaySpinner(true);

        setTimeout(() => {
          onLogin(email);
        }, 2000);
      };

      return (
        <form>
          {displaySpinner ? (
            <div>
              <svg
                id="spinner"
                className="spinner"
                width="65px"
                height="65px"
                viewBox="0 0 66 66"
                xmlns="http://www.w3.org/2000/svg"
              >
                <circle
                  className="path"
                  fill="none"
                  strokeWidth="6"
                  strokeLinecap="round"
                  cx="33"
                  cy="33"
                  r="30"
                ></circle>
              </svg>
            </div>
          ) : (
            <div>
              <input
                placeholder="email"
                value={email}
                onChange={(event) => setEmail(event.target.value)}
              ></input>

              <br />

              <input
                placeholder="password"
                type="password"
                value={password}
                onChange={(event) => setPassword(event.target.value)}
              ></input>

              <br />

              <button className="btn btn-primary" onClick={login}>
                Log In
              </button>
            </div>
          )}
        </form>
      );
    }

    function useXProps() {
      const [xprops, setXProps] = React.useState(window.xprops);
      React.useEffect(() => {
        window.xprops.onProps((props) => {
          setXProps({ ...props });
        });
      }, []);
      return xprops;
    }

    function App() {
      const { prefilledEmail, onLogin } = useXProps();

      return <Login prefilledEmail={prefilledEmail} onLogin={onLogin} />;
    }

    ReactDOM.render(<App />, document.querySelector("#container"));
  </script>
</body>


================================================
FILE: demo/advanced/react-end-to-end/login.js
================================================
window.LoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/advanced/redirect-different-domain/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <div id="container"></div>

  <hr />

  <div id="loginContainer"></div>

  <script>
    MyLoginButtonComponent({
      loginContainer: "#loginContainer",
    }).render("#container");
  </script>
</body>


================================================
FILE: demo/advanced/redirect-different-domain/login-button.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the component we defined -->

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <button id="openLoginButton" class="btn btn-primary">Open Log In</button>

  <div id="result"></div>

  <script>
    document
      .querySelector("#openLoginButton")
      .addEventListener("click", function () {
        // document.querySelector('#openLoginButton').style.display = 'none';

        MyLoginZoidComponent({
          prefilledEmail: "foo@bar.com",

          onLogin: function (email) {
            console.log("User logged in with email:", email);
            document.querySelector("#result").innerText = email + " logged in!";
          },
        }).renderTo(
          window.parent,
          window.xprops.loginContainer,
          zoid.CONTEXT.POPUP
        );
      });
  </script>
</body>


================================================
FILE: demo/advanced/redirect-different-domain/login-button.js
================================================
window.MyLoginButtonComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-button-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login-button.htm", window.location.href).href,

  // The size of the component on their page

  dimensions: {
    width: "250px",
    height: "100px",
  },
});


================================================
FILE: demo/advanced/redirect-different-domain/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/advanced/redirect-different-domain/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("redirect.htm", window.location.href).href,
  domain: [/.*loca.*8080/, /.*loca.*8001/],
});


================================================
FILE: demo/advanced/redirect-different-domain/redirect.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    location =
      "http://localhost:8080/demo/advanced/redirect-different-domain/login.htm";
  </script>
</body>


================================================
FILE: demo/advanced/remote/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <div id="container"></div>

  <hr />

  <div id="loginContainer"></div>

  <script>
    MyLoginButtonComponent({
      loginContainer: "#loginContainer",
    }).render("#container");
  </script>
</body>


================================================
FILE: demo/advanced/remote/login-button.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the component we defined -->

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <button id="openLoginButton" class="btn btn-primary">Open Log In</button>

  <div id="result"></div>

  <script>
    document
      .querySelector("#openLoginButton")
      .addEventListener("click", function () {
        // document.querySelector('#openLoginButton').style.display = 'none';

        MyLoginZoidComponent({
          prefilledEmail: "foo@bar.com",

          onLogin: function (email) {
            console.log("User logged in with email:", email);
            document.querySelector("#result").innerText = email + " logged in!";
          },
        }).renderTo(window.parent, window.xprops.loginContainer);
      });
  </script>
</body>


================================================
FILE: demo/advanced/remote/login-button.js
================================================
window.MyLoginButtonComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-button-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login-button.htm", window.location.href).href,

  // The size of the component on their page

  dimensions: {
    width: "250px",
    height: "100px",
  },
});


================================================
FILE: demo/advanced/remote/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/advanced/remote/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/advanced/remote-popup/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <div id="container"></div>

  <hr />

  <div id="loginContainer"></div>

  <script>
    MyLoginButtonComponent({
      loginContainer: "#loginContainer",
    }).render("#container");
  </script>
</body>


================================================
FILE: demo/advanced/remote-popup/login-button.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the component we defined -->

  <script src="../../../dist/zoid.js"></script>

  <script src="./login-button.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <button id="openLoginButton" class="btn btn-primary">Open Log In</button>

  <div id="result"></div>

  <script>
    document
      .querySelector("#openLoginButton")
      .addEventListener("click", function () {
        // document.querySelector('#openLoginButton').style.display = 'none';

        MyLoginZoidComponent({
          prefilledEmail: "foo@bar.com",

          onLogin: function (email) {
            console.log("User logged in with email:", email);
            document.querySelector("#result").innerText = email + " logged in!";
          },
        }).renderTo(
          window.parent,
          window.xprops.loginContainer,
          zoid.CONTEXT.POPUP
        );
      });
  </script>
</body>


================================================
FILE: demo/advanced/remote-popup/login-button.js
================================================
window.MyLoginButtonComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-button-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login-button.htm", window.location.href).href,

  // The size of the component on their page

  dimensions: {
    width: "250px",
    height: "100px",
  },
});


================================================
FILE: demo/advanced/remote-popup/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/advanced/remote-popup/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/basic/iframe/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <div id="container"></div>

  <div id="result"></div>

  <script>
    // Render the component

    MyLoginZoidComponent({
      prefilledEmail: "foo@bar.com",

      onLogin: function (email) {
        console.log("User logged in with email:", email);
        document.querySelector("#result").innerText = email + " logged in!";
      },
    }).render("#container");
  </script>
</body>


================================================
FILE: demo/basic/iframe/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/basic/iframe/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  dimensions: {
    width: "300px",
    height: "150px",
  },

  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/basic/popup/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://unpkg.com/jsx-pragmatic@2.0.20/dist/jsx-pragmatic.js"></script>
  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <h3>Log in on xyz.com</h3>

  <button id="popupLogin" class="btn btn-primary">Popup Log In</button>

  <div id="result"></div>

  <script>
    // To render a popup we need to wait for a click event

    document
      .querySelector("#popupLogin")
      .addEventListener("click", function () {
        // Hide the button

        document.querySelector("#popupLogin").style.display = "none";

        // Render the component

        MyLoginZoidComponent({
          prefilledEmail: "foo@bar.com",

          onLogin: function (email) {
            console.log("User logged in with email:", email);
            document.querySelector("#result").innerText = email + " logged in!";
          },
        }).render("body", zoid.CONTEXT.POPUP);
      });
  </script>
</body>


================================================
FILE: demo/basic/popup/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/basic/popup/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,

  dimensions: {
    width: "300px",
    height: "150px",
  },

  // The background overlay

  containerTemplate: ({ uid, tag, context, focus, close, doc }) => {
    function closeComponent(event) {
      event.preventDefault();
      event.stopPropagation();
      return close();
    }

    function focusComponent(event) {
      event.preventDefault();
      event.stopPropagation();
      return focus();
    }

    return pragmatic
      .node(
        "div",
        {
          id: uid,
          onClick: focusComponent,
          class: `${tag} ${tag}-context-${context} ${tag}-focus`,
        },

        pragmatic.node("a", {
          href: "#",
          onClick: closeComponent,
          class: `${tag}-close`,
        }),

        pragmatic.node(
          "style",
          null,
          `
                #${uid} {
                    position: fixed;
                    top: 0;
                    left: 0;
                    width: 100%;
                    height: 100%;
                    background-color: rgba(0, 0, 0, 0.8);
                }

                #${uid}.${tag}-context-${zoid.CONTEXT.POPUP} {
                    cursor: pointer;
                }

                #${uid} .${tag}-close {
                    position: absolute;
                    right: 16px;
                    top: 16px;
                    width: 16px;
                    height: 16px;
                    opacity: 0.6;
                }

                #${uid} .${tag}-close:hover {
                    opacity: 1;
                }

                #${uid} .${tag}-close:before,
                #${uid} .${tag}-close:after {
                    position: absolute;
                    left: 8px;
                    content: ' ';
                    height: 16px;
                    width: 2px;
                    background-color: white;
                }

                #${uid} .${tag}-close:before {
                    transform: rotate(45deg);
                }

                #${uid} .${tag}-close:after {
                    transform: rotate(-45deg);
                }
            `
        )
      )
      .render(pragmatic.dom({ doc }));
  },
});


================================================
FILE: demo/common/common.js
================================================


================================================
FILE: demo/common/index.css
================================================
body {
  text-align: center;
}

h3 {
  margin: 50px;
}

#container {
  display: inline-block;
}


================================================
FILE: demo/common/login.css
================================================
html,
body {
  overflow: hidden;
}

body {
  text-align: center;
  border: 1px solid #ccc;
  height: 100%;
  width: 100%;
}

form,
input,
button {
  text-align: center;
  margin-top: 10px;
}

input {
  text-align: left;
  padding-left: 10px;
}

.spinner {
  animation: rotator 1.4s linear infinite;
  display: inline-block;
  margin-top: 40px;
}

@keyframes rotator {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(270deg);
  }
}

.path {
  stroke-dasharray: 187;
  stroke-dashoffset: 0;
  transform-origin: center;
  animation: dash 1.4s ease-in-out infinite, colors 5.6s ease-in-out infinite;
}

@keyframes colors {
  0% {
    stroke: #4285f4;
  }
  25% {
    stroke: #de3e35;
  }
  50% {
    stroke: #f7c223;
  }
  75% {
    stroke: #1b9a59;
  }
  100% {
    stroke: #4285f4;
  }
}

@keyframes dash {
  0% {
    stroke-dashoffset: 187;
  }
  50% {
    stroke-dashoffset: 47;
    transform: rotate(135deg);
  }
  100% {
    stroke-dashoffset: 187;
    transform: rotate(450deg);
  }
}


================================================
FILE: demo/frameworks/angular/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.js"></script>

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>

  <script>
    var MyLoginAngularZoidComponent = MyLoginZoidComponent.driver(
      "angular",
      window.angular
    );

    angular
      .module("app", [MyLoginAngularZoidComponent.name])
      .controller("appController", function ($scope) {
        $scope.userLoggedIn = false;
        $scope.email = "foo@bar.com";

        $scope.onLogin = function onLogin(email) {
          console.log("User logged in with email:", email);

          $scope.userLoggedIn = true;
          $scope.email = email;
        };
      });
  </script>
</head>

<body ng-app="app" ng-controller="appController">
  <h3>Log in on xyz.com</h3>

  <div id="container">
    <my-login-component
      props="{ prefilledEmail: email, onLogin: onLogin }"
    ></my-login-component>
  </div>

  <div id="result" ng-if="userLoggedIn">
    User logged in with email: {{email}}
  </div>
</body>


================================================
FILE: demo/frameworks/angular/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/angular/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/frameworks/angular2/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />
  <script src="https://npmcdn.com/zone.js@0.8.12?main=browser"></script>
  <script src="https://npmcdn.com/reflect-metadata@0.1.10"></script>
  <script src="https://unpkg.com/rxjs@6.2.0/bundles/rxjs.umd.min.js"></script>
  <script src="https://npmcdn.com/@angular/core@12.2.1/bundles/core.umd.js"></script>
  <script src="https://npmcdn.com/@angular/common@12.2.1/bundles/common.umd.js"></script>
  <script src="https://npmcdn.com/@angular/compiler@12.2.1/bundles/compiler.umd.js"></script>
  <script src="https://npmcdn.com/@angular/platform-browser@12.2.1/bundles/platform-browser.umd.js"></script>
  <script src="https://npmcdn.com/@angular/platform-browser-dynamic@12.2.1/bundles/platform-browser-dynamic.umd.js"></script>
  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <my-app>Loading...</my-app>
  <script>
    (function () {
      const MyLoginZoidComponentModule = MyLoginZoidComponent.driver(
        "angular2",
        ng.core
      );

      class AppComponent {
        constructor() {
          this.prefilledEmail = "foo@bar.com";
          this.onLogin = function (email) {
            this.email = email;
          }.bind(this);
        }
      }

      AppComponent.annotations = [
        new ng.core.Component({
          selector: "my-app",
          template: `
                        <div>
                            <h3>Log in on xyz.com</h3>
                            <div id="container">
                                <my-login-component [props]="{ onLogin: onLogin, prefilledEmail: prefilledEmail }"></my-login-component>
                            </div>
                            <div id="result" *ngIf="email">User logged in with email: {{email}}</div>
                        </div>
                    `,
        }),
      ];

      class AppModule {}

      AppModule.annotations = [
        new ng.core.NgModule({
          imports: [
            ng.platformBrowser.BrowserModule,
            MyLoginZoidComponentModule,
          ],
          declarations: [AppComponent],
          bootstrap: [AppComponent],
        }),
      ];

      document.addEventListener("DOMContentLoaded", function () {
        ng.platformBrowserDynamic
          .platformBrowserDynamic()
          .bootstrapModule(AppModule);
      });
    })();
  </script>
</body>


================================================
FILE: demo/frameworks/angular2/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/angular2/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/frameworks/angular2_TypeScript/app-component.html
================================================
<div>
  <h3>Log in on xyz.com</h3>
  <div id="container">
    <my-login-component
      [props]="{ onLogin: onLogin, prefilledEmail: prefilledEmail }"
    ></my-login-component>
  </div>
  <div id="result" *ngIf="email">User logged in with email: {{email}}</div>
</div>


================================================
FILE: demo/frameworks/angular2_TypeScript/app-component.ts
================================================
import { Component } from "@angular/core";

@Component({
  selector: "my-app",
  templateUrl: "./app-component.html",
})
export class AppComponent {
  prefilledEmail: string;

  email: string;

  constructor() {
    this.prefilledEmail = "foo@bar.com";
    this.onLogin = this.onLogin.bind(this);
  }

  public onLogin(email) {
    console.log("User logged in with email:", email);
    this.email = email;
  }
}


================================================
FILE: demo/frameworks/angular2_TypeScript/app-module.ts
================================================
import * as ngCore from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { AppComponent } from "./app-component";

declare const zoid: any;
declare const MyLoginZoidComponent: any;

const MyLoginZoidComponentModule = MyLoginZoidComponent.driver(
  "angular2",
  ngCore
);

@ngCore.NgModule({
  imports: [BrowserModule, MyLoginZoidComponentModule],
  declarations: [AppComponent],
  bootstrap: [AppComponent],
})
export class AppModule {
  constructor() {}
}


================================================
FILE: demo/frameworks/angular2_TypeScript/config.js
================================================
System.config({
  // use typescript for compilation
  transpiler: "typescript",
  // typescript compiler options
  typescriptOptions: {
    emitDecoratorMetadata: true,
  },
  paths: {
    "npm:": "https://unpkg.com/",
  },
  // map tells the System loader where to look for things
  map: {
    app: "./",
    "@angular/core": "npm:@angular/core/bundles/core.umd.js",
    "@angular/common": "npm:@angular/common/bundles/common.umd.js",
    "@angular/compiler": "npm:@angular/compiler/bundles/compiler.umd.js",
    "@angular/platform-browser":
      "npm:@angular/platform-browser/bundles/platform-browser.umd.js",
    "@angular/platform-browser-dynamic":
      "npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js",
    rxjs: "npm:rxjs",
    typescript: "npm:typescript@2.2.1/lib/typescript.js",
  },
  // packages defines our app package
  packages: {
    app: {
      main: "./main.ts",
      defaultExtension: "ts",
    },
    rxjs: {
      defaultExtension: "js",
    },
  },
});


================================================
FILE: demo/frameworks/angular2_TypeScript/index.htm
================================================
<!DOCTYPE html>

<html>
  <head>
    <base href="." />
    <title>angular2</title>
    <link
      rel="stylesheet"
      href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
    />
    <link rel="stylesheet" href="../../common/index.css" />
    <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script>
    <script src="https://unpkg.com/zone.js/dist/zone.js"></script>
    <script src="https://unpkg.com/zone.js/dist/long-stack-trace-zone.js"></script>
    <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script>
    <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script>
    <script src="config.js"></script>
    <script src="../../../dist/zoid.frameworks.js"></script>
    <script src="./login.js"></script>
    <script>
      System.import("app").catch(console.error.bind(console));
    </script>
  </head>

  <body>
    <my-app> loading... </my-app>
  </body>
</html>


================================================
FILE: demo/frameworks/angular2_TypeScript/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/angular2_TypeScript/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,

  props: {
    prefilledEmail: {
      type: "string",
      required: false,
    },

    onLogin: {
      type: "function",
      required: true,
    },
  },
});


================================================
FILE: demo/frameworks/angular2_TypeScript/main.ts
================================================
//main entry point
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
import { AppModule } from "./app-module";

platformBrowserDynamic().bootstrapModule(AppModule);


================================================
FILE: demo/frameworks/angular2_TypeScript/start.cmd
================================================
Chrome.exe %CD%/index.htm --allow-file-access-from-files

================================================
FILE: demo/frameworks/angular2_TypeScript/start.sh
================================================
google-chrome $PWD/index.htm --allow-file-access-from-files

================================================
FILE: demo/frameworks/react/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.0.0/umd/react.production.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.0.0/umd/react-dom.production.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <div id="container"></div>

  <script type="text/babel">
    let MyLoginReactZoidComponent = MyLoginZoidComponent.driver("react", {
      React: window.React,
      ReactDOM: window.ReactDOM,
    });

    class Main extends React.Component {
      constructor(props) {
        super(props);

        this.state = {
          userLoggedIn: false,
          email: "foo@bar.com",
        };
      }

      onLogin(email) {
        console.log("User logged in with email:", email);

        this.setState({
          userLoggedIn: true,
          email: email,
        });
      }

      render() {
        return (
          <div>
            <h3>Log in on xyz.com</h3>

            <MyLoginReactZoidComponent
              prefilledEmail={this.state.email}
              onLogin={(email) => this.onLogin(email)}
            />

            <div id="result">
              {this.state.userLoggedIn
                ? "User logged in with email: " + this.state.email
                : ""}
            </div>
          </div>
        );
      }
    }

    ReactDOM.render(<Main />, document.querySelector("#container"));
  </script>
</body>


================================================
FILE: demo/frameworks/react/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/react/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/frameworks/vue/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

  <script src="https://unpkg.com/vue"></script>
  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <div id="container">
    <app></app>
  </div>

  <script type="text/babel">
    var MyLoginVueZoidComponent = MyLoginZoidComponent.driver("vue", Vue);

    Vue.component("app", {
      data: function () {
        return {
          userLoggedIn: false,
          email: "foo@bar.com",
        };
      },

      template: `<div>
                        <h3>Log in on xyz.com</h3>


                        <my-component :prefilledEmail = "this.email" :onLogin = "onLogin"  />
                        <div id="result">{{ this.userLoggedIn ? 'User logged in with email: ' + email : '' }}</div>

                    </div>`,
      components: {
        "my-component": MyLoginVueZoidComponent,
      },

      computed: {
        onLogin: function (email) {
          return (email) => {
            this.userLoggedIn = true;
            this.email = email;
          };
        },
      },
    });

    var vm = new Vue({
      el: "#container",
    });
  </script>
</body>


================================================
FILE: demo/frameworks/vue/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/vue/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/frameworks/vue3/index.htm
================================================
<!DOCTYPE html>

<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <link rel="stylesheet" href="../../common/index.css" />

  <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>

  <script src="https://unpkg.com/vue@next"></script>
  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <div id="container"></div>

  <script type="text/babel">
    const RootComponent = {
      template: `
            <div>
                <h3>Log in on xyz.com</h3>
                <app :prefilled-email="this.email" :on-login="onLogin"></app>
                <div id="result">{{ this.userLoggedIn ? 'User logged in with email: ' + email : '' }}</div>
            </div>
            `,

      data() {
        return {
          userLoggedIn: false,
          email: "foo@bar.com",
        };
      },
      computed: {
        onLogin: function (email) {
          return (email) => {
            this.userLoggedIn = true;
            this.email = email;
          };
        },
      },
    };

    const vueAppp = Vue.createApp(RootComponent);

    const MyVueLoginZoidComponent = MyLoginZoidComponent.driver("vue3");

    vueAppp.component("app", MyVueLoginZoidComponent);

    vueAppp.mount("#container");
  </script>
</body>


================================================
FILE: demo/frameworks/vue3/login.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />
  <!-- <link rel="stylesheet" href="./bootstrap-material-design.css" /> -->
  <link rel="stylesheet" href="../../common/login.css" />

  <!-- Pull in zoid and the login component we defined -->

  <script src="../../../dist/zoid.frameworks.js"></script>
  <script src="./login.js"></script>
</head>

<body>
  <!-- Set up a login form -->

  <form id="loginForm">
    <input id="email" type="text" placeholder="email" /><br />
    <input id="password" type="password" placeholder="password" /><br />
    <button id="loginButton" class="btn btn-primary">Log In</button>
  </form>

  <svg
    id="spinner"
    class="spinner"
    width="65px"
    height="65px"
    viewBox="0 0 66 66"
    xmlns="http://www.w3.org/2000/svg"
  >
    <circle
      class="path"
      fill="none"
      stroke-width="6"
      stroke-linecap="round"
      cx="33"
      cy="33"
      r="30"
    ></circle>
  </svg>

  <script>
    // Hide the loading spinner by default

    document.querySelector("#spinner").style.display = "none";

    // Pre-polulate the email field, if we're passed an email

    if (window.xprops.prefilledEmail) {
      document.querySelector("#email").value = window.xprops.prefilledEmail;
    }

    // Handle the button click to log the user in

    document
      .querySelector("#loginButton")
      .addEventListener("click", function (event) {
        event.preventDefault();

        var email = document.querySelector("#email").value;
        var password = document.querySelector("#password").value;

        if (!email || !password) {
          return alert("Please enter both an email and a password");
        }

        // Hide the login form and replace it with a spinner

        document.querySelector("#loginForm").style.display = "none";
        document.querySelector("#spinner").style.display = "inline-block";

        // Pretend to make an ajax call to log the user in

        setTimeout(function () {
          // Since we had a successful login, call-back the parent page to let them know which user logged in:

          window.xprops.onLogin(email);
          window.xprops.close();
        }, 2000);
      });
  </script>
</body>


================================================
FILE: demo/frameworks/vue3/login.js
================================================
window.MyLoginZoidComponent = zoid.create({
  // The html tag used to render my component

  tag: "my-login-component",

  // The url that will be loaded in the iframe or popup, when someone includes my component on their page

  url: new URL("login.htm", window.location.href).href,
});


================================================
FILE: demo/index.htm
================================================
<head>
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/bootstrap-material-design.css"
  />

  <style>
    h1 {
      margin-top: 30px;
    }

    h2 {
      margin-top: 20px;
    }

    ul {
      margin-top: 20px;
    }
  </style>
</head>

<body>
  <div class="container">
    <h1>zoid demos</h1>

    <hr />

    <h2>basic demos</h2>

    <ul>
      <li><a href="./basic/iframe/index.htm">iframe component</a></li>
      <li><a href="./basic/popup/index.htm">popup component</a></li>
    </ul>

    <h2>framework demos</h2>

    <ul>
      <li><a href="./frameworks/react/index.htm">react component</a></li>
      <li><a href="./frameworks/angular/index.htm">angular component</a></li>
      <li><a href="./frameworks/vue/index.htm">vue component</a></li>
    </ul>

    <h2>advanced demos</h2>

    <ul>
      <li><a href="./advanced/props/index.htm">pre-defined props</a></li>
      <li><a href="./advanced/remote/index.htm">render remote</a></li>
      <li>
        <a href="./advanced/remote-popup/index.htm">render remote popup</a>
      </li>
      <li>
        <a href="./advanced/react-end-to-end/index.htm"
          >end-to-end react component</a
        >
      </li>
    </ul>
  </div>
</body>


================================================
FILE: dist/zoid.frame.js
================================================
!function(root, factory) {
    "object" == typeof exports && "object" == typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define("zoid", [], factory) : "object" == typeof exports ? exports.zoid = factory() : root.zoid = factory();
}("undefined" != typeof self ? self : this, (function() {
    return function(modules) {
        var installedModules = {};
        function __webpack_require__(moduleId) {
            if (installedModules[moduleId]) return installedModules[moduleId].exports;
            var module = installedModules[moduleId] = {
                i: moduleId,
                l: !1,
                exports: {}
            };
            modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
            module.l = !0;
            return module.exports;
        }
        __webpack_require__.m = modules;
        __webpack_require__.c = installedModules;
        __webpack_require__.d = function(exports, name, getter) {
            __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
                enumerable: !0,
                get: getter
            });
        };
        __webpack_require__.r = function(exports) {
            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {
                value: "Module"
            });
            Object.defineProperty(exports, "__esModule", {
                value: !0
            });
        };
        __webpack_require__.t = function(value, mode) {
            1 & mode && (value = __webpack_require__(value));
            if (8 & mode) return value;
            if (4 & mode && "object" == typeof value && value && value.__esModule) return value;
            var ns = Object.create(null);
            __webpack_require__.r(ns);
            Object.defineProperty(ns, "default", {
                enumerable: !0,
                value: value
            });
            if (2 & mode && "string" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {
                return value[key];
            }.bind(null, key));
            return ns;
        };
        __webpack_require__.n = function(module) {
            var getter = module && module.__esModule ? function() {
                return module.default;
            } : function() {
                return module;
            };
            __webpack_require__.d(getter, "a", getter);
            return getter;
        };
        __webpack_require__.o = function(object, property) {
            return {}.hasOwnProperty.call(object, property);
        };
        __webpack_require__.p = "";
        return __webpack_require__(__webpack_require__.s = 0);
    }([ function(module, __webpack_exports__, __webpack_require__) {
        "use strict";
        __webpack_require__.r(__webpack_exports__);
        __webpack_require__.d(__webpack_exports__, "PopupOpenError", (function() {
            return dom_PopupOpenError;
        }));
        __webpack_require__.d(__webpack_exports__, "create", (function() {
            return component_create;
        }));
        __webpack_require__.d(__webpack_exports__, "destroy", (function() {
            return component_destroy;
        }));
        __webpack_require__.d(__webpack_exports__, "destroyComponents", (function() {
            return destroyComponents;
        }));
        __webpack_require__.d(__webpack_exports__, "destroyAll", (function() {
            return destroyAll;
        }));
        __webpack_require__.d(__webpack_exports__, "PROP_TYPE", (function() {
            return PROP_TYPE;
        }));
        __webpack_require__.d(__webpack_exports__, "PROP_SERIALIZATION", (function() {
            return PROP_SERIALIZATION;
        }));
        __webpack_require__.d(__webpack_exports__, "CONTEXT", (function() {
            return CONTEXT;
        }));
        __webpack_require__.d(__webpack_exports__, "EVENT", (function() {
            return EVENT;
        }));
        function _setPrototypeOf(o, p) {
            return (_setPrototypeOf = Object.setPrototypeOf || function(o, p) {
                o.__proto__ = p;
                return o;
            })(o, p);
        }
        function _inheritsLoose(subClass, superClass) {
            subClass.prototype = Object.create(superClass.prototype);
            subClass.prototype.constructor = subClass;
            _setPrototypeOf(subClass, superClass);
        }
        function _extends() {
            return (_extends = Object.assign || function(target) {
                for (var i = 1; i < arguments.length; i++) {
                    var source = arguments[i];
                    for (var key in source) ({}).hasOwnProperty.call(source, key) && (target[key] = source[key]);
                }
                return target;
            }).apply(this, arguments);
        }
        function utils_isPromise(item) {
            try {
                if (!item) return !1;
                if ("undefined" != typeof Promise && item instanceof Promise) return !0;
                if ("undefined" != typeof window && "function" == typeof window.Window && item instanceof window.Window) return !1;
                if ("undefined" != typeof window && "function" == typeof window.constructor && item instanceof window.constructor) return !1;
                var _toString = {}.toString;
                if (_toString) {
                    var name = _toString.call(item);
                    if ("[object Window]" === name || "[object global]" === name || "[object DOMWindow]" === name) return !1;
                }
                if ("function" == typeof item.then) return !0;
            } catch (err) {
                return !1;
            }
            return !1;
        }
        var dispatchedErrors = [];
        var possiblyUnhandledPromiseHandlers = [];
        var activeCount = 0;
        var flushPromise;
        function flushActive() {
            if (!activeCount && flushPromise) {
                var promise = flushPromise;
                flushPromise = null;
                promise.resolve();
            }
        }
        function startActive() {
            activeCount += 1;
        }
        function endActive() {
            activeCount -= 1;
            flushActive();
        }
        var promise_ZalgoPromise = function() {
            function ZalgoPromise(handler) {
                var _this = this;
                this.resolved = void 0;
                this.rejected = void 0;
                this.errorHandled = void 0;
                this.value = void 0;
                this.error = void 0;
                this.handlers = void 0;
                this.dispatching = void 0;
                this.stack = void 0;
                this.resolved = !1;
                this.rejected = !1;
                this.errorHandled = !1;
                this.handlers = [];
                if (handler) {
                    var _result;
                    var _error;
                    var resolved = !1;
                    var rejected = !1;
                    var isAsync = !1;
                    startActive();
                    try {
                        handler((function(res) {
                            if (isAsync) _this.resolve(res); else {
                                resolved = !0;
                                _result = res;
                            }
                        }), (function(err) {
                            if (isAsync) _this.reject(err); else {
                                rejected = !0;
                                _error = err;
                            }
                        }));
                    } catch (err) {
                        endActive();
                        this.reject(err);
                        return;
                    }
                    endActive();
                    isAsync = !0;
                    resolved ? this.resolve(_result) : rejected && this.reject(_error);
                }
            }
            var _proto = ZalgoPromise.prototype;
            _proto.resolve = function(result) {
                if (this.resolved || this.rejected) return this;
                if (utils_isPromise(result)) throw new Error("Can not resolve promise with another promise");
                this.resolved = !0;
                this.value = result;
                this.dispatch();
                return this;
            };
            _proto.reject = function(error) {
                var _this2 = this;
                if (this.resolved || this.rejected) return this;
                if (utils_isPromise(error)) throw new Error("Can not reject promise with another promise");
                if (!error) {
                    var _err = error && "function" == typeof error.toString ? error.toString() : {}.toString.call(error);
                    error = new Error("Expected reject to be called with Error, got " + _err);
                }
                this.rejected = !0;
                this.error = error;
                this.errorHandled || setTimeout((function() {
                    _this2.errorHandled || function(err, promise) {
                        if (-1 === dispatchedErrors.indexOf(err)) {
                            dispatchedErrors.push(err);
                            setTimeout((function() {
                                throw err;
                            }), 1);
                            for (var j = 0; j < possiblyUnhandledPromiseHandlers.length; j++) possiblyUnhandledPromiseHandlers[j](err, promise);
                        }
                    }(error, _this2);
                }), 1);
                this.dispatch();
                return this;
            };
            _proto.asyncReject = function(error) {
                this.errorHandled = !0;
                this.reject(error);
                return this;
            };
            _proto.dispatch = function() {
                var resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;
                if (!this.dispatching && (resolved || rejected)) {
                    this.dispatching = !0;
                    startActive();
                    var chain = function(firstPromise, secondPromise) {
                        return firstPromise.then((function(res) {
                            secondPromise.resolve(res);
                        }), (function(err) {
                            secondPromise.reject(err);
                        }));
                    };
                    for (var i = 0; i < handlers.length; i++) {
                        var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise;
                        var _result2 = void 0;
                        if (resolved) try {
                            _result2 = onSuccess ? onSuccess(this.value) : this.value;
                        } catch (err) {
                            promise.reject(err);
                            continue;
                        } else if (rejected) {
                            if (!onError) {
                                promise.reject(this.error);
                                continue;
                            }
                            try {
                                _result2 = onError(this.error);
                            } catch (err) {
                                promise.reject(err);
                                continue;
                            }
                        }
                        if (_result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected)) {
                            var promiseResult = _result2;
                            promiseResult.resolved ? promise.resolve(promiseResult.value) : promise.reject(promiseResult.error);
                            promiseResult.errorHandled = !0;
                        } else utils_isPromise(_result2) ? _result2 instanceof ZalgoPromise && (_result2.resolved || _result2.rejected) ? _result2.resolved ? promise.resolve(_result2.value) : promise.reject(_result2.error) : chain(_result2, promise) : promise.resolve(_result2);
                    }
                    handlers.length = 0;
                    this.dispatching = !1;
                    endActive();
                }
            };
            _proto.then = function(onSuccess, onError) {
                if (onSuccess && "function" != typeof onSuccess && !onSuccess.call) throw new Error("Promise.then expected a function for success handler");
                if (onError && "function" != typeof onError && !onError.call) throw new Error("Promise.then expected a function for error handler");
                var promise = new ZalgoPromise;
                this.handlers.push({
                    promise: promise,
                    onSuccess: onSuccess,
                    onError: onError
                });
                this.errorHandled = !0;
                this.dispatch();
                return promise;
            };
            _proto.catch = function(onError) {
                return this.then(void 0, onError);
            };
            _proto.finally = function(onFinally) {
                if (onFinally && "function" != typeof onFinally && !onFinally.call) throw new Error("Promise.finally expected a function");
                return this.then((function(result) {
                    return ZalgoPromise.try(onFinally).then((function() {
                        return result;
                    }));
                }), (function(err) {
                    return ZalgoPromise.try(onFinally).then((function() {
                        throw err;
                    }));
                }));
            };
            _proto.timeout = function(time, err) {
                var _this3 = this;
                if (this.resolved || this.rejected) return this;
                var timeout = setTimeout((function() {
                    _this3.resolved || _this3.rejected || _this3.reject(err || new Error("Promise timed out after " + time + "ms"));
                }), time);
                return this.then((function(result) {
                    clearTimeout(timeout);
                    return result;
                }));
            };
            _proto.toPromise = function() {
                if ("undefined" == typeof Promise) throw new TypeError("Could not find Promise");
                return Promise.resolve(this);
            };
            _proto.lazy = function() {
                this.errorHandled = !0;
                return this;
            };
            ZalgoPromise.resolve = function(value) {
                return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise((function(resolve, reject) {
                    return value.then(resolve, reject);
                })) : (new ZalgoPromise).resolve(value);
            };
            ZalgoPromise.reject = function(error) {
                return (new ZalgoPromise).reject(error);
            };
            ZalgoPromise.asyncReject = function(error) {
                return (new ZalgoPromise).asyncReject(error);
            };
            ZalgoPromise.all = function(promises) {
                var promise = new ZalgoPromise;
                var count = promises.length;
                var results = [].slice();
                if (!count) {
                    promise.resolve(results);
                    return promise;
                }
                var chain = function(i, firstPromise, secondPromise) {
                    return firstPromise.then((function(res) {
                        results[i] = res;
                        0 == (count -= 1) && promise.resolve(results);
                    }), (function(err) {
                        secondPromise.reject(err);
                    }));
                };
                for (var i = 0; i < promises.length; i++) {
                    var prom = promises[i];
                    if (prom instanceof ZalgoPromise) {
                        if (prom.resolved) {
                            results[i] = prom.value;
                            count -= 1;
                            continue;
                        }
                    } else if (!utils_isPromise(prom)) {
                        results[i] = prom;
                        count -= 1;
                        continue;
                    }
                    chain(i, ZalgoPromise.resolve(prom), promise);
                }
                0 === count && promise.resolve(results);
                return promise;
            };
            ZalgoPromise.hash = function(promises) {
                var result = {};
                var awaitPromises = [];
                var _loop = function(key) {
                    if (promises.hasOwnProperty(key)) {
                        var value = promises[key];
                        utils_isPromise(value) ? awaitPromises.push(value.then((function(res) {
                            result[key] = res;
                        }))) : result[key] = value;
                    }
                };
                for (var key in promises) _loop(key);
                return ZalgoPromise.all(awaitPromises).then((function() {
                    return result;
                }));
            };
            ZalgoPromise.map = function(items, method) {
                return ZalgoPromise.all(items.map(method));
            };
            ZalgoPromise.onPossiblyUnhandledException = function(handler) {
                return function(handler) {
                    possiblyUnhandledPromiseHandlers.push(handler);
                    return {
                        cancel: function() {
                            possiblyUnhandledPromiseHandlers.splice(possiblyUnhandledPromiseHandlers.indexOf(handler), 1);
                        }
                    };
                }(handler);
            };
            ZalgoPromise.try = function(method, context, args) {
                if (method && "function" != typeof method && !method.call) throw new Error("Promise.try expected a function");
                var result;
                startActive();
                try {
                    result = method.apply(context, args || []);
                } catch (err) {
                    endActive();
                    return ZalgoPromise.reject(err);
                }
                endActive();
                return ZalgoPromise.resolve(result);
            };
            ZalgoPromise.delay = function(_delay) {
                return new ZalgoPromise((function(resolve) {
                    setTimeout(resolve, _delay);
                }));
            };
            ZalgoPromise.isPromise = function(value) {
                return !!(value && value instanceof ZalgoPromise) || utils_isPromise(value);
            };
            ZalgoPromise.flush = function() {
                return function(Zalgo) {
                    var promise = flushPromise = flushPromise || new Zalgo;
                    flushActive();
                    return promise;
                }(ZalgoPromise);
            };
            return ZalgoPromise;
        }();
        function isRegex(item) {
            return "[object RegExp]" === {}.toString.call(item);
        }
        var IE_WIN_ACCESS_ERROR = "Call was rejected by callee.\r\n";
        function getActualProtocol(win) {
            void 0 === win && (win = window);
            return win.location.protocol;
        }
        function getProtocol(win) {
            void 0 === win && (win = window);
            if (win.mockDomain) {
                var protocol = win.mockDomain.split("//")[0];
                if (protocol) return protocol;
            }
            return getActualProtocol(win);
        }
        function isAboutProtocol(win) {
            void 0 === win && (win = window);
            return "about:" === getProtocol(win);
        }
        function utils_getParent(win) {
            void 0 === win && (win = window);
            if (win) try {
                if (win.parent && win.parent !== win) return win.parent;
            } catch (err) {}
        }
        function getOpener(win) {
            void 0 === win && (win = window);
            if (win && !utils_getParent(win)) try {
                return win.opener;
            } catch (err) {}
        }
        function canReadFromWindow(win) {
            try {
                return !0;
            } catch (err) {}
            return !1;
        }
        function getActualDomain(win) {
            void 0 === win && (win = window);
            var location = win.location;
            if (!location) throw new Error("Can not read window location");
            var protocol = getActualProtocol(win);
            if (!protocol) throw new Error("Can not read window protocol");
            if ("file:" === protocol) return "file://";
            if ("about:" === protocol) {
                var parent = utils_getParent(win);
                return parent && canReadFromWindow() ? getActualDomain(parent) : "about://";
            }
            var host = location.host;
            if (!host) throw new Error("Can not read window host");
            return protocol + "//" + host;
        }
        function getDomain(win) {
            void 0 === win && (win = window);
            var domain = getActualDomain(win);
            return domain && win.mockDomain && 0 === win.mockDomain.indexOf("mock:") ? win.mockDomain : domain;
        }
        function isSameDomain(win) {
            if (!function(win) {
                try {
                    if (win === window) return !0;
                } catch (err) {}
                try {
                    var desc = Object.getOwnPropertyDescriptor(win, "location");
                    if (desc && !1 === desc.enumerable) return !1;
                } catch (err) {}
                try {
                    if (isAboutProtocol(win) && canReadFromWindow()) return !0;
                } catch (err) {}
                try {
                    if (function(win) {
                        void 0 === win && (win = window);
                        return "mock:" === getProtocol(win);
                    }(win) && canReadFromWindow()) return !0;
                } catch (err) {}
                try {
                    if (getActualDomain(win) === getActualDomain(window)) return !0;
                } catch (err) {}
                return !1;
            }(win)) return !1;
            try {
                if (win === window) return !0;
                if (isAboutProtocol(win) && canReadFromWindow()) return !0;
                if (getDomain(window) === getDomain(win)) return !0;
            } catch (err) {}
            return !1;
        }
        function assertSameDomain(win) {
            if (!isSameDomain(win)) throw new Error("Expected window to be same domain");
            return win;
        }
        function isAncestorParent(parent, child) {
            if (!parent || !child) return !1;
            var childParent = utils_getParent(child);
            return childParent ? childParent === parent : -1 !== function(win) {
                var result = [];
                try {
                    for (;win.parent !== win; ) {
                        result.push(win.parent);
                        win = win.parent;
                    }
                } catch (err) {}
                return result;
            }(child).indexOf(parent);
        }
        function getFrames(win) {
            var result = [];
            var frames;
            try {
                frames = win.frames;
            } catch (err) {
                frames = win;
            }
            var len;
            try {
                len = frames.length;
            } catch (err) {}
            if (0 === len) return result;
            if (len) {
                for (var i = 0; i < len; i++) {
                    var frame = void 0;
                    try {
                        frame = frames[i];
                    } catch (err) {
                        continue;
                    }
                    result.push(frame);
                }
                return result;
            }
            for (var _i = 0; _i < 100; _i++) {
                var _frame = void 0;
                try {
                    _frame = frames[_i];
                } catch (err) {
                    return result;
                }
                if (!_frame) return result;
                result.push(_frame);
            }
            return result;
        }
        function getAllChildFrames(win) {
            var result = [];
            for (var _i3 = 0, _getFrames2 = getFrames(win); _i3 < _getFrames2.length; _i3++) {
                var frame = _getFrames2[_i3];
                result.push(frame);
                for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame); _i5 < _getAllChildFrames2.length; _i5++) result.push(_getAllChildFrames2[_i5]);
            }
            return result;
        }
        function getTop(win) {
            void 0 === win && (win = window);
            try {
                if (win.top) return win.top;
            } catch (err) {}
            if (utils_getParent(win) === win) return win;
            try {
                if (isAncestorParent(window, win) && window.top) return window.top;
            } catch (err) {}
            try {
                if (isAncestorParent(win, window) && window.top) return window.top;
            } catch (err) {}
            for (var _i7 = 0, _getAllChildFrames4 = getAllChildFrames(win); _i7 < _getAllChildFrames4.length; _i7++) {
                var frame = _getAllChildFrames4[_i7];
                try {
                    if (frame.top) return frame.top;
                } catch (err) {}
                if (utils_getParent(frame) === frame) return frame;
            }
        }
        function getAllFramesInWindow(win) {
            var top = getTop(win);
            if (!top) throw new Error("Can not determine top window");
            var result = [].concat(getAllChildFrames(top), [ top ]);
            -1 === result.indexOf(win) && (result = [].concat(result, [ win ], getAllChildFrames(win)));
            return result;
        }
        var iframeWindows = [];
        var iframeFrames = [];
        function isWindowClosed(win, allowMock) {
            void 0 === allowMock && (allowMock = !0);
            try {
                if (win === window) return !1;
            } catch (err) {
                return !0;
            }
            try {
                if (!win) return !0;
            } catch (err) {
                return !0;
            }
            try {
                if (win.closed) return !0;
            } catch (err) {
                return !err || err.message !== IE_WIN_ACCESS_ERROR;
            }
            if (allowMock && isSameDomain(win)) try {
                if (win.mockclosed) return !0;
            } catch (err) {}
            try {
                if (!win.parent || !win.top) return !0;
            } catch (err) {}
            var iframeIndex = function(collection, item) {
                for (var i = 0; i < collection.length; i++) try {
                    if (collection[i] === item) return i;
                } catch (err) {}
                return -1;
            }(iframeWindows, win);
            if (-1 !== iframeIndex) {
                var frame = iframeFrames[iframeIndex];
                if (frame && function(frame) {
                    if (!frame.contentWindow) return !0;
                    if (!frame.parentNode) return !0;
                    var doc = frame.ownerDocument;
                    if (doc && doc.documentElement && !doc.documentElement.contains(frame)) {
                        var parent = frame;
                        for (;parent.parentNode && parent.parentNode !== parent; ) parent = parent.parentNode;
                        if (!parent.host || !doc.documentElement.contains(parent.host)) return !0;
                    }
                    return !1;
                }(frame)) return !0;
            }
            return !1;
        }
        function getAncestor(win) {
            void 0 === win && (win = window);
            return getOpener(win = win || window) || utils_getParent(win) || void 0;
        }
        function anyMatch(collection1, collection2) {
            for (var _i17 = 0; _i17 < collection1.length; _i17++) {
                var item1 = collection1[_i17];
                for (var _i19 = 0; _i19 < collection2.length; _i19++) if (item1 === collection2[_i19]) return !0;
            }
            return !1;
        }
        function matchDomain(pattern, origin) {
            if ("string" == typeof pattern) {
                if ("string" == typeof origin) return "*" === pattern || origin === pattern;
                if (isRegex(origin)) return !1;
                if (Array.isArray(origin)) return !1;
            }
            return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some((function(subpattern) {
                return matchDomain(subpattern, origin);
            })));
        }
        function isWindow(obj) {
            try {
                if (obj === window) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if ("[object Window]" === {}.toString.call(obj)) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if (window.Window && obj instanceof window.Window) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if (obj && obj.self === obj) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if (obj && obj.parent === obj) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if (obj && obj.top === obj) return !0;
            } catch (err) {
                if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
            }
            try {
                if (obj && "__unlikely_value__" === obj.__cross_domain_utils_window_check__) return !1;
            } catch (err) {
                return !0;
            }
            try {
                if ("postMessage" in obj && "self" in obj && "location" in obj) return !0;
            } catch (err) {}
            return !1;
        }
        function getFrameForWindow(win) {
            if (isSameDomain(win)) return assertSameDomain(win).frameElement;
            for (var _i21 = 0, _document$querySelect2 = document.querySelectorAll("iframe"); _i21 < _document$querySelect2.length; _i21++) {
                var frame = _document$querySelect2[_i21];
                if (frame && frame.contentWindow && frame.contentWindow === win) return frame;
            }
        }
        function closeWindow(win) {
            if (function(win) {
                void 0 === win && (win = window);
                return Boolean(utils_getParent(win));
            }(win)) {
                var frame = getFrameForWindow(win);
                if (frame && frame.parentElement) {
                    frame.parentElement.removeChild(frame);
                    return;
                }
            }
            try {
                win.close();
            } catch (err) {}
        }
        function util_safeIndexOf(collection, item) {
            for (var i = 0; i < collection.length; i++) try {
                if (collection[i] === item) return i;
            } catch (err) {}
            return -1;
        }
        var weakmap_CrossDomainSafeWeakMap = function() {
            function CrossDomainSafeWeakMap() {
                this.name = void 0;
                this.weakmap = void 0;
                this.keys = void 0;
                this.values = void 0;
                this.name = "__weakmap_" + (1e9 * Math.random() >>> 0) + "__";
                if (function() {
                    if ("undefined" == typeof WeakMap) return !1;
                    if (void 0 === Object.freeze) return !1;
                    try {
                        var testWeakMap = new WeakMap;
                        var testKey = {};
                        Object.freeze(testKey);
                        testWeakMap.set(testKey, "__testvalue__");
                        return "__testvalue__" === testWeakMap.get(testKey);
                    } catch (err) {
                        return !1;
                    }
                }()) try {
                    this.weakmap = new WeakMap;
                } catch (err) {}
                this.keys = [];
                this.values = [];
            }
            var _proto = CrossDomainSafeWeakMap.prototype;
            _proto._cleanupClosedWindows = function() {
                var weakmap = this.weakmap;
                var keys = this.keys;
                for (var i = 0; i < keys.length; i++) {
                    var value = keys[i];
                    if (isWindow(value) && isWindowClosed(value)) {
                        if (weakmap) try {
                            weakmap.delete(value);
                        } catch (err) {}
                        keys.splice(i, 1);
                        this.values.splice(i, 1);
                        i -= 1;
                    }
                }
            };
            _proto.isSafeToReadWrite = function(key) {
                return !isWindow(key);
            };
            _proto.set = function(key, value) {
                if (!key) throw new Error("WeakMap expected key");
                var weakmap = this.weakmap;
                if (weakmap) try {
                    weakmap.set(key, value);
                } catch (err) {
                    delete this.weakmap;
                }
                if (this.isSafeToReadWrite(key)) try {
                    var name = this.name;
                    var entry = key[name];
                    entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, {
                        value: [ key, value ],
                        writable: !0
                    });
                    return;
                } catch (err) {}
                this._cleanupClosedWindows();
                var keys = this.keys;
                var values = this.values;
                var index = util_safeIndexOf(keys, key);
                if (-1 === index) {
                    keys.push(key);
                    values.push(value);
                } else values[index] = value;
            };
            _proto.get = function(key) {
                if (!key) throw new Error("WeakMap expected key");
                var weakmap = this.weakmap;
                if (weakmap) try {
                    if (weakmap.has(key)) return weakmap.get(key);
                } catch (err) {
                    delete this.weakmap;
                }
                if (this.isSafeToReadWrite(key)) try {
                    var entry = key[this.name];
                    return entry && entry[0] === key ? entry[1] : void 0;
                } catch (err) {}
                this._cleanupClosedWindows();
                var index = util_safeIndexOf(this.keys, key);
                if (-1 !== index) return this.values[index];
            };
            _proto.delete = function(key) {
                if (!key) throw new Error("WeakMap expected key");
                var weakmap = this.weakmap;
                if (weakmap) try {
                    weakmap.delete(key);
                } catch (err) {
                    delete this.weakmap;
                }
                if (this.isSafeToReadWrite(key)) try {
                    var entry = key[this.name];
                    entry && entry[0] === key && (entry[0] = entry[1] = void 0);
                } catch (err) {}
                this._cleanupClosedWindows();
                var keys = this.keys;
                var index = util_safeIndexOf(keys, key);
                if (-1 !== index) {
                    keys.splice(index, 1);
                    this.values.splice(index, 1);
                }
            };
            _proto.has = function(key) {
                if (!key) throw new Error("WeakMap expected key");
                var weakmap = this.weakmap;
                if (weakmap) try {
                    if (weakmap.has(key)) return !0;
                } catch (err) {
                    delete this.weakmap;
                }
                if (this.isSafeToReadWrite(key)) try {
                    var entry = key[this.name];
                    return !(!entry || entry[0] !== key);
                } catch (err) {}
                this._cleanupClosedWindows();
                return -1 !== util_safeIndexOf(this.keys, key);
            };
            _proto.getOrSet = function(key, getter) {
                if (this.has(key)) return this.get(key);
                var value = getter();
                this.set(key, value);
                return value;
            };
            return CrossDomainSafeWeakMap;
        }();
        function _getPrototypeOf(o) {
            return (_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function(o) {
                return o.__proto__ || Object.getPrototypeOf(o);
            })(o);
        }
        function _isNativeReflectConstruct() {
            if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
            if (Reflect.construct.sham) return !1;
            if ("function" == typeof Proxy) return !0;
            try {
                Date.prototype.toString.call(Reflect.construct(Date, [], (function() {})));
                return !0;
            } catch (e) {
                return !1;
            }
        }
        function construct_construct(Parent, args, Class) {
            return (construct_construct = _isNativeReflectConstruct() ? Reflect.construct : function(Parent, args, Class) {
                var a = [ null ];
                a.push.apply(a, args);
                var instance = new (Function.bind.apply(Parent, a));
                Class && _setPrototypeOf(instance, Class.prototype);
                return instance;
            }).apply(null, arguments);
        }
        function wrapNativeSuper_wrapNativeSuper(Class) {
            var _cache = "function" == typeof Map ? new Map : void 0;
            return (wrapNativeSuper_wrapNativeSuper = function(Class) {
                if (null === Class || !(fn = Class, -1 !== Function.toString.call(fn).indexOf("[native code]"))) return Class;
                var fn;
                if ("function" != typeof Class) throw new TypeError("Super expression must either be null or a function");
                if (void 0 !== _cache) {
                    if (_cache.has(Class)) return _cache.get(Class);
                    _cache.set(Class, Wrapper);
                }
                function Wrapper() {
                    return construct_construct(Class, arguments, _getPrototypeOf(this).constructor);
                }
                Wrapper.prototype = Object.create(Class.prototype, {
                    constructor: {
                        value: Wrapper,
                        enumerable: !1,
                        writable: !0,
                        configurable: !0
                    }
                });
                return _setPrototypeOf(Wrapper, Class);
            })(Class);
        }
        function isElement(element) {
            var passed = !1;
            try {
                (element instanceof window.Element || null !== element && "object" == typeof element && 1 === element.nodeType && "object" == typeof element.style && "object" == typeof element.ownerDocument) && (passed = !0);
            } catch (_) {}
            return passed;
        }
        function getFunctionName(fn) {
            return fn.name || fn.__name__ || fn.displayName || "anonymous";
        }
        function setFunctionName(fn, name) {
            try {
                delete fn.name;
                fn.name = name;
            } catch (err) {}
            fn.__name__ = fn.displayName = name;
            return fn;
        }
        function base64encode(str) {
            if ("function" == typeof btoa) return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (function(m, p1) {
                return String.fromCharCode(parseInt(p1, 16));
            }))).replace(/[=]/g, "");
            if ("undefined" != typeof Buffer) return Buffer.from(str, "utf8").toString("base64").replace(/[=]/g, "");
            throw new Error("Can not find window.btoa or Buffer");
        }
        function uniqueID() {
            var chars = "0123456789abcdef";
            return "uid_" + "xxxxxxxxxx".replace(/./g, (function() {
                return chars.charAt(Math.floor(Math.random() * chars.length));
            })) + "_" + base64encode((new Date).toISOString().slice(11, 19).replace("T", ".")).replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
        }
        var objectIDs;
        function serializeArgs(args) {
            try {
                return JSON.stringify([].slice.call(args), (function(subkey, val) {
                    return "function" == typeof val ? "memoize[" + function(obj) {
                        objectIDs = objectIDs || new weakmap_CrossDomainSafeWeakMap;
                        if (null == obj || "object" != typeof obj && "function" != typeof obj) throw new Error("Invalid object");
                        var uid = objectIDs.get(obj);
                        if (!uid) {
                            uid = typeof obj + ":" + uniqueID();
                            objectIDs.set(obj, uid);
                        }
                        return uid;
                    }(val) + "]" : isElement(val) ? {} : val;
                }));
            } catch (err) {
                throw new Error("Arguments not serializable -- can not be used to memoize");
            }
        }
        function getEmptyObject() {
            return {};
        }
        var memoizeGlobalIndex = 0;
        var memoizeGlobalIndexValidFrom = 0;
        function memoize(method, options) {
            void 0 === options && (options = {});
            var _options$thisNamespac = options.thisNamespace, thisNamespace = void 0 !== _options$thisNamespac && _options$thisNamespac, cacheTime = options.time;
            var simpleCache;
            var thisCache;
            var memoizeIndex = memoizeGlobalIndex;
            memoizeGlobalIndex += 1;
            var memoizedFunction = function() {
                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];
                if (memoizeIndex < memoizeGlobalIndexValidFrom) {
                    simpleCache = null;
                    thisCache = null;
                    memoizeIndex = memoizeGlobalIndex;
                    memoizeGlobalIndex += 1;
                }
                var cache;
                cache = thisNamespace ? (thisCache = thisCache || new weakmap_CrossDomainSafeWeakMap).getOrSet(this, getEmptyObject) : simpleCache = simpleCache || {};
                var cacheKey;
                try {
                    cacheKey = serializeArgs(args);
                } catch (_unused) {
                    return method.apply(this, arguments);
                }
                var cacheResult = cache[cacheKey];
                if (cacheResult && cacheTime && Date.now() - cacheResult.time < cacheTime) {
                    delete cache[cacheKey];
                    cacheResult = null;
                }
                if (cacheResult) return cacheResult.value;
                var time = Date.now();
                var value = method.apply(this, arguments);
                cache[cacheKey] = {
                    time: time,
                    value: value
                };
                return value;
            };
            memoizedFunction.reset = function() {
                simpleCache = null;
                thisCache = null;
            };
            return setFunctionName(memoizedFunction, (options.name || getFunctionName(method)) + "::memoized");
        }
        memoize.clear = function() {
            memoizeGlobalIndexValidFrom = memoizeGlobalIndex;
        };
        function memoizePromise(method) {
            var cache = {};
            function memoizedPromiseFunction() {
                var _arguments = arguments, _this = this;
                for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) args[_key2] = arguments[_key2];
                var key = serializeArgs(args);
                if (cache.hasOwnProperty(key)) return cache[key];
                cache[key] = promise_ZalgoPromise.try((function() {
                    return method.apply(_this, _arguments);
                })).finally((function() {
                    delete cache[key];
                }));
                return cache[key];
            }
            memoizedPromiseFunction.reset = function() {
                cache = {};
            };
            return setFunctionName(memoizedPromiseFunction, getFunctionName(method) + "::promiseMemoized");
        }
        function src_util_noop() {}
        function once(method) {
            var called = !1;
            return setFunctionName((function() {
                if (!called) {
                    called = !0;
                    return method.apply(this, arguments);
                }
            }), getFunctionName(method) + "::once");
        }
        function stringifyError(err, level) {
            void 0 === level && (level = 1);
            if (level >= 3) return "stringifyError stack overflow";
            try {
                if (!err) return "<unknown error: " + {}.toString.call(err) + ">";
                if ("string" == typeof err) return err;
                if (err instanceof Error) {
                    var stack = err && err.stack;
                    var message = err && err.message;
                    if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + "\n" + stack;
                    if (stack) return stack;
                    if (message) return message;
                }
                return err && err.toString && "function" == typeof err.toString ? err.toString() : {}.toString.call(err);
            } catch (newErr) {
                return "Error while stringifying error: " + stringifyError(newErr, level + 1);
            }
        }
        function stringify(item) {
            return "string" == typeof item ? item : item && item.toString && "function" == typeof item.toString ? item.toString() : {}.toString.call(item);
        }
        function extend(obj, source) {
            if (!source) return obj;
            if (Object.assign) return Object.assign(obj, source);
            for (var key in source) source.hasOwnProperty(key) && (obj[key] = source[key]);
            return obj;
        }
        memoize((function(obj) {
            if (Object.values) return Object.values(obj);
            var result = [];
            for (var key in obj) obj.hasOwnProperty(key) && result.push(obj[key]);
            return result;
        }));
        function identity(item) {
            return item;
        }
        function safeInterval(method, time) {
            var timeout;
            !function loop() {
                timeout = setTimeout((function() {
                    method();
                    loop();
                }), time);
            }();
            return {
                cancel: function() {
                    clearTimeout(timeout);
                }
            };
        }
        function arrayFrom(item) {
            return [].slice.call(item);
        }
        function isDefined(value) {
            return null != value;
        }
        function util_isRegex(item) {
            return "[object RegExp]" === {}.toString.call(item);
        }
        function util_getOrSet(obj, key, getter) {
            if (obj.hasOwnProperty(key)) return obj[key];
            var val = getter();
            obj[key] = val;
            return val;
        }
        function cleanup(obj) {
            var tasks = [];
            var cleaned = !1;
            var cleanErr;
            var cleaner = {
                set: function(name, item) {
                    if (!cleaned) {
                        obj[name] = item;
                        cleaner.register((function() {
                            delete obj[name];
                        }));
                    }
                    return item;
                },
                register: function(method) {
                    var task = once((function() {
                        return method(cleanErr);
                    }));
                    cleaned ? method(cleanErr) : tasks.push(task);
                    return {
                        cancel: function() {
                            var index = tasks.indexOf(task);
                            -1 !== index && tasks.splice(index, 1);
                        }
                    };
                },
                all: function(err) {
                    cleanErr = err;
                    var results = [];
                    cleaned = !0;
                    for (;tasks.length; ) {
                        var task = tasks.shift();
                        results.push(task());
                    }
                    return promise_ZalgoPromise.all(results).then(src_util_noop);
                }
            };
            return cleaner;
        }
        function assertExists(name, thing) {
            if (null == thing) throw new Error("Expected " + name + " to be present");
            return thing;
        }
        var util_ExtendableError = function(_Error) {
            _inheritsLoose(ExtendableError, _Error);
            function ExtendableError(message) {
                var _this6;
                (_this6 = _Error.call(this, message) || this).name = _this6.constructor.name;
                "function" == typeof Error.captureStackTrace ? Error.captureStackTrace(function(self) {
                    if (void 0 === self) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
                    return self;
                }(_this6), _this6.constructor) : _this6.stack = new Error(message).stack;
                return _this6;
            }
            return ExtendableError;
        }(wrapNativeSuper_wrapNativeSuper(Error));
        function getBody() {
            var body = document.body;
            if (!body) throw new Error("Body element not found");
            return body;
        }
        function isDocumentReady() {
            return Boolean(document.body) && "complete" === document.readyState;
        }
        function isDocumentInteractive() {
            return Boolean(document.body) && "interactive" === document.readyState;
        }
        function urlEncode(str) {
            return encodeURIComponent(str);
        }
        memoize((function() {
            return new promise_ZalgoPromise((function(resolve) {
                if (isDocumentReady() || isDocumentInteractive()) return resolve();
                var interval = setInterval((function() {
                    if (isDocumentReady() || isDocumentInteractive()) {
                        clearInterval(interval);
                        return resolve();
                    }
                }), 10);
            }));
        }));
        function parseQuery(queryString) {
            return function(method, logic, args) {
                void 0 === args && (args = []);
                var cache = method.__inline_memoize_cache__ = method.__inline_memoize_cache__ || {};
                var key = serializeArgs(args);
                return cache.hasOwnProperty(key) ? cache[key] : cache[key] = function() {
                    var params = {};
                    if (!queryString) return params;
                    if (-1 === queryString.indexOf("=")) return params;
                    for (var _i2 = 0, _queryString$split2 = queryString.split("&"); _i2 < _queryString$split2.length; _i2++) {
                        var pair = _queryString$split2[_i2];
                        (pair = pair.split("="))[0] && pair[1] && (params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]));
                    }
                    return params;
                }.apply(void 0, args);
            }(parseQuery, 0, [ queryString ]);
        }
        function extendQuery(originalQuery, props) {
            void 0 === props && (props = {});
            return props && Object.keys(props).length ? function(obj) {
                void 0 === obj && (obj = {});
                return Object.keys(obj).filter((function(key) {
                    return "string" == typeof obj[key] || "boolean" == typeof obj[key];
                })).map((function(key) {
                    var val = obj[key];
                    if ("string" != typeof val && "boolean" != typeof val) throw new TypeError("Invalid type for query");
                    return urlEncode(key) + "=" + urlEncode(val.toString());
                })).join("&");
            }(_extends({}, parseQuery(originalQuery), props)) : originalQuery;
        }
        function appendChild(container, child) {
            container.appendChild(child);
        }
        function getElementSafe(id, doc) {
            void 0 === doc && (doc = document);
            return isElement(id) ? id : "string" == typeof id ? doc.querySelector(id) : void 0;
        }
        function elementReady(id) {
            return new promise_ZalgoPromise((function(resolve, reject) {
                var name = stringify(id);
                var el = getElementSafe(id);
                if (el) return resolve(el);
                if (isDocumentReady()) return reject(new Error("Document is ready and element " + name + " does not exist"));
                var interval = setInterval((function() {
                    if (el = getElementSafe(id)) {
                        resolve(el);
                        clearInterval(interval);
                    } else if (isDocumentReady()) {
                        clearInterval(interval);
                        return reject(new Error("Document is ready and element " + name + " does not exist"));
                    }
                }), 10);
            }));
        }
        var dom_PopupOpenError = function(_ExtendableError) {
            _inheritsLoose(PopupOpenError, _ExtendableError);
            function PopupOpenError() {
                return _ExtendableError.apply(this, arguments) || this;
            }
            return PopupOpenError;
        }(util_ExtendableError);
        var awaitFrameLoadPromises;
        function awaitFrameLoad(frame) {
            if ((awaitFrameLoadPromises = awaitFrameLoadPromises || new weakmap_CrossDomainSafeWeakMap).has(frame)) {
                var _promise = awaitFrameLoadPromises.get(frame);
                if (_promise) return _promise;
            }
            var promise = new promise_ZalgoPromise((function(resolve, reject) {
                frame.addEventListener("load", (function() {
                    !function(frame) {
                        !function() {
                            for (var i = 0; i < iframeWindows.length; i++) {
                                var closed = !1;
                                try {
                                    closed = iframeWindows[i].closed;
                                } catch (err) {}
                                if (closed) {
                                    iframeFrames.splice(i, 1);
                                    iframeWindows.splice(i, 1);
                                }
                            }
                        }();
                        if (frame && frame.contentWindow) try {
                            iframeWindows.push(frame.contentWindow);
                            iframeFrames.push(frame);
                        } catch (err) {}
                    }(frame);
                    resolve(frame);
                }));
                frame.addEventListener("error", (function(err) {
                    frame.contentWindow ? resolve(frame) : reject(err);
                }));
            }));
            awaitFrameLoadPromises.set(frame, promise);
            return promise;
        }
        function awaitFrameWindow(frame) {
            return awaitFrameLoad(frame).then((function(loadedFrame) {
                if (!loadedFrame.contentWindow) throw new Error("Could not find window in iframe");
                return loadedFrame.contentWindow;
            }));
        }
        function dom_iframe(options, container) {
            void 0 === options && (options = {});
            var style = options.style || {};
            var frame = function(tag, options, container) {
                void 0 === tag && (tag = "div");
                void 0 === options && (options = {});
                tag = tag.toLowerCase();
                var element = document.createElement(tag);
                options.style && extend(element.style, options.style);
                options.class && (element.className = options.class.join(" "));
                options.id && element.setAttribute("id", options.id);
                if (options.attributes) for (var _i10 = 0, _Object$keys2 = Object.keys(options.attributes); _i10 < _Object$keys2.length; _i10++) {
                    var key = _Object$keys2[_i10];
                    element.setAttribute(key, options.attributes[key]);
                }
                options.styleSheet && function(el, styleText, doc) {
                    void 0 === doc && (doc = window.document);
                    el.styleSheet ? el.styleSheet.cssText = styleText : el.appendChild(doc.createTextNode(styleText));
                }(element, options.styleSheet);
                if (options.html) {
                    if ("iframe" === tag) throw new Error("Iframe html can not be written unless container provided and iframe in DOM");
                    element.innerHTML = options.html;
                }
                return element;
            }("iframe", {
                attributes: _extends({
                    allowTransparency: "true"
                }, options.attributes || {}),
                style: _extends({
                    backgroundColor: "transparent",
                    border: "none"
                }, style),
                html: options.html,
                class: options.class
            });
            var isIE = window.navigator.userAgent.match(/MSIE|Edge/i);
            frame.hasAttribute("id") || frame.setAttribute("id", uniqueID());
            awaitFrameLoad(frame);
            container && function(id, doc) {
                void 0 === doc && (doc = document);
                var element = getElementSafe(id, doc);
                if (element) return element;
                throw new Error("Can not find element: " + stringify(id));
            }(container).appendChild(frame);
            (options.url || isIE) && frame.setAttribute("src", options.url || "about:blank");
            return frame;
        }
        function addEventListener(obj, event, handler) {
            obj.addEventListener(event, handler);
            return {
                cancel: function() {
                    obj.removeEventListener(event, handler);
                }
            };
        }
        function showElement(element) {
            element.style.setProperty("display", "");
        }
        function hideElement(element) {
            element.style.setProperty("display", "none", "important");
        }
        function destroyElement(element) {
            element && element.parentNode && element.parentNode.removeChild(element);
        }
        function isElementClosed(el) {
            return !(el && el.parentNode && el.ownerDocument && el.ownerDocument.documentElement && el.ownerDocument.documentElement.contains(el));
        }
        function onResize(el, handler, _temp) {
            var _ref2 = void 0 === _temp ? {} : _temp, _ref2$width = _ref2.width, width = void 0 === _ref2$width || _ref2$width, _ref2$height = _ref2.height, height = void 0 === _ref2$height || _ref2$height, _ref2$interval = _ref2.interval, interval = void 0 === _ref2$interval ? 100 : _ref2$interval, _ref2$win = _ref2.win, win = void 0 === _ref2$win ? window : _ref2$win;
            var currentWidth = el.offsetWidth;
            var currentHeight = el.offsetHeight;
            var canceled = !1;
            handler({
                width: currentWidth,
                height: currentHeight
            });
            var check = function() {
                if (!canceled && function(el) {
                    return Boolean(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
                }(el)) {
                    var newWidth = el.offsetWidth;
                    var newHeight = el.offsetHeight;
                    (width && newWidth !== currentWidth || height && newHeight !== currentHeight) && handler({
                        width: newWidth,
                        height: newHeight
                    });
                    currentWidth = newWidth;
                    currentHeight = newHeight;
                }
            };
            var observer;
            var timeout;
            win.addEventListener("resize", check);
            if (void 0 !== win.ResizeObserver) {
                (observer = new win.ResizeObserver(check)).observe(el);
                timeout = safeInterval(check, 10 * interval);
            } else if (void 0 !== win.MutationObserver) {
                (observer = new win.MutationObserver(check)).observe(el, {
                    attributes: !0,
                    childList: !0,
                    subtree: !0,
                    characterData: !1
                });
                timeout = safeInterval(check, 10 * interval);
            } else timeout = safeInterval(check, interval);
            return {
                cancel: function() {
                    canceled = !0;
                    observer.disconnect();
                    window.removeEventListener("resize", check);
                    timeout.cancel();
                }
            };
        }
        function isShadowElement(element) {
            for (;element.parentNode; ) element = element.parentNode;
            return "[object ShadowRoot]" === element.toString();
        }
        var currentScript = "undefined" != typeof document ? document.currentScript : null;
        var getCurrentScript = memoize((function() {
            if (currentScript) return currentScript;
            if (currentScript = function() {
                try {
                    var stack = function() {
                        try {
                            throw new Error("_");
                        } catch (err) {
                            return err.stack || "";
                        }
                    }();
                    var stackDetails = /.*at [^(]*\((.*):(.+):(.+)\)$/gi.exec(stack);
                    var scriptLocation = stackDetails && stackDetails[1];
                    if (!scriptLocation) return;
                    for (var _i22 = 0, _Array$prototype$slic2 = [].slice.call(document.getElementsByTagName("script")).reverse(); _i22 < _Array$prototype$slic2.length; _i22++) {
                        var script = _Array$prototype$slic2[_i22];
                        if (script.src && script.src === scriptLocation) return script;
                    }
                } catch (err) {}
            }()) return currentScript;
            throw new Error("Can not determine current script");
        }));
        var currentUID = uniqueID();
        memoize((function() {
            var script;
            try {
                script = getCurrentScript();
            } catch (err) {
                return currentUID;
            }
            var uid = script.getAttribute("data-uid");
            if (uid && "string" == typeof uid) return uid;
            if ((uid = script.getAttribute("data-uid-auto")) && "string" == typeof uid) return uid;
            if (script.src) {
                var hashedString = function(str) {
                    var hash = "";
                    for (var i = 0; i < str.length; i++) {
                        var total = str[i].charCodeAt(0) * i;
                        str[i + 1] && (total += str[i + 1].charCodeAt(0) * (i - 1));
                        hash += String.fromCharCode(97 + Math.abs(total) % 26);
                    }
                    return hash;
                }(JSON.stringify({
                    src: script.src,
                    dataset: script.dataset
                }));
                uid = "uid_" + hashedString.slice(hashedString.length - 30);
            } else uid = uniqueID();
            script.setAttribute("data-uid-auto", uid);
            return uid;
        }));
        function toPx(val) {
            return function(val) {
                if ("number" == typeof val) return val;
                var match = val.match(/^([0-9]+)(px|%)$/);
                if (!match) throw new Error("Could not match css value from " + val);
                return parseInt(match[1], 10);
            }(val) + "px";
        }
        function toCSS(val) {
            return "number" == typeof val ? toPx(val) : "string" == typeof (str = val) && /^[0-9]+%$/.test(str) ? val : toPx(val);
            var str;
        }
        function global_getGlobal(win) {
            void 0 === win && (win = window);
            var globalKey = "__post_robot_10_0_46__";
            return win !== window ? win[globalKey] : win[globalKey] = win[globalKey] || {};
        }
        var getObj = function() {
            return {};
        };
        function globalStore(key, defStore) {
            void 0 === key && (key = "store");
            void 0 === defStore && (defStore = getObj);
            return util_getOrSet(global_getGlobal(), key, (function() {
                var store = defStore();
                return {
                    has: function(storeKey) {
                        return store.hasOwnProperty(storeKey);
                    },
                    get: function(storeKey, defVal) {
                        return store.hasOwnProperty(storeKey) ? store[storeKey] : defVal;
                    },
                    set: function(storeKey, val) {
                        store[storeKey] = val;
                        return val;
                    },
                    del: function(storeKey) {
                        delete store[storeKey];
                    },
                    getOrSet: function(storeKey, getter) {
                        return util_getOrSet(store, storeKey, getter);
                    },
                    reset: function() {
                        store = defStore();
                    },
                    keys: function() {
                        return Object.keys(store);
                    }
                };
            }));
        }
        var WildCard = function() {};
        function getWildcard() {
            var global = global_getGlobal();
            global.WINDOW_WILDCARD = global.WINDOW_WILDCARD || new WildCard;
            return global.WINDOW_WILDCARD;
        }
        function windowStore(key, defStore) {
            void 0 === key && (key = "store");
            void 0 === defStore && (defStore = getObj);
            return globalStore("windowStore").getOrSet(key, (function() {
                var winStore = new weakmap_CrossDomainSafeWeakMap;
                var getStore = function(win) {
                    return winStore.getOrSet(win, defStore);
                };
                return {
                    has: function(win) {
                        return getStore(win).hasOwnProperty(key);
                    },
                    get: function(win, defVal) {
                        var store = getStore(win);
                        return store.hasOwnProperty(key) ? store[key] : defVal;
                    },
                    set: function(win, val) {
                        getStore(win)[key] = val;
                        return val;
                    },
                    del: function(win) {
                        delete getStore(win)[key];
                    },
                    getOrSet: function(win, getter) {
                        return util_getOrSet(getStore(win), key, getter);
                    }
                };
            }));
        }
        function getInstanceID() {
            return globalStore("instance").getOrSet("instanceID", uniqueID);
        }
        function resolveHelloPromise(win, _ref) {
            var domain = _ref.domain;
            var helloPromises = windowStore("helloPromises");
            var existingPromise = helloPromises.get(win);
            existingPromise && existingPromise.resolve({
                domain: domain
            });
            var newPromise = promise_ZalgoPromise.resolve({
                domain: domain
            });
            helloPromises.set(win, newPromise);
            return newPromise;
        }
        function sayHello(win, _ref4) {
            return (0, _ref4.send)(win, "postrobot_hello", {
                instanceID: getInstanceID()
            }, {
                domain: "*",
                timeout: -1
            }).then((function(_ref5) {
                var origin = _ref5.origin, instanceID = _ref5.data.instanceID;
                resolveHelloPromise(win, {
                    domain: origin
                });
                return {
                    win: win,
                    domain: origin,
                    instanceID: instanceID
                };
            }));
        }
        function getWindowInstanceID(win, _ref6) {
            var send = _ref6.send;
            return windowStore("windowInstanceIDPromises").getOrSet(win, (function() {
                return sayHello(win, {
                    send: send
                }).then((function(_ref7) {
                    return _ref7.instanceID;
                }));
            }));
        }
        function markWindowKnown(win) {
            windowStore("knownWindows").set(win, !0);
        }
        function isSerializedType(item) {
            return "object" == typeof item && null !== item && "string" == typeof item.__type__;
        }
        function determineType(val) {
            return void 0 === val ? "undefined" : null === val ? "null" : Array.isArray(val) ? "array" : "function" == typeof val ? "function" : "object" == typeof val ? val instanceof Error ? "error" : "function" == typeof val.then ? "promise" : "[object RegExp]" === {}.toString.call(val) ? "regex" : "[object Date]" === {}.toString.call(val) ? "date" : "object" : "string" == typeof val ? "string" : "number" == typeof val ? "number" : "boolean" == typeof val ? "boolean" : void 0;
        }
        function serializeType(type, val) {
            return {
                __type__: type,
                __val__: val
            };
        }
        var _SERIALIZER;
        var SERIALIZER = ((_SERIALIZER = {}).function = function() {}, _SERIALIZER.error = function(_ref) {
            return serializeType("error", {
                message: _ref.message,
                stack: _ref.stack,
                code: _ref.code,
                data: _ref.data
            });
        }, _SERIALIZER.promise = function() {}, _SERIALIZER.regex = function(val) {
            return serializeType("regex", val.source);
        }, _SERIALIZER.date = function(val) {
            return serializeType("date", val.toJSON());
        }, _SERIALIZER.array = function(val) {
            return val;
        }, _SERIALIZER.object = function(val) {
            return val;
        }, _SERIALIZER.string = function(val) {
            return val;
        }, _SERIALIZER.number = function(val) {
            return val;
        }, _SERIALIZER.boolean = function(val) {
            return val;
        }, _SERIALIZER.null = function(val) {
            return val;
        }, _SERIALIZER[void 0] = function(val) {
            return serializeType("undefined", val);
        }, _SERIALIZER);
        var defaultSerializers = {};
        var _DESERIALIZER;
        var DESERIALIZER = ((_DESERIALIZER = {}).function = function() {
            throw new Error("Function serialization is not implemented; nothing to deserialize");
        }, _DESERIALIZER.error = function(_ref2) {
            var stack = _ref2.stack, code = _ref2.code, data = _ref2.data;
            var error = new Error(_ref2.message);
            error.code = code;
            data && (error.data = data);
            error.stack = stack + "\n\n" + error.stack;
            return error;
        }, _DESERIALIZER.promise = function() {
            throw new Error("Promise serialization is not implemented; nothing to deserialize");
        }, _DESERIALIZER.regex = function(val) {
            return new RegExp(val);
        }, _DESERIALIZER.date = function(val) {
            return new Date(val);
        }, _DESERIALIZER.array = function(val) {
            return val;
        }, _DESERIALIZER.object = function(val) {
            return val;
        }, _DESERIALIZER.string = function(val) {
            return val;
        }, _DESERIALIZER.number = function(val) {
            return val;
        }, _DESERIALIZER.boolean = function(val) {
            return val;
        }, _DESERIALIZER.null = function(val) {
            return val;
        }, _DESERIALIZER[void 0] = function() {}, _DESERIALIZER);
        var defaultDeserializers = {};
        new promise_ZalgoPromise((function(resolve) {
            if (window.document && window.document.body) return resolve(window.document.body);
            var interval = setInterval((function() {
                if (window.document && window.document.body) {
                    clearInterval(interval);
                    return resolve(window.document.body);
                }
            }), 10);
        }));
        function cleanupProxyWindows() {
            var idToProxyWindow = globalStore("idToProxyWindow");
            for (var _i2 = 0, _idToProxyWindow$keys2 = idToProxyWindow.keys(); _i2 < _idToProxyWindow$keys2.length; _i2++) {
                var id = _idToProxyWindow$keys2[_i2];
                idToProxyWindow.get(id).shouldClean() && idToProxyWindow.del(id);
            }
        }
        function getSerializedWindow(winPromise, _ref) {
            var send = _ref.send, _ref$id = _ref.id, id = void 0 === _ref$id ? uniqueID() : _ref$id;
            var windowNamePromise = winPromise.then((function(win) {
                if (isSameDomain(win)) return assertSameDomain(win).name;
            }));
            var windowTypePromise = winPromise.then((function(window) {
                if (isWindowClosed(window)) throw new Error("Window is closed, can not determine type");
                return getOpener(window) ? "popup" : "iframe";
            }));
            windowNamePromise.catch(src_util_noop);
            windowTypePromise.catch(src_util_noop);
            var getName = function() {
                return winPromise.then((function(win) {
                    if (!isWindowClosed(win)) return isSameDomain(win) ? assertSameDomain(win).name : windowNamePromise;
                }));
            };
            return {
                id: id,
                getType: function() {
                    return windowTypePromise;
                },
                getInstanceID: memoizePromise((function() {
                    return winPromise.then((function(win) {
                        return getWindowInstanceID(win, {
                            send: send
                        });
                    }));
                })),
                close: function() {
                    return winPromise.then(closeWindow);
                },
                getName: getName,
                focus: function() {
                    return winPromise.then((function(win) {
                        win.focus();
                    }));
                },
                isClosed: function() {
                    return winPromise.then((function(win) {
                        return isWindowClosed(win);
                    }));
                },
                setLocation: function(href, opts) {
                    void 0 === opts && (opts = {});
                    return winPromise.then((function(win) {
                        var domain = window.location.protocol + "//" + window.location.host;
                        var _opts$method = opts.method, method = void 0 === _opts$method ? "get" : _opts$method, body = opts.body;
                        if (0 === href.indexOf("/")) href = "" + domain + href; else if (!href.match(/^https?:\/\//) && 0 !== href.indexOf(domain)) throw new Error("Expected url to be http or https url, or absolute path, got " + JSON.stringify(href));
                        if ("post" === method) return getName().then((function(name) {
                            if (!name) throw new Error("Can not post to window without target name");
                            !function(_ref3) {
                                var url = _ref3.url, target = _ref3.target, body = _ref3.body, _ref3$method = _ref3.method, method = void 0 === _ref3$method ? "post" : _ref3$method;
                                var form = document.createElement("form");
                                form.setAttribute("target", target);
                                form.setAttribute("method", method);
                                form.setAttribute("action", url);
                                form.style.display = "none";
                                if (body) for (var _i24 = 0, _Object$keys4 = Object.keys(body); _i24 < _Object$keys4.length; _i24++) {
                                    var _body$key;
                                    var key = _Object$keys4[_i24];
                                    var input = document.createElement("input");
                                    input.setAttribute("name", key);
                                    input.setAttribute("value", null == (_body$key = body[key]) ? void 0 : _body$key.toString());
                                    form.appendChild(input);
                                }
                                getBody().appendChild(form);
                                form.submit();
                                getBody().removeChild(form);
                            }({
                                url: href,
                                target: name,
                                method: method,
                                body: body
                            });
                        }));
                        if ("get" !== method) throw new Error("Unsupported method: " + method);
                        if (isSameDomain(win)) try {
                            if (win.location && "function" == typeof win.location.replace) {
                                win.location.replace(href);
                                return;
                            }
                        } catch (err) {}
                        win.location = href;
                    }));
                },
                setName: function(name) {
                    return winPromise.then((function(win) {
                        var sameDomain = isSameDomain(win);
                        var frame = getFrameForWindow(win);
                        if (!sameDomain) throw new Error("Can not set name for cross-domain window: " + name);
                        assertSameDomain(win).name = name;
                        frame && frame.setAttribute("name", name);
                        windowNamePromise = promise_ZalgoPromise.resolve(name);
                    }));
                }
            };
        }
        var window_ProxyWindow = function() {
            function ProxyWindow(_ref2) {
                var send = _ref2.send, win = _ref2.win, serializedWindow = _ref2.serializedWindow;
                this.id = void 0;
                this.isProxyWindow = !0;
                this.serializedWindow = void 0;
                this.actualWindow = void 0;
                this.actualWindowPromise = void 0;
                this.send = void 0;
                this.name = void 0;
                this.actualWindowPromise = new promise_ZalgoPromise;
                this.serializedWindow = serializedWindow || getSerializedWindow(this.actualWindowPromise, {
                    send: send
                });
                globalStore("idToProxyWindow").set(this.getID(), this);
                win && this.setWindow(win, {
                    send: send
                });
            }
            var _proto = ProxyWindow.prototype;
            _proto.getID = function() {
                return this.serializedWindow.id;
            };
            _proto.getType = function() {
                return this.serializedWindow.getType();
            };
            _proto.isPopup = function() {
                return this.getType().then((function(type) {
                    return "popup" === type;
                }));
            };
            _proto.setLocation = function(href, opts) {
                var _this = this;
                return this.serializedWindow.setLocation(href, opts).then((function() {
                    return _this;
                }));
            };
            _proto.getName = function() {
                return this.serializedWindow.getName();
            };
            _proto.setName = function(name) {
                var _this2 = this;
                return this.serializedWindow.setName(name).then((function() {
                    return _this2;
                }));
            };
            _proto.close = function() {
                var _this3 = this;
                return this.serializedWindow.close().then((function() {
                    return _this3;
                }));
            };
            _proto.focus = function() {
                var _this4 = this;
                var isPopupPromise = this.isPopup();
                var getNamePromise = this.getName();
                var reopenPromise = promise_ZalgoPromise.hash({
                    isPopup: isPopupPromise,
                    name: getNamePromise
                }).then((function(_ref3) {
                    var name = _ref3.name;
                    _ref3.isPopup && name && window.open("", name, "noopener");
                }));
                var focusPromise = this.serializedWindow.focus();
                return promise_ZalgoPromise.all([ reopenPromise, focusPromise ]).then((function() {
                    return _this4;
                }));
            };
            _proto.isClosed = function() {
                return this.serializedWindow.isClosed();
            };
            _proto.getWindow = function() {
                return this.actualWindow;
            };
            _proto.setWindow = function(win, _ref4) {
                var send = _ref4.send;
                this.actualWindow = win;
                this.actualWindowPromise.resolve(this.actualWindow);
                this.serializedWindow = getSerializedWindow(this.actualWindowPromise, {
                    send: send,
                    id: this.getID()
                });
                windowStore("winToProxyWindow").set(win, this);
            };
            _proto.awaitWindow = function() {
                return this.actualWindowPromise;
            };
            _proto.matchWindow = function(win, _ref5) {
                var _this5 = this;
                var send = _ref5.send;
                return promise_ZalgoPromise.try((function() {
                    return _this5.actualWindow ? win === _this5.actualWindow : promise_ZalgoPromise.hash({
                        proxyInstanceID: _this5.getInstanceID(),
                        knownWindowInstanceID: getWindowInstanceID(win, {
                            send: send
                        })
                    }).then((function(_ref6) {
                        var match = _ref6.proxyInstanceID === _ref6.knownWindowInstanceID;
                        match && _this5.setWindow(win, {
                            send: send
                        });
                        return match;
                    }));
                }));
            };
            _proto.unwrap = function() {
                return this.actualWindow || this;
            };
            _proto.getInstanceID = function() {
                return this.serializedWindow.getInstanceID();
            };
            _proto.shouldClean = function() {
                return Boolean(this.actualWindow && isWindowClosed(this.actualWindow));
            };
            _proto.serialize = function() {
                return this.serializedWindow;
            };
            ProxyWindow.unwrap = function(win) {
                return ProxyWindow.isProxyWindow(win) ? win.unwrap() : win;
            };
            ProxyWindow.serialize = function(win, _ref7) {
                var send = _ref7.send;
                cleanupProxyWindows();
                return ProxyWindow.toProxyWindow(win, {
                    send: send
                }).serialize();
            };
            ProxyWindow.deserialize = function(serializedWindow, _ref8) {
                var send = _ref8.send;
                cleanupProxyWindows();
                return globalStore("idToProxyWindow").get(serializedWindow.id) || new ProxyWindow({
                    serializedWindow: serializedWindow,
                    send: send
                });
            };
            ProxyWindow.isProxyWindow = function(obj) {
                return Boolean(obj && !isWindow(obj) && obj.isProxyWindow);
            };
            ProxyWindow.toProxyWindow = function(win, _ref9) {
                var send = _ref9.send;
                cleanupProxyWindows();
                if (ProxyWindow.isProxyWindow(win)) return win;
                var actualWindow = win;
                return windowStore("winToProxyWindow").get(actualWindow) || new ProxyWindow({
                    win: actualWindow,
                    send: send
                });
            };
            return ProxyWindow;
        }();
        function addMethod(id, val, name, source, domain) {
            var methodStore = windowStore("methodStore");
            var proxyWindowMethods = globalStore("proxyWindowMethods");
            if (window_ProxyWindow.isProxyWindow(source)) proxyWindowMethods.set(id, {
                val: val,
                name: name,
                domain: domain,
                source: source
            }); else {
                proxyWindowMethods.del(id);
                methodStore.getOrSet(source, (function() {
                    return {};
                }))[id] = {
                    domain: domain,
                    name: name,
                    val: val,
                    source: source
                };
            }
        }
        function lookupMethod(source, id) {
            var methodStore = windowStore("methodStore");
            var proxyWindowMethods = globalStore("proxyWindowMethods");
            return methodStore.getOrSet(source, (function() {
                return {};
            }))[id] || proxyWindowMethods.get(id);
        }
        function function_serializeFunction(destination, domain, val, key, _ref3) {
            on = (_ref = {
                on: _ref3.on,
                send: _ref3.send
            }).on, send = _ref.send, globalStore("builtinListeners").getOrSet("functionCalls", (function() {
                return on("postrobot_method", {
                    domain: "*"
                }, (function(_ref2) {
                    var source = _ref2.source, origin = _ref2.origin, data = _ref2.data;
                    var id = data.id, name = data.name;
                    var meth = lookupMethod(source, id);
                    if (!meth) throw new Error("Could not find method '" + name + "' with id: " + data.id + " in " + getDomain(window));
                    var methodSource = meth.source, domain = meth.domain, val = meth.val;
                    return promise_ZalgoPromise.try((function() {
                        if (!matchDomain(domain, origin)) throw new Error("Method '" + data.name + "' domain " + JSON.stringify(util_isRegex(meth.domain) ? meth.domain.source : meth.domain) + " does not match origin " + origin + " in " + getDomain(window));
                        if (window_ProxyWindow.isProxyWindow(methodSource)) return methodSource.matchWindow(source, {
                            send: send
                        }).then((function(match) {
                            if (!match) throw new Error("Method call '" + data.name + "' failed - proxy window does not match source in " + getDomain(window));
                        }));
                    })).then((function() {
                        return val.apply({
                            source: source,
                            origin: origin
                        }, data.args);
                    }), (function(err) {
                        return promise_ZalgoPromise.try((function() {
                            if (val.onError) return val.onError(err);
                        })).then((function() {
                            err.stack && (err.stack = "Remote call to " + name + "(" + function(args) {
                                void 0 === args && (args = []);
                                return arrayFrom(args).map((function(arg) {
                                    return "string" == typeof arg ? "'" + arg + "'" : void 0 === arg ? "undefined" : null === arg ? "null" : "boolean" == typeof arg ? arg.toString() : Array.isArray(arg) ? "[ ... ]" : "object" == typeof arg ? "{ ... }" : "function" == typeof arg ? "() => { ... }" : "<" + typeof arg + ">";
                                })).join(", ");
                            }(data.args) + ") failed\n\n" + err.stack);
                            throw err;
                        }));
                    })).then((function(result) {
                        return {
                            result: result,
                            id: id,
                            name: name
                        };
                    }));
                }));
            }));
            var _ref, on, send;
            var id = val.__id__ || uniqueID();
            destination = window_ProxyWindow.unwrap(destination);
            var name = val.__name__ || val.name || key;
            "string" == typeof name && "function" == typeof name.indexOf && 0 === name.indexOf("anonymous::") && (name = name.replace("anonymous::", key + "::"));
            if (window_ProxyWindow.isProxyWindow(destination)) {
                addMethod(id, val, name, destination, domain);
                destination.awaitWindow().then((function(win) {
                    addMethod(id, val, name, win, domain);
                }));
            } else addMethod(id, val, name, destination, domain);
            return serializeType("cross_domain_function", {
                id: id,
                name: name
            });
        }
        function serializeMessage(destination, domain, obj, _ref) {
            var _serialize;
            var on = _ref.on, send = _ref.send;
            return function(obj, serializers) {
                void 0 === serializers && (serializers = defaultSerializers);
                var result = JSON.stringify(obj, (function(key) {
                    var val = this[key];
                    if (isSerializedType(this)) return val;
                    var type = determineType(val);
                    if (!type) return val;
                    var serializer = serializers[type] || SERIALIZER[type];
                    return serializer ? serializer(val, key) : val;
                }));
                return void 0 === result ? "undefined" : result;
            }(obj, ((_serialize = {}).promise = function(val, key) {
                return function(destination, domain, val, key, _ref) {
                    return serializeType("cross_domain_zalgo_promise", {
                        then: function_serializeFunction(destination, domain, (function(resolve, reject) {
                            return val.then(resolve, reject);
                        }), key, {
                            on: _ref.on,
                            send: _ref.send
                        })
                    });
                }(destination, domain, val, key, {
                    on: on,
                    send: send
                });
            }, _serialize.function = function(val, key) {
                return function_serializeFunction(destination, domain, val, key, {
                    on: on,
                    send: send
                });
            }, _serialize.object = function(val) {
                return isWindow(val) || window_ProxyWindow.isProxyWindow(val) ? serializeType("cross_domain_window", window_ProxyWindow.serialize(val, {
                    send: send
                })) : val;
            }, _serialize));
        }
        function deserializeMessage(source, origin, message, _ref2) {
            var _deserialize;
            var send = _ref2.send;
            return function(str, deserializers) {
                void 0 === deserializers && (deserializers = defaultDeserializers);
                if ("undefined" !
Download .txt
gitextract_3tngctqw/

├── .eslintignore
├── .eslintrc.js
├── .flowconfig
├── .github/
│   ├── CODEOWNERS
│   └── workflows/
│       ├── main.yml
│       └── publish.yml
├── .gitignore
├── .husky/
│   ├── .gitignore
│   ├── commit-msg
│   └── pre-commit
├── .npmrc
├── .prettierignore
├── .prettierrc.json
├── AUTHORS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── babel.config.js
├── commitlint.config.js
├── demo/
│   ├── advanced/
│   │   ├── props/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── react-end-to-end/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── redirect-different-domain/
│   │   │   ├── index.htm
│   │   │   ├── login-button.htm
│   │   │   ├── login-button.js
│   │   │   ├── login.htm
│   │   │   ├── login.js
│   │   │   └── redirect.htm
│   │   ├── remote/
│   │   │   ├── index.htm
│   │   │   ├── login-button.htm
│   │   │   ├── login-button.js
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── remote-popup/
│   │       ├── index.htm
│   │       ├── login-button.htm
│   │       ├── login-button.js
│   │       ├── login.htm
│   │       └── login.js
│   ├── basic/
│   │   ├── iframe/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── popup/
│   │       ├── index.htm
│   │       ├── login.htm
│   │       └── login.js
│   ├── common/
│   │   ├── common.js
│   │   ├── index.css
│   │   └── login.css
│   ├── frameworks/
│   │   ├── angular/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── angular2/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── angular2_TypeScript/
│   │   │   ├── app-component.html
│   │   │   ├── app-component.ts
│   │   │   ├── app-module.ts
│   │   │   ├── config.js
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   ├── login.js
│   │   │   ├── main.ts
│   │   │   ├── start.cmd
│   │   │   └── start.sh
│   │   ├── react/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   ├── vue/
│   │   │   ├── index.htm
│   │   │   ├── login.htm
│   │   │   └── login.js
│   │   └── vue3/
│   │       ├── index.htm
│   │       ├── login.htm
│   │       └── login.js
│   └── index.htm
├── dist/
│   ├── zoid.frame.js
│   ├── zoid.frameworks.frame.js
│   ├── zoid.frameworks.js
│   └── zoid.js
├── docs/
│   ├── api/
│   │   ├── component.md
│   │   ├── create.md
│   │   ├── index.md
│   │   ├── instance.md
│   │   ├── parent-props.md
│   │   ├── prop-definitions.md
│   │   ├── render.md
│   │   └── xprops.md
│   └── example.md
├── flow-typed/
│   └── npm/
│       ├── @commitlint/
│       │   ├── cli_vx.x.x.js
│       │   └── config-conventional_vx.x.x.js
│       ├── @krakenjs/
│       │   ├── belter_vx.x.x.js
│       │   ├── cross-domain-utils_vx.x.x.js
│       │   ├── grumbler-scripts_vx.x.x.js
│       │   ├── jsx-pragmatic_vx.x.x.js
│       │   ├── post-robot_vx.x.x.js
│       │   └── zalgo-promise_vx.x.x.js
│       ├── @octokit/
│       │   └── rest_v18.x.x.js
│       ├── colors_v1.x.x.js
│       ├── cross-env_vx.x.x.js
│       ├── flow-bin_v0.x.x.js
│       ├── fs-extra_v8.x.x.js
│       ├── glob_v7.x.x.js
│       ├── husky_vx.x.x.js
│       ├── jest_v29.x.x.js
│       ├── lint-staged_vx.x.x.js
│       ├── md5_v2.x.x.js
│       ├── mkdirp_v1.x.x.js
│       ├── mocha_v4.x.x.js
│       ├── node-stream-zip_v1.x.x.js
│       ├── prettier_v1.x.x.js
│       ├── prettier_vx.x.x.js
│       ├── rimraf_v3.x.x.js
│       ├── semver_v7.x.x.js
│       ├── serve_vx.x.x.js
│       ├── standard-version_vx.x.x.js
│       └── yargs_v15.x.x.js
├── globals.js
├── index.js
├── karma.conf.js
├── package.json
├── src/
│   ├── babel.config.js
│   ├── child/
│   │   ├── child.js
│   │   ├── index.js
│   │   └── props.js
│   ├── component/
│   │   ├── component.js
│   │   ├── index.js
│   │   ├── props.js
│   │   ├── templates/
│   │   │   ├── component.js
│   │   │   ├── container.js
│   │   │   └── index.js
│   │   └── validate.js
│   ├── constants.js
│   ├── declarations.js
│   ├── drivers/
│   │   ├── angular.js
│   │   ├── angular2.js
│   │   ├── index.js
│   │   ├── react.js
│   │   ├── vue.js
│   │   └── vue3.js
│   ├── index.js
│   ├── lib/
│   │   ├── global.js
│   │   ├── index.js
│   │   ├── serialize.js
│   │   └── window.js
│   ├── parent/
│   │   ├── index.js
│   │   ├── parent.js
│   │   └── props.js
│   └── types.js
├── test/
│   ├── babel.config.js
│   ├── common.js
│   ├── index.js
│   ├── lib/
│   │   ├── angular-12/
│   │   │   ├── angular-12-common.js
│   │   │   ├── angular-12-compiler.js
│   │   │   ├── angular-12-core.js
│   │   │   ├── angular-12-platform-browser-dynamic.js
│   │   │   ├── angular-12-platform-browser.js
│   │   │   ├── rxjs_v6.2.0.js
│   │   │   └── zone_v0.8.12.js
│   │   ├── angular-4.js
│   │   ├── react-dom_v15.1.0.js
│   │   ├── react-dom_v16.0.0.js
│   │   ├── react_v15.1.0.js
│   │   ├── react_v16.0.0.js
│   │   └── vue_v3.2.1.js
│   ├── test.js
│   ├── tests/
│   │   ├── actions.jsx
│   │   ├── attributes.js
│   │   ├── bridge.js
│   │   ├── child.js
│   │   ├── children.jsx
│   │   ├── clone.jsx
│   │   ├── dimensions.jsx
│   │   ├── domain.js
│   │   ├── drivers.js
│   │   ├── eligible.jsx
│   │   ├── error.js
│   │   ├── exports.js
│   │   ├── extensions.jsx
│   │   ├── happy.jsx
│   │   ├── index.js
│   │   ├── method.jsx
│   │   ├── props.js
│   │   ├── remove.jsx
│   │   ├── renderto.jsx
│   │   ├── rerender.js
│   │   ├── validation.js
│   │   └── window.js
│   ├── windows/
│   │   ├── basicchild/
│   │   │   ├── index.htm
│   │   │   └── index.js
│   │   ├── bridge/
│   │   │   ├── index.htm
│   │   │   └── index.js
│   │   └── child/
│   │       ├── index.htm
│   │       └── index.js
│   ├── zoid.global.js
│   └── zoid.js
└── webpack.config.js
Download .txt
Showing preview only (514K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5924 symbols across 40 files)

FILE: demo/basic/popup/login.js
  function closeComponent (line 18) | function closeComponent(event) {
  function focusComponent (line 24) | function focusComponent(event) {

FILE: demo/frameworks/angular2_TypeScript/app-component.ts
  class AppComponent (line 7) | class AppComponent {
    method constructor (line 12) | constructor() {
    method onLogin (line 17) | public onLogin(email) {

FILE: demo/frameworks/angular2_TypeScript/app-module.ts
  class AppModule (line 18) | class AppModule {
    method constructor (line 19) | constructor() {}

FILE: dist/zoid.frame.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function _setPrototypeOf (line 92) | function _setPrototypeOf(o, p) {
  function _inheritsLoose (line 98) | function _inheritsLoose(subClass, superClass) {
  function _extends (line 103) | function _extends() {
  function utils_isPromise (line 112) | function utils_isPromise(item) {
  function flushActive (line 133) | function flushActive() {
  function startActive (line 140) | function startActive() {
  function endActive (line 143) | function endActive() {
  function ZalgoPromise (line 148) | function ZalgoPromise(handler) {
  function isRegex (line 423) | function isRegex(item) {
  function getActualProtocol (line 427) | function getActualProtocol(win) {
  function getProtocol (line 431) | function getProtocol(win) {
  function isAboutProtocol (line 439) | function isAboutProtocol(win) {
  function utils_getParent (line 443) | function utils_getParent(win) {
  function getOpener (line 449) | function getOpener(win) {
  function canReadFromWindow (line 455) | function canReadFromWindow(win) {
  function getActualDomain (line 461) | function getActualDomain(win) {
  function getDomain (line 476) | function getDomain(win) {
  function isSameDomain (line 481) | function isSameDomain(win) {
  function assertSameDomain (line 511) | function assertSameDomain(win) {
  function isAncestorParent (line 515) | function isAncestorParent(parent, child) {
  function getFrames (line 529) | function getFrames(win) {
  function getAllChildFrames (line 566) | function getAllChildFrames(win) {
  function getTop (line 575) | function getTop(win) {
  function getAllFramesInWindow (line 595) | function getAllFramesInWindow(win) {
  function isWindowClosed (line 604) | function isWindowClosed(win, allowMock) {
  function getAncestor (line 649) | function getAncestor(win) {
  function anyMatch (line 653) | function anyMatch(collection1, collection2) {
  function matchDomain (line 660) | function matchDomain(pattern, origin) {
  function isWindow (line 670) | function isWindow(obj) {
  function getFrameForWindow (line 711) | function getFrameForWindow(win) {
  function closeWindow (line 718) | function closeWindow(win) {
  function util_safeIndexOf (line 733) | function util_safeIndexOf(collection, item) {
  function CrossDomainSafeWeakMap (line 740) | function CrossDomainSafeWeakMap() {
  function _getPrototypeOf (line 868) | function _getPrototypeOf(o) {
  function _isNativeReflectConstruct (line 873) | function _isNativeReflectConstruct() {
  function construct_construct (line 884) | function construct_construct(Parent, args, Class) {
  function wrapNativeSuper_wrapNativeSuper (line 893) | function wrapNativeSuper_wrapNativeSuper(Class) {
  function isElement (line 917) | function isElement(element) {
  function getFunctionName (line 924) | function getFunctionName(fn) {
  function setFunctionName (line 927) | function setFunctionName(fn, name) {
  function base64encode (line 935) | function base64encode(str) {
  function uniqueID (line 942) | function uniqueID() {
  function serializeArgs (line 949) | function serializeArgs(args) {
  function getEmptyObject (line 967) | function getEmptyObject() {
  function memoize (line 972) | function memoize(method, options) {
  function memoizePromise (line 1018) | function memoizePromise(method) {
  function src_util_noop (line 1037) | function src_util_noop() {}
  function once (line 1038) | function once(method) {
  function stringifyError (line 1047) | function stringifyError(err, level) {
  function stringify (line 1065) | function stringify(item) {
  function extend (line 1068) | function extend(obj, source) {
  function identity (line 1080) | function identity(item) {
  function safeInterval (line 1083) | function safeInterval(method, time) {
  function arrayFrom (line 1097) | function arrayFrom(item) {
  function isDefined (line 1100) | function isDefined(value) {
  function util_isRegex (line 1103) | function util_isRegex(item) {
  function util_getOrSet (line 1106) | function util_getOrSet(obj, key, getter) {
  function cleanup (line 1112) | function cleanup(obj) {
  function assertExists (line 1151) | function assertExists(name, thing) {
  function ExtendableError (line 1157) | function ExtendableError(message) {
  function getBody (line 1168) | function getBody() {
  function isDocumentReady (line 1173) | function isDocumentReady() {
  function isDocumentInteractive (line 1176) | function isDocumentInteractive() {
  function urlEncode (line 1179) | function urlEncode(str) {
  function parseQuery (line 1193) | function parseQuery(queryString) {
  function extendQuery (line 1210) | function extendQuery(originalQuery, props) {
  function appendChild (line 1223) | function appendChild(container, child) {
  function getElementSafe (line 1226) | function getElementSafe(id, doc) {
  function elementReady (line 1230) | function elementReady(id) {
  function PopupOpenError (line 1249) | function PopupOpenError() {
  function awaitFrameLoad (line 1255) | function awaitFrameLoad(frame) {
  function awaitFrameWindow (line 1289) | function awaitFrameWindow(frame) {
  function dom_iframe (line 1295) | function dom_iframe(options, container) {
  function addEventListener (line 1342) | function addEventListener(obj, event, handler) {
  function showElement (line 1350) | function showElement(element) {
  function hideElement (line 1353) | function hideElement(element) {
  function destroyElement (line 1356) | function destroyElement(element) {
  function isElementClosed (line 1359) | function isElementClosed(el) {
  function onResize (line 1362) | function onResize(el, handler, _temp) {
  function isShadowElement (line 1409) | function isShadowElement(element) {
  function toPx (line 1465) | function toPx(val) {
  function toCSS (line 1473) | function toCSS(val) {
  function global_getGlobal (line 1477) | function global_getGlobal(win) {
  function globalStore (line 1485) | function globalStore(key, defStore) {
  function getWildcard (line 1517) | function getWildcard() {
  function windowStore (line 1522) | function windowStore(key, defStore) {
  function getInstanceID (line 1551) | function getInstanceID() {
  function resolveHelloPromise (line 1554) | function resolveHelloPromise(win, _ref) {
  function sayHello (line 1567) | function sayHello(win, _ref4) {
  function getWindowInstanceID (line 1585) | function getWindowInstanceID(win, _ref6) {
  function markWindowKnown (line 1595) | function markWindowKnown(win) {
  function isSerializedType (line 1598) | function isSerializedType(item) {
  function determineType (line 1601) | function determineType(val) {
  function serializeType (line 1604) | function serializeType(type, val) {
  function cleanupProxyWindows (line 1677) | function cleanupProxyWindows() {
  function getSerializedWindow (line 1684) | function getSerializedWindow(winPromise, _ref) {
  function ProxyWindow (line 1782) | function ProxyWindow(_ref2) {
  function addMethod (line 1931) | function addMethod(id, val, name, source, domain) {
  function lookupMethod (line 1951) | function lookupMethod(source, id) {
  function function_serializeFunction (line 1958) | function function_serializeFunction(destination, domain, val, key, _ref3) {
  function serializeMessage (line 2020) | function serializeMessage(destination, domain, obj, _ref) {
  function deserializeMessage (line 2059) | function deserializeMessage(source, origin, message, _ref2) {
  function send_sendMessage (line 2174) | function send_sendMessage(win, domain, message, _ref2) {
  function getResponseListener (line 2210) | function getResponseListener(hash) {
  function deleteResponseListener (line 2213) | function deleteResponseListener(hash) {
  function isResponseListenerErrored (line 2216) | function isResponseListenerErrored(hash) {
  function getRequestListener (line 2219) | function getRequestListener(_ref) {
  function handleRequest (line 2245) | function handleRequest(source, origin, message, _ref) {
  function handleAck (line 2305) | function handleAck(source, origin, message) {
  function handleResponse (line 2318) | function handleResponse(source, origin, message) {
  function receive_receiveMessage (line 2334) | function receive_receiveMessage(event, _ref2) {
  function on_on (line 2383) | function on_on(name, options, handler) {
  function setup_toProxyWindow (line 2598) | function setup_toProxyWindow(win) {
  function src_util_isRegex (line 2603) | function src_util_isRegex(item) {
  function utils_getActualProtocol (line 2606) | function utils_getActualProtocol(win) {
  function utils_getProtocol (line 2610) | function utils_getProtocol(win) {
  function utils_isAboutProtocol (line 2618) | function utils_isAboutProtocol(win) {
  function src_utils_getParent (line 2622) | function src_utils_getParent(win) {
  function utils_getOpener (line 2628) | function utils_getOpener(win) {
  function utils_canReadFromWindow (line 2634) | function utils_canReadFromWindow(win) {
  function utils_getActualDomain (line 2640) | function utils_getActualDomain(win) {
  function utils_getDomain (line 2655) | function utils_getDomain(win) {
  function utils_isSameDomain (line 2660) | function utils_isSameDomain(win) {
  function utils_assertSameDomain (line 2690) | function utils_assertSameDomain(win) {
  function utils_isAncestorParent (line 2694) | function utils_isAncestorParent(parent, child) {
  function utils_getFrames (line 2708) | function utils_getFrames(win) {
  function utils_getAllChildFrames (line 2745) | function utils_getAllChildFrames(win) {
  function utils_getTop (line 2754) | function utils_getTop(win) {
  function utils_getAllFramesInWindow (line 2774) | function utils_getAllFramesInWindow(win) {
  function utils_isWindowClosed (line 2783) | function utils_isWindowClosed(win, allowMock) {
  function utils_getFrameByName (line 2828) | function utils_getFrameByName(win, name) {
  function utils_getAncestor (line 2843) | function utils_getAncestor(win) {
  function utils_anyMatch (line 2847) | function utils_anyMatch(collection1, collection2) {
  function utils_getDistanceFromTop (line 2854) | function utils_getDistanceFromTop(win) {
  function utils_matchDomain (line 2861) | function utils_matchDomain(pattern, origin) {
  function utils_getDomainFromUrl (line 2871) | function utils_getDomainFromUrl(url) {
  function utils_onCloseWindow (line 2874) | function utils_onCloseWindow(win, callback, delay, maxtime) {
  function utils_isWindow (line 2894) | function utils_isWindow(obj) {
  function lib_global_getGlobal (line 2935) | function lib_global_getGlobal(win) {
  function tryGlobal (line 2940) | function tryGlobal(win, handler) {
  function getProxyObject (line 2945) | function getProxyObject(obj) {
  function basicSerialize (line 2956) | function basicSerialize(data) {
  function getUIDRefStore (line 2959) | function getUIDRefStore(win) {
  function crossDomainSerialize (line 2964) | function crossDomainSerialize(_ref) {
  function crossDomainDeserialize (line 2996) | function crossDomainDeserialize(_ref2) {
  function buildChildWindowName (line 3064) | function buildChildWindowName(_ref) {
  function parseWindowName (line 3067) | function parseWindowName(windowName) {
  function getInitialParentPayload (line 3139) | function getInitialParentPayload() {
  function window_getWindowRef (line 3142) | function window_getWindowRef(targetWindow, currentWindow) {
  function normalizeChildProp (line 3160) | function normalizeChildProp(propsDef, props, key, value, helpers) {
  function child_focus (line 3180) | function child_focus() {
  function child_destroy (line 3185) | function child_destroy() {
  function eachProp (line 3196) | function eachProp(props, propsDef, handler) {
  function serializeProps (line 3202) | function serializeProps(propsDef, props, method) {
  function parentComponent (line 3259) | function parentComponent(_ref) {
  function defaultContainerTemplate (line 4325) | function defaultContainerTemplate(_ref) {
  function component (line 4358) | function component(opts) {
  function destroyComponents (line 5048) | function destroyComponents(err) {
  function component_destroy (line 5054) | function component_destroy(err) {

FILE: dist/zoid.frameworks.frame.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function _setPrototypeOf (line 92) | function _setPrototypeOf(o, p) {
  function _inheritsLoose (line 98) | function _inheritsLoose(subClass, superClass) {
  function _extends (line 103) | function _extends() {
  function utils_isPromise (line 112) | function utils_isPromise(item) {
  function flushActive (line 133) | function flushActive() {
  function startActive (line 140) | function startActive() {
  function endActive (line 143) | function endActive() {
  function ZalgoPromise (line 148) | function ZalgoPromise(handler) {
  function isRegex (line 423) | function isRegex(item) {
  function getActualProtocol (line 427) | function getActualProtocol(win) {
  function getProtocol (line 431) | function getProtocol(win) {
  function isAboutProtocol (line 439) | function isAboutProtocol(win) {
  function utils_getParent (line 443) | function utils_getParent(win) {
  function getOpener (line 449) | function getOpener(win) {
  function canReadFromWindow (line 455) | function canReadFromWindow(win) {
  function getActualDomain (line 461) | function getActualDomain(win) {
  function getDomain (line 476) | function getDomain(win) {
  function isSameDomain (line 481) | function isSameDomain(win) {
  function assertSameDomain (line 511) | function assertSameDomain(win) {
  function isAncestorParent (line 515) | function isAncestorParent(parent, child) {
  function getFrames (line 529) | function getFrames(win) {
  function getAllChildFrames (line 566) | function getAllChildFrames(win) {
  function getTop (line 575) | function getTop(win) {
  function getAllFramesInWindow (line 595) | function getAllFramesInWindow(win) {
  function isWindowClosed (line 604) | function isWindowClosed(win, allowMock) {
  function getAncestor (line 649) | function getAncestor(win) {
  function anyMatch (line 653) | function anyMatch(collection1, collection2) {
  function matchDomain (line 660) | function matchDomain(pattern, origin) {
  function isWindow (line 670) | function isWindow(obj) {
  function getFrameForWindow (line 711) | function getFrameForWindow(win) {
  function closeWindow (line 718) | function closeWindow(win) {
  function util_safeIndexOf (line 733) | function util_safeIndexOf(collection, item) {
  function CrossDomainSafeWeakMap (line 740) | function CrossDomainSafeWeakMap() {
  function _getPrototypeOf (line 868) | function _getPrototypeOf(o) {
  function _isNativeReflectConstruct (line 873) | function _isNativeReflectConstruct() {
  function construct_construct (line 884) | function construct_construct(Parent, args, Class) {
  function wrapNativeSuper_wrapNativeSuper (line 893) | function wrapNativeSuper_wrapNativeSuper(Class) {
  function isElement (line 917) | function isElement(element) {
  function getFunctionName (line 924) | function getFunctionName(fn) {
  function setFunctionName (line 927) | function setFunctionName(fn, name) {
  function base64encode (line 935) | function base64encode(str) {
  function uniqueID (line 942) | function uniqueID() {
  function serializeArgs (line 949) | function serializeArgs(args) {
  function getEmptyObject (line 967) | function getEmptyObject() {
  function memoize (line 972) | function memoize(method, options) {
  function memoizePromise (line 1018) | function memoizePromise(method) {
  function src_util_noop (line 1037) | function src_util_noop() {}
  function once (line 1038) | function once(method) {
  function stringifyError (line 1047) | function stringifyError(err, level) {
  function stringify (line 1065) | function stringify(item) {
  function extend (line 1068) | function extend(obj, source) {
  function identity (line 1080) | function identity(item) {
  function safeInterval (line 1083) | function safeInterval(method, time) {
  function dasherizeToCamel (line 1097) | function dasherizeToCamel(string) {
  function defineLazyProp (line 1102) | function defineLazyProp(obj, key, getter) {
  function arrayFrom (line 1121) | function arrayFrom(item) {
  function isObjectObject (line 1124) | function isObjectObject(obj) {
  function isPlainObject (line 1128) | function isPlainObject(obj) {
  function replaceObject (line 1135) | function replaceObject(item, replacer, fullKey) {
  function isDefined (line 1167) | function isDefined(value) {
  function util_isRegex (line 1170) | function util_isRegex(item) {
  function util_getOrSet (line 1173) | function util_getOrSet(obj, key, getter) {
  function cleanup (line 1179) | function cleanup(obj) {
  function assertExists (line 1218) | function assertExists(name, thing) {
  function ExtendableError (line 1224) | function ExtendableError(message) {
  function getBody (line 1235) | function getBody() {
  function isDocumentReady (line 1240) | function isDocumentReady() {
  function isDocumentInteractive (line 1243) | function isDocumentInteractive() {
  function urlEncode (line 1246) | function urlEncode(str) {
  function parseQuery (line 1260) | function parseQuery(queryString) {
  function extendQuery (line 1277) | function extendQuery(originalQuery, props) {
  function appendChild (line 1290) | function appendChild(container, child) {
  function getElementSafe (line 1293) | function getElementSafe(id, doc) {
  function elementReady (line 1297) | function elementReady(id) {
  function PopupOpenError (line 1316) | function PopupOpenError() {
  function awaitFrameLoad (line 1322) | function awaitFrameLoad(frame) {
  function awaitFrameWindow (line 1356) | function awaitFrameWindow(frame) {
  function dom_iframe (line 1362) | function dom_iframe(options, container) {
  function addEventListener (line 1409) | function addEventListener(obj, event, handler) {
  function showElement (line 1417) | function showElement(element) {
  function hideElement (line 1420) | function hideElement(element) {
  function destroyElement (line 1423) | function destroyElement(element) {
  function isElementClosed (line 1426) | function isElementClosed(el) {
  function onResize (line 1429) | function onResize(el, handler, _temp) {
  function isShadowElement (line 1476) | function isShadowElement(element) {
  function toPx (line 1532) | function toPx(val) {
  function toCSS (line 1540) | function toCSS(val) {
  function global_getGlobal (line 1544) | function global_getGlobal(win) {
  function globalStore (line 1552) | function globalStore(key, defStore) {
  function getWildcard (line 1584) | function getWildcard() {
  function windowStore (line 1589) | function windowStore(key, defStore) {
  function getInstanceID (line 1618) | function getInstanceID() {
  function resolveHelloPromise (line 1621) | function resolveHelloPromise(win, _ref) {
  function sayHello (line 1634) | function sayHello(win, _ref4) {
  function getWindowInstanceID (line 1652) | function getWindowInstanceID(win, _ref6) {
  function markWindowKnown (line 1662) | function markWindowKnown(win) {
  function isSerializedType (line 1665) | function isSerializedType(item) {
  function determineType (line 1668) | function determineType(val) {
  function serializeType (line 1671) | function serializeType(type, val) {
  function cleanupProxyWindows (line 1744) | function cleanupProxyWindows() {
  function getSerializedWindow (line 1751) | function getSerializedWindow(winPromise, _ref) {
  function ProxyWindow (line 1849) | function ProxyWindow(_ref2) {
  function addMethod (line 1998) | function addMethod(id, val, name, source, domain) {
  function lookupMethod (line 2018) | function lookupMethod(source, id) {
  function function_serializeFunction (line 2025) | function function_serializeFunction(destination, domain, val, key, _ref3) {
  function serializeMessage (line 2087) | function serializeMessage(destination, domain, obj, _ref) {
  function deserializeMessage (line 2126) | function deserializeMessage(source, origin, message, _ref2) {
  function send_sendMessage (line 2241) | function send_sendMessage(win, domain, message, _ref2) {
  function getResponseListener (line 2277) | function getResponseListener(hash) {
  function deleteResponseListener (line 2280) | function deleteResponseListener(hash) {
  function isResponseListenerErrored (line 2283) | function isResponseListenerErrored(hash) {
  function getRequestListener (line 2286) | function getRequestListener(_ref) {
  function handleRequest (line 2312) | function handleRequest(source, origin, message, _ref) {
  function handleAck (line 2372) | function handleAck(source, origin, message) {
  function handleResponse (line 2385) | function handleResponse(source, origin, message) {
  function receive_receiveMessage (line 2401) | function receive_receiveMessage(event, _ref2) {
  function on_on (line 2450) | function on_on(name, options, handler) {
  function setup_toProxyWindow (line 2665) | function setup_toProxyWindow(win) {
  function src_util_isRegex (line 2670) | function src_util_isRegex(item) {
  function utils_getActualProtocol (line 2673) | function utils_getActualProtocol(win) {
  function utils_getProtocol (line 2677) | function utils_getProtocol(win) {
  function utils_isAboutProtocol (line 2685) | function utils_isAboutProtocol(win) {
  function src_utils_getParent (line 2689) | function src_utils_getParent(win) {
  function utils_getOpener (line 2695) | function utils_getOpener(win) {
  function utils_canReadFromWindow (line 2701) | function utils_canReadFromWindow(win) {
  function utils_getActualDomain (line 2707) | function utils_getActualDomain(win) {
  function utils_getDomain (line 2722) | function utils_getDomain(win) {
  function utils_isSameDomain (line 2727) | function utils_isSameDomain(win) {
  function utils_assertSameDomain (line 2757) | function utils_assertSameDomain(win) {
  function utils_isAncestorParent (line 2761) | function utils_isAncestorParent(parent, child) {
  function utils_getFrames (line 2775) | function utils_getFrames(win) {
  function utils_getAllChildFrames (line 2812) | function utils_getAllChildFrames(win) {
  function utils_getTop (line 2821) | function utils_getTop(win) {
  function utils_getAllFramesInWindow (line 2841) | function utils_getAllFramesInWindow(win) {
  function utils_isWindowClosed (line 2850) | function utils_isWindowClosed(win, allowMock) {
  function utils_getFrameByName (line 2895) | function utils_getFrameByName(win, name) {
  function utils_getAncestor (line 2910) | function utils_getAncestor(win) {
  function utils_anyMatch (line 2914) | function utils_anyMatch(collection1, collection2) {
  function utils_getDistanceFromTop (line 2921) | function utils_getDistanceFromTop(win) {
  function utils_matchDomain (line 2928) | function utils_matchDomain(pattern, origin) {
  function utils_getDomainFromUrl (line 2938) | function utils_getDomainFromUrl(url) {
  function utils_onCloseWindow (line 2941) | function utils_onCloseWindow(win, callback, delay, maxtime) {
  function utils_isWindow (line 2961) | function utils_isWindow(obj) {
  function lib_global_getGlobal (line 3002) | function lib_global_getGlobal(win) {
  function tryGlobal (line 3007) | function tryGlobal(win, handler) {
  function getProxyObject (line 3012) | function getProxyObject(obj) {
  function basicSerialize (line 3023) | function basicSerialize(data) {
  function getUIDRefStore (line 3026) | function getUIDRefStore(win) {
  function crossDomainSerialize (line 3031) | function crossDomainSerialize(_ref) {
  function crossDomainDeserialize (line 3063) | function crossDomainDeserialize(_ref2) {
  function buildChildWindowName (line 3131) | function buildChildWindowName(_ref) {
  function parseWindowName (line 3134) | function parseWindowName(windowName) {
  function getInitialParentPayload (line 3206) | function getInitialParentPayload() {
  function window_getWindowRef (line 3209) | function window_getWindowRef(targetWindow, currentWindow) {
  function normalizeChildProp (line 3227) | function normalizeChildProp(propsDef, props, key, value, helpers) {
  function child_focus (line 3247) | function child_focus() {
  function child_destroy (line 3252) | function child_destroy() {
  function eachProp (line 3263) | function eachProp(props, propsDef, handler) {
  function serializeProps (line 3269) | function serializeProps(propsDef, props, method) {
  function parentComponent (line 3326) | function parentComponent(_ref) {
  function _class (line 4397) | function _class() {
  function safeApply (line 4489) | function safeApply() {
  function ComponentInstance (line 4517) | function ComponentInstance(elementRef, zone) {
  function defaultContainerTemplate (line 4582) | function defaultContainerTemplate(_ref) {
  function defaultPrerenderTemplate (line 4613) | function defaultPrerenderTemplate(_ref) {
  function component (line 4629) | function component(opts) {
  function destroyComponents (line 5330) | function destroyComponents(err) {
  function component_destroy (line 5336) | function component_destroy(err) {

FILE: dist/zoid.frameworks.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function _setPrototypeOf (line 92) | function _setPrototypeOf(o, p) {
  function _inheritsLoose (line 98) | function _inheritsLoose(subClass, superClass) {
  function _extends (line 103) | function _extends() {
  function utils_isPromise (line 112) | function utils_isPromise(item) {
  function flushActive (line 133) | function flushActive() {
  function startActive (line 140) | function startActive() {
  function endActive (line 143) | function endActive() {
  function ZalgoPromise (line 148) | function ZalgoPromise(handler) {
  function isRegex (line 423) | function isRegex(item) {
  function getActualProtocol (line 427) | function getActualProtocol(win) {
  function getProtocol (line 431) | function getProtocol(win) {
  function isAboutProtocol (line 439) | function isAboutProtocol(win) {
  function utils_getParent (line 443) | function utils_getParent(win) {
  function getOpener (line 449) | function getOpener(win) {
  function canReadFromWindow (line 455) | function canReadFromWindow(win) {
  function getActualDomain (line 461) | function getActualDomain(win) {
  function getDomain (line 476) | function getDomain(win) {
  function isSameDomain (line 481) | function isSameDomain(win) {
  function assertSameDomain (line 511) | function assertSameDomain(win) {
  function isAncestorParent (line 515) | function isAncestorParent(parent, child) {
  function getFrames (line 529) | function getFrames(win) {
  function getAllChildFrames (line 566) | function getAllChildFrames(win) {
  function getTop (line 575) | function getTop(win) {
  function getAllFramesInWindow (line 595) | function getAllFramesInWindow(win) {
  function isWindowClosed (line 604) | function isWindowClosed(win, allowMock) {
  function utils_getUserAgent (line 649) | function utils_getUserAgent(win) {
  function getFrameByName (line 652) | function getFrameByName(win, name) {
  function isOpener (line 667) | function isOpener(parent, child) {
  function getAncestor (line 670) | function getAncestor(win) {
  function anyMatch (line 674) | function anyMatch(collection1, collection2) {
  function isSameTopWindow (line 681) | function isSameTopWindow(win1, win2) {
  function matchDomain (line 695) | function matchDomain(pattern, origin) {
  function getDomainFromUrl (line 705) | function getDomainFromUrl(url) {
  function isWindow (line 708) | function isWindow(obj) {
  function getFrameForWindow (line 749) | function getFrameForWindow(win) {
  function closeWindow (line 756) | function closeWindow(win) {
  function util_safeIndexOf (line 771) | function util_safeIndexOf(collection, item) {
  function CrossDomainSafeWeakMap (line 778) | function CrossDomainSafeWeakMap() {
  function _getPrototypeOf (line 906) | function _getPrototypeOf(o) {
  function _isNativeReflectConstruct (line 911) | function _isNativeReflectConstruct() {
  function construct_construct (line 922) | function construct_construct(Parent, args, Class) {
  function wrapNativeSuper_wrapNativeSuper (line 931) | function wrapNativeSuper_wrapNativeSuper(Class) {
  function isElement (line 955) | function isElement(element) {
  function getFunctionName (line 962) | function getFunctionName(fn) {
  function setFunctionName (line 965) | function setFunctionName(fn, name) {
  function base64encode (line 973) | function base64encode(str) {
  function uniqueID (line 980) | function uniqueID() {
  function serializeArgs (line 987) | function serializeArgs(args) {
  function getEmptyObject (line 1005) | function getEmptyObject() {
  function memoize (line 1010) | function memoize(method, options) {
  function memoizePromise (line 1056) | function memoizePromise(method) {
  function src_util_noop (line 1075) | function src_util_noop() {}
  function once (line 1076) | function once(method) {
  function stringifyError (line 1085) | function stringifyError(err, level) {
  function stringify (line 1103) | function stringify(item) {
  function extend (line 1106) | function extend(obj, source) {
  function identity (line 1118) | function identity(item) {
  function safeInterval (line 1121) | function safeInterval(method, time) {
  function dasherizeToCamel (line 1135) | function dasherizeToCamel(string) {
  function defineLazyProp (line 1140) | function defineLazyProp(obj, key, getter) {
  function arrayFrom (line 1159) | function arrayFrom(item) {
  function isObjectObject (line 1162) | function isObjectObject(obj) {
  function isPlainObject (line 1166) | function isPlainObject(obj) {
  function replaceObject (line 1173) | function replaceObject(item, replacer, fullKey) {
  function isDefined (line 1205) | function isDefined(value) {
  function util_isRegex (line 1208) | function util_isRegex(item) {
  function util_getOrSet (line 1211) | function util_getOrSet(obj, key, getter) {
  function cleanup (line 1217) | function cleanup(obj) {
  function assertExists (line 1256) | function assertExists(name, thing) {
  function ExtendableError (line 1262) | function ExtendableError(message) {
  function getBody (line 1273) | function getBody() {
  function isDocumentReady (line 1278) | function isDocumentReady() {
  function isDocumentInteractive (line 1281) | function isDocumentInteractive() {
  function urlEncode (line 1284) | function urlEncode(str) {
  function parseQuery (line 1298) | function parseQuery(queryString) {
  function extendQuery (line 1315) | function extendQuery(originalQuery, props) {
  function appendChild (line 1328) | function appendChild(container, child) {
  function getElementSafe (line 1331) | function getElementSafe(id, doc) {
  function elementReady (line 1335) | function elementReady(id) {
  function PopupOpenError (line 1354) | function PopupOpenError() {
  function awaitFrameLoad (line 1360) | function awaitFrameLoad(frame) {
  function awaitFrameWindow (line 1394) | function awaitFrameWindow(frame) {
  function dom_iframe (line 1400) | function dom_iframe(options, container) {
  function addEventListener (line 1447) | function addEventListener(obj, event, handler) {
  function showElement (line 1455) | function showElement(element) {
  function hideElement (line 1458) | function hideElement(element) {
  function destroyElement (line 1461) | function destroyElement(element) {
  function isElementClosed (line 1464) | function isElementClosed(el) {
  function onResize (line 1467) | function onResize(el, handler, _temp) {
  function isShadowElement (line 1514) | function isShadowElement(element) {
  function isPerc (line 1570) | function isPerc(str) {
  function toNum (line 1573) | function toNum(val) {
  function toPx (line 1579) | function toPx(val) {
  function toCSS (line 1582) | function toCSS(val) {
  function normalizeDimension (line 1585) | function normalizeDimension(dim, max) {
  function global_getGlobal (line 1592) | function global_getGlobal(win) {
  function globalStore (line 1600) | function globalStore(key, defStore) {
  function getWildcard (line 1632) | function getWildcard() {
  function windowStore (line 1637) | function windowStore(key, defStore) {
  function getInstanceID (line 1666) | function getInstanceID() {
  function resolveHelloPromise (line 1669) | function resolveHelloPromise(win, _ref) {
  function sayHello (line 1682) | function sayHello(win, _ref4) {
  function getWindowInstanceID (line 1700) | function getWindowInstanceID(win, _ref6) {
  function awaitWindowHello (line 1710) | function awaitWindowHello(win, timeout, name) {
  function markWindowKnown (line 1721) | function markWindowKnown(win) {
  function isSerializedType (line 1724) | function isSerializedType(item) {
  function determineType (line 1727) | function determineType(val) {
  function serializeType (line 1730) | function serializeType(type, val) {
  function needsBridgeForBrowser (line 1794) | function needsBridgeForBrowser() {
  function needsBridgeForWin (line 1797) | function needsBridgeForWin(win) {
  function needsBridgeForDomain (line 1800) | function needsBridgeForDomain(domain, win) {
  function needsBridge (line 1806) | function needsBridge(_ref) {
  function getBridgeName (line 1810) | function getBridgeName(domain) {
  function isBridge (line 1813) | function isBridge() {
  function registerRemoteWindow (line 1825) | function registerRemoteWindow(win) {
  function findRemoteWindow (line 1830) | function findRemoteWindow(win) {
  function registerRemoteSendMessage (line 1835) | function registerRemoteSendMessage(win, domain, sendMessage) {
  function rejectRemoteSendMessage (line 1842) | function rejectRemoteSendMessage(win, err) {
  function linkWindow (line 1845) | function linkWindow(_ref3) {
  function setupBridge (line 1881) | function setupBridge(_ref) {
  function cleanupProxyWindows (line 2061) | function cleanupProxyWindows() {
  function getSerializedWindow (line 2068) | function getSerializedWindow(winPromise, _ref) {
  function ProxyWindow (line 2170) | function ProxyWindow(_ref2) {
  function addMethod (line 2319) | function addMethod(id, val, name, source, domain) {
  function lookupMethod (line 2339) | function lookupMethod(source, id) {
  function function_serializeFunction (line 2346) | function function_serializeFunction(destination, domain, val, key, _ref3) {
  function serializeMessage (line 2408) | function serializeMessage(destination, domain, obj, _ref) {
  function deserializeMessage (line 2447) | function deserializeMessage(source, origin, message, _ref2) {
  function send_sendMessage (line 2560) | function send_sendMessage(win, domain, message, _ref2) {
  function getResponseListener (line 2596) | function getResponseListener(hash) {
  function deleteResponseListener (line 2599) | function deleteResponseListener(hash) {
  function isResponseListenerErrored (line 2602) | function isResponseListenerErrored(hash) {
  function getRequestListener (line 2605) | function getRequestListener(_ref) {
  function handleRequest (line 2631) | function handleRequest(source, origin, message, _ref) {
  function handleAck (line 2691) | function handleAck(source, origin, message) {
  function handleResponse (line 2704) | function handleResponse(source, origin, message) {
  function receive_receiveMessage (line 2720) | function receive_receiveMessage(event, _ref2) {
  function on_on (line 2769) | function on_on(name, options, handler) {
  function setup_toProxyWindow (line 2974) | function setup_toProxyWindow(win) {
  function cleanUpWindow (line 2979) | function cleanUpWindow(win) {
  function src_util_isRegex (line 3052) | function src_util_isRegex(item) {
  function utils_getActualProtocol (line 3055) | function utils_getActualProtocol(win) {
  function utils_getProtocol (line 3059) | function utils_getProtocol(win) {
  function utils_isAboutProtocol (line 3067) | function utils_isAboutProtocol(win) {
  function src_utils_getParent (line 3071) | function src_utils_getParent(win) {
  function utils_getOpener (line 3077) | function utils_getOpener(win) {
  function utils_canReadFromWindow (line 3083) | function utils_canReadFromWindow(win) {
  function utils_getActualDomain (line 3089) | function utils_getActualDomain(win) {
  function utils_getDomain (line 3104) | function utils_getDomain(win) {
  function utils_isSameDomain (line 3109) | function utils_isSameDomain(win) {
  function utils_assertSameDomain (line 3139) | function utils_assertSameDomain(win) {
  function utils_isAncestorParent (line 3143) | function utils_isAncestorParent(parent, child) {
  function utils_getFrames (line 3157) | function utils_getFrames(win) {
  function utils_getAllChildFrames (line 3194) | function utils_getAllChildFrames(win) {
  function utils_getTop (line 3203) | function utils_getTop(win) {
  function utils_getAllFramesInWindow (line 3223) | function utils_getAllFramesInWindow(win) {
  function utils_isWindowClosed (line 3232) | function utils_isWindowClosed(win, allowMock) {
  function utils_getFrameByName (line 3277) | function utils_getFrameByName(win, name) {
  function utils_getAncestor (line 3292) | function utils_getAncestor(win) {
  function utils_anyMatch (line 3296) | function utils_anyMatch(collection1, collection2) {
  function utils_getDistanceFromTop (line 3303) | function utils_getDistanceFromTop(win) {
  function utils_matchDomain (line 3310) | function utils_matchDomain(pattern, origin) {
  function utils_getDomainFromUrl (line 3320) | function utils_getDomainFromUrl(url) {
  function utils_onCloseWindow (line 3323) | function utils_onCloseWindow(win, callback, delay, maxtime) {
  function utils_isWindow (line 3343) | function utils_isWindow(obj) {
  function utils_normalizeMockUrl (line 3384) | function utils_normalizeMockUrl(url) {
  function lib_global_getGlobal (line 3389) | function lib_global_getGlobal(win) {
  function tryGlobal (line 3394) | function tryGlobal(win, handler) {
  function getProxyObject (line 3399) | function getProxyObject(obj) {
  function basicSerialize (line 3410) | function basicSerialize(data) {
  function getUIDRefStore (line 3413) | function getUIDRefStore(win) {
  function crossDomainSerialize (line 3418) | function crossDomainSerialize(_ref) {
  function crossDomainDeserialize (line 3450) | function crossDomainDeserialize(_ref2) {
  function buildChildWindowName (line 3518) | function buildChildWindowName(_ref) {
  function parseWindowName (line 3521) | function parseWindowName(windowName) {
  function getInitialParentPayload (line 3593) | function getInitialParentPayload() {
  function window_getWindowRef (line 3596) | function window_getWindowRef(targetWindow, currentWindow) {
  function normalizeChildProp (line 3614) | function normalizeChildProp(propsDef, props, key, value, helpers) {
  function child_focus (line 3634) | function child_focus() {
  function child_destroy (line 3639) | function child_destroy() {
  function eachProp (line 3650) | function eachProp(props, propsDef, handler) {
  function serializeProps (line 3656) | function serializeProps(propsDef, props, method) {
  function parentComponent (line 3713) | function parentComponent(_ref) {
  function _class (line 4879) | function _class() {
  function safeApply (line 4971) | function safeApply() {
  function ComponentInstance (line 4999) | function ComponentInstance(elementRef, zone) {
  function defaultContainerTemplate (line 5064) | function defaultContainerTemplate(_ref) {
  function defaultPrerenderTemplate (line 5095) | function defaultPrerenderTemplate(_ref) {
  function component (line 5111) | function component(opts) {
  function destroyComponents (line 5817) | function destroyComponents(err) {
  function component_destroy (line 5824) | function component_destroy(err) {

FILE: dist/zoid.js
  function __webpack_require__ (line 6) | function __webpack_require__(moduleId) {
  function _setPrototypeOf (line 92) | function _setPrototypeOf(o, p) {
  function _inheritsLoose (line 98) | function _inheritsLoose(subClass, superClass) {
  function _extends (line 103) | function _extends() {
  function utils_isPromise (line 112) | function utils_isPromise(item) {
  function flushActive (line 133) | function flushActive() {
  function startActive (line 140) | function startActive() {
  function endActive (line 143) | function endActive() {
  function ZalgoPromise (line 148) | function ZalgoPromise(handler) {
  function isRegex (line 423) | function isRegex(item) {
  function getActualProtocol (line 427) | function getActualProtocol(win) {
  function getProtocol (line 431) | function getProtocol(win) {
  function isAboutProtocol (line 439) | function isAboutProtocol(win) {
  function utils_getParent (line 443) | function utils_getParent(win) {
  function getOpener (line 449) | function getOpener(win) {
  function canReadFromWindow (line 455) | function canReadFromWindow(win) {
  function getActualDomain (line 461) | function getActualDomain(win) {
  function getDomain (line 476) | function getDomain(win) {
  function isSameDomain (line 481) | function isSameDomain(win) {
  function assertSameDomain (line 511) | function assertSameDomain(win) {
  function isAncestorParent (line 515) | function isAncestorParent(parent, child) {
  function getFrames (line 529) | function getFrames(win) {
  function getAllChildFrames (line 566) | function getAllChildFrames(win) {
  function getTop (line 575) | function getTop(win) {
  function getAllFramesInWindow (line 595) | function getAllFramesInWindow(win) {
  function isWindowClosed (line 604) | function isWindowClosed(win, allowMock) {
  function utils_getUserAgent (line 649) | function utils_getUserAgent(win) {
  function getFrameByName (line 652) | function getFrameByName(win, name) {
  function isOpener (line 667) | function isOpener(parent, child) {
  function getAncestor (line 670) | function getAncestor(win) {
  function anyMatch (line 674) | function anyMatch(collection1, collection2) {
  function isSameTopWindow (line 681) | function isSameTopWindow(win1, win2) {
  function matchDomain (line 695) | function matchDomain(pattern, origin) {
  function getDomainFromUrl (line 705) | function getDomainFromUrl(url) {
  function isWindow (line 708) | function isWindow(obj) {
  function getFrameForWindow (line 749) | function getFrameForWindow(win) {
  function closeWindow (line 756) | function closeWindow(win) {
  function util_safeIndexOf (line 771) | function util_safeIndexOf(collection, item) {
  function CrossDomainSafeWeakMap (line 778) | function CrossDomainSafeWeakMap() {
  function _getPrototypeOf (line 906) | function _getPrototypeOf(o) {
  function _isNativeReflectConstruct (line 911) | function _isNativeReflectConstruct() {
  function construct_construct (line 922) | function construct_construct(Parent, args, Class) {
  function wrapNativeSuper_wrapNativeSuper (line 931) | function wrapNativeSuper_wrapNativeSuper(Class) {
  function isElement (line 955) | function isElement(element) {
  function getFunctionName (line 962) | function getFunctionName(fn) {
  function setFunctionName (line 965) | function setFunctionName(fn, name) {
  function base64encode (line 973) | function base64encode(str) {
  function uniqueID (line 980) | function uniqueID() {
  function serializeArgs (line 987) | function serializeArgs(args) {
  function getEmptyObject (line 1005) | function getEmptyObject() {
  function memoize (line 1010) | function memoize(method, options) {
  function memoizePromise (line 1056) | function memoizePromise(method) {
  function src_util_noop (line 1075) | function src_util_noop() {}
  function once (line 1076) | function once(method) {
  function stringifyError (line 1085) | function stringifyError(err, level) {
  function stringify (line 1103) | function stringify(item) {
  function extend (line 1106) | function extend(obj, source) {
  function identity (line 1118) | function identity(item) {
  function safeInterval (line 1121) | function safeInterval(method, time) {
  function arrayFrom (line 1135) | function arrayFrom(item) {
  function isDefined (line 1138) | function isDefined(value) {
  function util_isRegex (line 1141) | function util_isRegex(item) {
  function util_getOrSet (line 1144) | function util_getOrSet(obj, key, getter) {
  function cleanup (line 1150) | function cleanup(obj) {
  function assertExists (line 1189) | function assertExists(name, thing) {
  function ExtendableError (line 1195) | function ExtendableError(message) {
  function getBody (line 1206) | function getBody() {
  function isDocumentReady (line 1211) | function isDocumentReady() {
  function isDocumentInteractive (line 1214) | function isDocumentInteractive() {
  function urlEncode (line 1217) | function urlEncode(str) {
  function parseQuery (line 1231) | function parseQuery(queryString) {
  function extendQuery (line 1248) | function extendQuery(originalQuery, props) {
  function appendChild (line 1261) | function appendChild(container, child) {
  function getElementSafe (line 1264) | function getElementSafe(id, doc) {
  function elementReady (line 1268) | function elementReady(id) {
  function PopupOpenError (line 1287) | function PopupOpenError() {
  function awaitFrameLoad (line 1293) | function awaitFrameLoad(frame) {
  function awaitFrameWindow (line 1327) | function awaitFrameWindow(frame) {
  function dom_iframe (line 1333) | function dom_iframe(options, container) {
  function addEventListener (line 1380) | function addEventListener(obj, event, handler) {
  function showElement (line 1388) | function showElement(element) {
  function hideElement (line 1391) | function hideElement(element) {
  function destroyElement (line 1394) | function destroyElement(element) {
  function isElementClosed (line 1397) | function isElementClosed(el) {
  function onResize (line 1400) | function onResize(el, handler, _temp) {
  function isShadowElement (line 1447) | function isShadowElement(element) {
  function isPerc (line 1503) | function isPerc(str) {
  function toNum (line 1506) | function toNum(val) {
  function toPx (line 1512) | function toPx(val) {
  function toCSS (line 1515) | function toCSS(val) {
  function normalizeDimension (line 1518) | function normalizeDimension(dim, max) {
  function global_getGlobal (line 1525) | function global_getGlobal(win) {
  function globalStore (line 1533) | function globalStore(key, defStore) {
  function getWildcard (line 1565) | function getWildcard() {
  function windowStore (line 1570) | function windowStore(key, defStore) {
  function getInstanceID (line 1599) | function getInstanceID() {
  function resolveHelloPromise (line 1602) | function resolveHelloPromise(win, _ref) {
  function sayHello (line 1615) | function sayHello(win, _ref4) {
  function getWindowInstanceID (line 1633) | function getWindowInstanceID(win, _ref6) {
  function awaitWindowHello (line 1643) | function awaitWindowHello(win, timeout, name) {
  function markWindowKnown (line 1654) | function markWindowKnown(win) {
  function isSerializedType (line 1657) | function isSerializedType(item) {
  function determineType (line 1660) | function determineType(val) {
  function serializeType (line 1663) | function serializeType(type, val) {
  function needsBridgeForBrowser (line 1727) | function needsBridgeForBrowser() {
  function needsBridgeForWin (line 1730) | function needsBridgeForWin(win) {
  function needsBridgeForDomain (line 1733) | function needsBridgeForDomain(domain, win) {
  function needsBridge (line 1739) | function needsBridge(_ref) {
  function getBridgeName (line 1743) | function getBridgeName(domain) {
  function isBridge (line 1746) | function isBridge() {
  function registerRemoteWindow (line 1758) | function registerRemoteWindow(win) {
  function findRemoteWindow (line 1763) | function findRemoteWindow(win) {
  function registerRemoteSendMessage (line 1768) | function registerRemoteSendMessage(win, domain, sendMessage) {
  function rejectRemoteSendMessage (line 1775) | function rejectRemoteSendMessage(win, err) {
  function linkWindow (line 1778) | function linkWindow(_ref3) {
  function setupBridge (line 1814) | function setupBridge(_ref) {
  function cleanupProxyWindows (line 1994) | function cleanupProxyWindows() {
  function getSerializedWindow (line 2001) | function getSerializedWindow(winPromise, _ref) {
  function ProxyWindow (line 2103) | function ProxyWindow(_ref2) {
  function addMethod (line 2252) | function addMethod(id, val, name, source, domain) {
  function lookupMethod (line 2272) | function lookupMethod(source, id) {
  function function_serializeFunction (line 2279) | function function_serializeFunction(destination, domain, val, key, _ref3) {
  function serializeMessage (line 2341) | function serializeMessage(destination, domain, obj, _ref) {
  function deserializeMessage (line 2380) | function deserializeMessage(source, origin, message, _ref2) {
  function send_sendMessage (line 2493) | function send_sendMessage(win, domain, message, _ref2) {
  function getResponseListener (line 2529) | function getResponseListener(hash) {
  function deleteResponseListener (line 2532) | function deleteResponseListener(hash) {
  function isResponseListenerErrored (line 2535) | function isResponseListenerErrored(hash) {
  function getRequestListener (line 2538) | function getRequestListener(_ref) {
  function handleRequest (line 2564) | function handleRequest(source, origin, message, _ref) {
  function handleAck (line 2624) | function handleAck(source, origin, message) {
  function handleResponse (line 2637) | function handleResponse(source, origin, message) {
  function receive_receiveMessage (line 2653) | function receive_receiveMessage(event, _ref2) {
  function on_on (line 2702) | function on_on(name, options, handler) {
  function setup_toProxyWindow (line 2907) | function setup_toProxyWindow(win) {
  function cleanUpWindow (line 2912) | function cleanUpWindow(win) {
  function src_util_isRegex (line 2985) | function src_util_isRegex(item) {
  function utils_getActualProtocol (line 2988) | function utils_getActualProtocol(win) {
  function utils_getProtocol (line 2992) | function utils_getProtocol(win) {
  function utils_isAboutProtocol (line 3000) | function utils_isAboutProtocol(win) {
  function src_utils_getParent (line 3004) | function src_utils_getParent(win) {
  function utils_getOpener (line 3010) | function utils_getOpener(win) {
  function utils_canReadFromWindow (line 3016) | function utils_canReadFromWindow(win) {
  function utils_getActualDomain (line 3022) | function utils_getActualDomain(win) {
  function utils_getDomain (line 3037) | function utils_getDomain(win) {
  function utils_isSameDomain (line 3042) | function utils_isSameDomain(win) {
  function utils_assertSameDomain (line 3072) | function utils_assertSameDomain(win) {
  function utils_isAncestorParent (line 3076) | function utils_isAncestorParent(parent, child) {
  function utils_getFrames (line 3090) | function utils_getFrames(win) {
  function utils_getAllChildFrames (line 3127) | function utils_getAllChildFrames(win) {
  function utils_getTop (line 3136) | function utils_getTop(win) {
  function utils_getAllFramesInWindow (line 3156) | function utils_getAllFramesInWindow(win) {
  function utils_isWindowClosed (line 3165) | function utils_isWindowClosed(win, allowMock) {
  function utils_getFrameByName (line 3210) | function utils_getFrameByName(win, name) {
  function utils_getAncestor (line 3225) | function utils_getAncestor(win) {
  function utils_anyMatch (line 3229) | function utils_anyMatch(collection1, collection2) {
  function utils_getDistanceFromTop (line 3236) | function utils_getDistanceFromTop(win) {
  function utils_matchDomain (line 3243) | function utils_matchDomain(pattern, origin) {
  function utils_getDomainFromUrl (line 3253) | function utils_getDomainFromUrl(url) {
  function utils_onCloseWindow (line 3256) | function utils_onCloseWindow(win, callback, delay, maxtime) {
  function utils_isWindow (line 3276) | function utils_isWindow(obj) {
  function utils_normalizeMockUrl (line 3317) | function utils_normalizeMockUrl(url) {
  function lib_global_getGlobal (line 3322) | function lib_global_getGlobal(win) {
  function tryGlobal (line 3327) | function tryGlobal(win, handler) {
  function getProxyObject (line 3332) | function getProxyObject(obj) {
  function basicSerialize (line 3343) | function basicSerialize(data) {
  function getUIDRefStore (line 3346) | function getUIDRefStore(win) {
  function crossDomainSerialize (line 3351) | function crossDomainSerialize(_ref) {
  function crossDomainDeserialize (line 3383) | function crossDomainDeserialize(_ref2) {
  function buildChildWindowName (line 3451) | function buildChildWindowName(_ref) {
  function parseWindowName (line 3454) | function parseWindowName(windowName) {
  function getInitialParentPayload (line 3526) | function getInitialParentPayload() {
  function window_getWindowRef (line 3529) | function window_getWindowRef(targetWindow, currentWindow) {
  function normalizeChildProp (line 3547) | function normalizeChildProp(propsDef, props, key, value, helpers) {
  function child_focus (line 3567) | function child_focus() {
  function child_destroy (line 3572) | function child_destroy() {
  function eachProp (line 3583) | function eachProp(props, propsDef, handler) {
  function serializeProps (line 3589) | function serializeProps(propsDef, props, method) {
  function parentComponent (line 3646) | function parentComponent(_ref) {
  function defaultContainerTemplate (line 4807) | function defaultContainerTemplate(_ref) {
  function defaultPrerenderTemplate (line 4838) | function defaultPrerenderTemplate(_ref) {
  function component (line 4854) | function component(opts) {
  function destroyComponents (line 5549) | function destroyComponents(err) {
  function component_destroy (line 5556) | function component_destroy(err) {

FILE: flow-typed/npm/node-stream-zip_v1.x.x.js
  method entries (line 139) | entries(): Promise<{ [name: string]: ZipEntry }

FILE: karma.conf.js
  function configKarma (line 27) | function configKarma(karma: Object) {

FILE: src/child/child.js
  method if (line 177) | if (!isSameDomain(win)) {
  method xprops (line 181) | xprops;
  method if (line 190) | if (!winParent || winParent.uid !== currentParent.uid) {
  method extend (line 260) | extend(props, normalizedProps);

FILE: src/child/props.js
  method if (line 26) | if (!propsDef.hasOwnProperty(key)) {

FILE: src/component/component.js
  method if (line 368) | if (__DEBUG__) {
  method if (line 403) | if (isChild()) {
  method if (line 531) | if (props.onDestroy) {
  method if (line 721) | if (bridge) {

FILE: src/component/templates/container.js
  constant CLASS (line 9) | const CLASS = {
  method if (line 26) | if (!frame || !prerenderFrame) {

FILE: src/component/validate.js
  function validatepropsDefinitions (line 9) | function validatepropsDefinitions<P, X, C, ExtType>(
  method if (line 57) | if (!options) {

FILE: src/constants.js
  constant ZOID (line 5) | const ZOID = `zoid`;
  constant POST_MESSAGE (line 7) | const POST_MESSAGE = {
  constant COMPONENT_ERROR (line 12) | const COMPONENT_ERROR = {
  constant PROP_TYPE (line 20) | const PROP_TYPE = {
  constant WINDOW_REFERENCE (line 29) | const WINDOW_REFERENCE = {
  constant PROP_SERIALIZATION (line 36) | const PROP_SERIALIZATION = {
  constant CONTEXT (line 42) | const CONTEXT = WINDOW_TYPE;
  constant WILDCARD (line 44) | const WILDCARD = "*";
  constant DEFAULT_DIMENSIONS (line 46) | const DEFAULT_DIMENSIONS = {
  constant EVENT (line 51) | const EVENT = {
  constant METHOD (line 67) | const METHOD = {

FILE: src/drivers/angular.js
  function safeApply (line 43) | function safeApply() {

FILE: src/drivers/angular2.js
  class ComponentInstance (line 68) | class ComponentInstance {
    method constructor (line 79) | constructor(elementRef, zone) {
    method getProps (line 85) | getProps(): Object {
    method ngOnInit (line 101) | ngOnInit() {
    method ngDoCheck (line 107) | ngDoCheck() {
  class ModuleInstance (line 128) | class ModuleInstance {

FILE: src/drivers/react.js
  class ReactClassType (line 9) | class ReactClassType {}
  class __ReactComponent (line 10) | class __ReactComponent {}
  method render (line 47) | render(): ReactElementType {
  method componentDidMount (line 51) | componentDidMount() {
  method componentDidUpdate (line 59) | componentDidUpdate() {

FILE: src/drivers/vue.js
  method register (line 48) | *

FILE: src/drivers/vue3.js
  function propsToCamelCase (line 7) | function propsToCamelCase(props: Object): Object {
  method mounted (line 31) | mounted() {

FILE: src/lib/global.js
  function getGlobalKey (line 9) | function getGlobalKey(): string {
  function destroyGlobal (line 42) | function destroyGlobal() {

FILE: src/lib/window.js
  function getWindowByRef (line 30) | function getWindowByRef(windowRef: WindowRef): CrossDomainWindowType {
  function buildChildWindowName (line 76) | function buildChildWindowName({
  function parseWindowName (line 86) | function parseWindowName(windowName: string): {|

FILE: src/parent/parent.js
  method if (line 455) | if (getProxyWindowOverride) {
  method if (line 554) | if (openFrameOverride) {
  method if (line 575) | if (openPrerenderFrameOverride) {
  method if (line 601) | if (openPrerenderOverride) {
  method if (line 800) | if (openOverride) {
  method if (line 959) | if (onErrorOverride) {
  method if (line 1137) | if (prerenderOverride) {
  method if (line 1204) | if (renderContainerOverride) {
  method if (line 1270) | if (__POST_ROBOT__.__IE_POPUP_SUPPORT__) {
  method if (line 1320) | if (__DEBUG__ && validate) {
  method if (line 1359) | if (getProxyContainerOverride) {
  method if (line 1502) | if (target === window) {
  method if (line 1506) | if (!isSameTopWindow(window, target)) {

FILE: src/types.js
  constant TYPES (line 4) | const TYPES = true;

FILE: test/common.js
  function onWindowOpen (line 77) | function onWindowOpen({
  function doClick (line 160) | function doClick() {
  method close (line 180) | close() {
  method connectedCallback (line 267) | connectedCallback() {
  method connectedCallback (line 284) | connectedCallback() {

FILE: test/lib/angular-12/angular-12-common.js
  function getDOM (line 21) | function getDOM() {
  function setDOM (line 24) | function setDOM(adapter) {
  function setRootDomAdapter (line 27) | function setRootDomAdapter(adapter) {
  function DomAdapter (line 40) | function DomAdapter() {
  function __extends (line 68) | function __extends(d, b) {
  function __rest (line 87) | function __rest(s, e) {
  function __decorate (line 99) | function __decorate(decorators, target, key, desc) {
  function __param (line 109) | function __param(paramIndex, decorator) {
  function __metadata (line 112) | function __metadata(metadataKey, metadataValue) {
  function __awaiter (line 116) | function __awaiter(thisArg, _arguments, P, generator) {
  function __generator (line 135) | function __generator(thisArg, body) {
  function __exportStar (line 213) | function __exportStar(m, o) {
  function __values (line 218) | function __values(o) {
  function __read (line 232) | function __read(o, n) {
  function __spread (line 257) | function __spread() {
  function __spreadArrays (line 263) | function __spreadArrays() {
  function __spreadArray (line 271) | function __spreadArray(to, from, pack) {
  function __await (line 282) | function __await(v) {
  function __asyncGenerator (line 285) | function __asyncGenerator(thisArg, _arguments, generator) {
  function __asyncDelegator (line 304) | function __asyncDelegator(o) {
  function __asyncValues (line 309) | function __asyncValues(o) {
  function __makeTemplateObject (line 317) | function __makeTemplateObject(cooked, raw) {
  function __importStar (line 332) | function __importStar(mod) {
  function __importDefault (line 343) | function __importDefault(mod) {
  function __classPrivateFieldGet (line 346) | function __classPrivateFieldGet(receiver, state, kind, f) {
  function __classPrivateFieldSet (line 353) | function __classPrivateFieldSet(receiver, state, value, kind, f) {
  function PlatformLocation (line 403) | function PlatformLocation() {
  function useBrowserPlatformLocation (line 418) | function useBrowserPlatformLocation() {
  function BrowserPlatformLocation (line 435) | function BrowserPlatformLocation(_doc) {
  function supportsState (line 554) | function supportsState() {
  function createBrowserPlatformLocation (line 557) | function createBrowserPlatformLocation() {
  function joinWithSlash (line 585) | function joinWithSlash(start, end) {
  function stripTrailingSlash (line 616) | function stripTrailingSlash(url) {
  function normalizeQueryParams (line 629) | function normalizeQueryParams(params) {
  function LocationStrategy (line 651) | function LocationStrategy() {
  function provideLocationStrategy (line 662) | function provideLocationStrategy(platformLocation) {
  function PathLocationStrategy (line 724) | function PathLocationStrategy(_platformLocation, href) {
  function HashLocationStrategy (line 806) | function HashLocationStrategy(_platformLocation, _baseHref) {
  function Location (line 911) | function Location(platformStrategy, platformLocation) {
  function createLocation (line 1126) | function createLocation() {
  function _stripBaseHref (line 1129) | function _stripBaseHref(baseHref, url) {
  function _stripIndexHtml (line 1132) | function _stripIndexHtml(url) {
  function getLocaleId (line 1296) | function getLocaleId(locale) {
  function getLocaleDayPeriods (line 1310) | function getLocaleDayPeriods(locale, formStyle, width) {
  function getLocaleDayNames (line 1330) | function getLocaleDayNames(locale, formStyle, width) {
  function getLocaleMonthNames (line 1348) | function getLocaleMonthNames(locale, formStyle, width) {
  function getLocaleEraNames (line 1365) | function getLocaleEraNames(locale, width) {
  function getLocaleFirstDayOfWeek (line 1381) | function getLocaleFirstDayOfWeek(locale) {
  function getLocaleWeekEndRange (line 1394) | function getLocaleWeekEndRange(locale) {
  function getLocaleDateFormat (line 1409) | function getLocaleDateFormat(locale, width) {
  function getLocaleTimeFormat (line 1424) | function getLocaleTimeFormat(locale, width) {
  function getLocaleDateTimeFormat (line 1439) | function getLocaleDateTimeFormat(locale, width) {
  function getLocaleNumberSymbol (line 1454) | function getLocaleNumberSymbol(locale, symbol) {
  function getLocaleNumberFormat (line 1502) | function getLocaleNumberFormat(locale, type) {
  function getLocaleCurrencySymbol (line 1517) | function getLocaleCurrencySymbol(locale) {
  function getLocaleCurrencyName (line 1531) | function getLocaleCurrencyName(locale) {
  function getLocaleCurrencyCode (line 1545) | function getLocaleCurrencyCode(locale) {
  function getLocaleCurrencies (line 1554) | function getLocaleCurrencies(locale) {
  function checkFullData (line 1563) | function checkFullData(data) {
  function getLocaleExtraDayPeriodRules (line 1591) | function getLocaleExtraDayPeriodRules(locale) {
  function getLocaleExtraDayPeriods (line 1619) | function getLocaleExtraDayPeriods(locale, formStyle, width) {
  function getLocaleDirection (line 1636) | function getLocaleDirection(locale) {
  function getLastDefinedValue (line 1653) | function getLastDefinedValue(data, index) {
  function extractTime (line 1664) | function extractTime(time) {
  function getCurrencySymbol (line 1683) | function getCurrencySymbol(code, format, locale) {
  function getNumberOfCurrencyDigits (line 1704) | function getNumberOfCurrencyDigits(code) {
  function formatDate (line 1763) | function formatDate(value, format, locale, timezone) {
  function createDate (line 1808) | function createDate(year, month, date) {
  function getNamedFormat (line 1826) | function getNamedFormat(locale, format) {
  function formatDateTime (line 1886) | function formatDateTime(str, opt_values) {
  function padNumber (line 1894) | function padNumber(num, digits, minusSign, trim, negWrap) {
  function formatFractionalSeconds (line 1915) | function formatFractionalSeconds(milliseconds, digits) {
  function dateGetter (line 1922) | function dateGetter(name, size, offset, trim, negWrap) {
  function getDatePart (line 1943) | function getDatePart(part, date) {
  function dateStrGetter (line 1968) | function dateStrGetter(name, width, form, extended) {
  function getDateTranslation (line 1978) | function getDateTranslation(date, locale, name, width, form, extended) {
  function timeZoneGetter (line 2045) | function timeZoneGetter(width) {
  function getFirstThursdayOfYear (line 2074) | function getFirstThursdayOfYear(year) {
  function getThursdayThisWeek (line 2078) | function getThursdayThisWeek(datetime) {
  function weekGetter (line 2081) | function weekGetter(size, monthBased) {
  function weekNumberingYearGetter (line 2104) | function weekNumberingYearGetter(size, trim) {
  function getDateFormatter (line 2117) | function getDateFormatter(format) {
  function timezoneToOffset (line 2362) | function timezoneToOffset(timezone, fallback) {
  function addDateMinutes (line 2369) | function addDateMinutes(date, minutes) {
  function convertTimezoneToLocal (line 2374) | function convertTimezoneToLocal(date, timezone, reverse) {
  function toDate (line 2392) | function toDate(value) {
  function isoStringToDate (line 2432) | function isoStringToDate(match) {
  function isDate (line 2455) | function isDate(value) {
  function formatNumberToLocaleString (line 2478) | function formatNumberToLocaleString(value, pattern, locale, groupSymbol,...
  function formatCurrency (line 2589) | function formatCurrency(value, locale, currency, currencyCode, digitsInf...
  function formatPercent (line 2624) | function formatPercent(value, locale, digitsInfo) {
  function formatNumber (line 2647) | function formatNumber(value, locale, digitsInfo) {
  function parseNumberFormat (line 2652) | function parseNumberFormat(format, minusSign) {
  function toPercent (line 2702) | function toPercent(parsedNumber) {
  function parseNumber (line 2727) | function parseNumber(num) {
  function roundNumber (line 2780) | function roundNumber(parsedNumber, minFrac, maxFrac) {
  function parseIntAutoRadix (line 2847) | function parseIntAutoRadix(text) {
  function NgLocalization (line 2859) | function NgLocalization() {
  function getPluralCategory (line 2868) | function getPluralCategory(value, cases, ngLocalization, locale) {
  function NgLocaleLocalization (line 2889) | function NgLocaleLocalization(locale) {
  function registerLocaleData (line 2935) | function registerLocaleData(data, localeId, extraData) {
  function parseCookieValue (line 2946) | function parseCookieValue(cookieStr, name) {
  function NgClass (line 3005) | function NgClass(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {
  function NgComponentOutlet (line 3207) | function NgComponentOutlet(_viewContainerRef) {
  function NgForOfContext (line 3264) | function NgForOfContext($implicit, ngForOf, index, count) {
  function NgForOf (line 3399) | function NgForOf(_viewContainer, _template, _differs) {
  function RecordViewTuple (line 3557) | function RecordViewTuple(record, view) {
  function getTypeName (line 3563) | function getTypeName(type) {
  function NgIf (line 3714) | function NgIf(_viewContainer, templateRef) {
  function NgIfContext (line 3809) | function NgIfContext() {
  function assertTemplate (line 3815) | function assertTemplate(property, templateRef) {
  function SwitchView (line 3830) | function SwitchView(_viewContainerRef, _templateRef) {
  function NgSwitch (line 3920) | function NgSwitch() {
  function NgSwitchCase (line 4010) | function NgSwitchCase(viewContainer, templateRef, ngSwitch) {
  function NgSwitchDefault (line 4052) | function NgSwitchDefault(viewContainer, templateRef, ngSwitch) {
  function throwNgSwitchProviderNotFoundError (line 4068) | function throwNgSwitchProviderNotFoundError(attrName, directiveName) {
  function NgPlural (line 4113) | function NgPlural(_localization) {
  function NgPluralCase (line 4176) | function NgPluralCase(value, template, viewContainer, ngPlural) {
  function NgStyle (line 4230) | function NgStyle(_ngEl, _differs, _renderer) {
  function NgTemplateOutlet (line 4317) | function NgTemplateOutlet(_viewContainerRef) {
  function invalidPipeArgumentError (line 4391) | function invalidPipeArgumentError(type, value) {
  function SubscribableStrategy (line 4403) | function SubscribableStrategy() {
  function PromiseStrategy (line 4422) | function PromiseStrategy() {
  function AsyncPipe (line 4463) | function AsyncPipe(_ref) {
  function LowerCasePipe (line 4547) | function LowerCasePipe() {
  function TitleCasePipe (line 4589) | function TitleCasePipe() {
  function UpperCasePipe (line 4613) | function UpperCasePipe() {
  function DatePipe (line 4791) | function DatePipe(locale) {
  function I18nPluralPipe (line 4837) | function I18nPluralPipe(_localization) {
  function I18nSelectPipe (line 4890) | function I18nSelectPipe() {
  function JsonPipe (line 4940) | function JsonPipe() {
  function makeKeyValuePair (line 4961) | function makeKeyValuePair(key, value) {
  function KeyValuePipe (line 4985) | function KeyValuePipe(differs) {
  function defaultComparator (line 5022) | function defaultComparator(keyValueA, keyValueB) {
  function DecimalPipe (line 5124) | function DecimalPipe(_locale) {
  function PercentPipe (line 5175) | function PercentPipe(_locale) {
  function CurrencyPipe (line 5255) | function CurrencyPipe(_locale, _defaultCurrencyCode) {
  function isValue (line 5331) | function isValue(value) {
  function strToNumber (line 5337) | function strToNumber(value) {
  function SlicePipe (line 5391) | function SlicePipe() {
  function CommonModule (line 5459) | function CommonModule() {
  function isPlatformBrowser (line 5488) | function isPlatformBrowser(platformId) {
  function isPlatformServer (line 5495) | function isPlatformServer(platformId) {
  function isPlatformWorkerApp (line 5502) | function isPlatformWorkerApp(platformId) {
  function isPlatformWorkerUi (line 5509) | function isPlatformWorkerUi(platformId) {
  function ViewportScroller (line 5538) | function ViewportScroller() {
  function BrowserViewportScroller (line 5554) | function BrowserViewportScroller(document, window) {
  function getScrollRestorationProperty (line 5693) | function getScrollRestorationProperty(obj) {
  function findAnchorFromDocument (line 5696) | function findAnchorFromDocument(document, target) {
  function NullViewportScroller (line 5726) | function NullViewportScroller() {
  function XhrFactory (line 5766) | function XhrFactory() {

FILE: test/lib/angular-12/angular-12-compiler.js
  function __extends (line 36) | function __extends(d, b) {
  function __rest (line 55) | function __rest(s, e) {
  function __decorate (line 67) | function __decorate(decorators, target, key, desc) {
  function __param (line 77) | function __param(paramIndex, decorator) {
  function __metadata (line 80) | function __metadata(metadataKey, metadataValue) {
  function __awaiter (line 84) | function __awaiter(thisArg, _arguments, P, generator) {
  function __generator (line 103) | function __generator(thisArg, body) {
  function __exportStar (line 181) | function __exportStar(m, o) {
  function __values (line 186) | function __values(o) {
  function __read (line 200) | function __read(o, n) {
  function __spread (line 225) | function __spread() {
  function __spreadArrays (line 231) | function __spreadArrays() {
  function __spreadArray (line 239) | function __spreadArray(to, from, pack) {
  function __await (line 250) | function __await(v) {
  function __asyncGenerator (line 253) | function __asyncGenerator(thisArg, _arguments, generator) {
  function __asyncDelegator (line 272) | function __asyncDelegator(o) {
  function __asyncValues (line 277) | function __asyncValues(o) {
  function __makeTemplateObject (line 285) | function __makeTemplateObject(cooked, raw) {
  function __importStar (line 300) | function __importStar(mod) {
  function __importDefault (line 311) | function __importDefault(mod) {
  function __classPrivateFieldGet (line 314) | function __classPrivateFieldGet(receiver, state, kind, f) {
  function __classPrivateFieldSet (line 321) | function __classPrivateFieldSet(receiver, state, value, kind, f) {
  function splitNsName (line 343) | function splitNsName(elementName) {
  function isNgContainer (line 354) | function isNgContainer(tagName) {
  function isNgContent (line 358) | function isNgContent(tagName) {
  function isNgTemplate (line 362) | function isNgTemplate(tagName) {
  function getNsPrefix (line 365) | function getNsPrefix(fullName) {
  function mergeNsAndName (line 368) | function mergeNsAndName(prefix, localName) {
  function HtmlTagDefinition (line 380) | function HtmlTagDefinition(_c) {
  function getHtmlTagDefinition (line 412) | function getHtmlTagDefinition(tagName) {
  function CssSelector (line 508) | function CssSelector() {
  function SelectorMatcher (line 684) | function SelectorMatcher() {
  function SelectorListContext (line 869) | function SelectorListContext(selectors) {
  function SelectorContext (line 877) | function SelectorContext(selector, cbContext, listContext) {
  function makeMetadataFactory (line 975) | function makeMetadataFactory(name, props) {
  function parserSelectorToSimpleSelector (line 992) | function parserSelectorToSimpleSelector(selector) {
  function parserSelectorToNegativeSelector (line 998) | function parserSelectorToNegativeSelector(selector) {
  function parserSelectorToR3Selector (line 1014) | function parserSelectorToR3Selector(selector) {
  function parseSelectorToR3Selector (line 1021) | function parseSelectorToR3Selector(selector) {
  method ViewEncapsulation (line 1036) | get ViewEncapsulation () { return ViewEncapsulation; }
  method ChangeDetectionStrategy (line 1037) | get ChangeDetectionStrategy () { return ChangeDetectionStrategy; }
  method SecurityContext (line 1053) | get SecurityContext () { return SecurityContext; }
  method MissingTranslationStrategy (line 1054) | get MissingTranslationStrategy () { return MissingTranslationStrategy; }
  function Type (line 1071) | function Type(modifiers) {
  function BuiltinType (line 1092) | function BuiltinType(name, modifiers) {
  function ExpressionType (line 1104) | function ExpressionType(value, modifiers, typeParams) {
  function ArrayType (line 1118) | function ArrayType(of, modifiers) {
  function MapType (line 1130) | function MapType(valueType, modifiers) {
  function nullSafeIsEquivalent (line 1171) | function nullSafeIsEquivalent(base, other) {
  function areAllEquivalentPredicate (line 1177) | function areAllEquivalentPredicate(base, other, equivalentPredicate) {
  function areAllEquivalent (line 1189) | function areAllEquivalent(base, other) {
  function Expression (line 1193) | function Expression(type, sourceSpan) {
  function ReadVarExpr (line 1289) | function ReadVarExpr(name, type, sourceSpan) {
  function TypeofExpr (line 1320) | function TypeofExpr(expr, type, sourceSpan) {
  function WrappedNodeExpr (line 1338) | function WrappedNodeExpr(node, type, sourceSpan) {
  function WriteVarExpr (line 1356) | function WriteVarExpr(name, value, type, sourceSpan) {
  function WriteKeyExpr (line 1381) | function WriteKeyExpr(receiver, index, value, type, sourceSpan) {
  function WritePropExpr (line 1402) | function WritePropExpr(receiver, name, value, type, sourceSpan) {
  function InvokeMethodExpr (line 1428) | function InvokeMethodExpr(receiver, method, args, type, sourceSpan) {
  function InvokeFunctionExpr (line 1456) | function InvokeFunctionExpr(fn, args, type, sourceSpan, pure) {
  function TaggedTemplateExpr (line 1478) | function TaggedTemplateExpr(tag, template, type, sourceSpan) {
  function InstantiateExpr (line 1499) | function InstantiateExpr(classExpr, args, type, sourceSpan) {
  function LiteralExpr (line 1519) | function LiteralExpr(value, type, sourceSpan) {
  function TemplateLiteral (line 1536) | function TemplateLiteral(elements, expressions) {
  function TemplateLiteralElement (line 1543) | function TemplateLiteralElement(text, sourceSpan, rawText) {
  function MessagePiece (line 1559) | function MessagePiece(text, sourceSpan) {
  function LiteralPiece (line 1567) | function LiteralPiece() {
  function PlaceholderPiece (line 1574) | function PlaceholderPiece() {
  function LocalizedString (line 1581) | function LocalizedString(metaBlock, messageParts, placeHolderNames, expr...
  function createCookedRawString (line 1665) | function createCookedRawString(metaBlock, messagePart, range) {
  function ExternalExpr (line 1683) | function ExternalExpr(value, type, typeParams, sourceSpan) {
  function ExternalReference (line 1703) | function ExternalReference(moduleName, name, runtime) {
  function ConditionalExpr (line 1712) | function ConditionalExpr(condition, trueCase, falseCase, type, sourceSpa...
  function NotExpr (line 1734) | function NotExpr(condition, sourceSpan) {
  function AssertNotNull (line 1752) | function AssertNotNull(condition, sourceSpan) {
  function CastExpr (line 1770) | function CastExpr(value, type, sourceSpan) {
  function FnParam (line 1787) | function FnParam(name, type) {
  function FunctionExpr (line 1799) | function FunctionExpr(params, statements, type, sourceSpan, name) {
  function UnaryOperatorExpr (line 1823) | function UnaryOperatorExpr(operator, expr, type, sourceSpan, parens) {
  function BinaryOperatorExpr (line 1845) | function BinaryOperatorExpr(operator, lhs, rhs, type, sourceSpan, parens) {
  function ReadPropExpr (line 1868) | function ReadPropExpr(receiver, name, type, sourceSpan) {
  function ReadKeyExpr (line 1891) | function ReadKeyExpr(receiver, index, type, sourceSpan) {
  function LiteralArrayExpr (line 1914) | function LiteralArrayExpr(entries, type, sourceSpan) {
  function LiteralMapEntry (line 1931) | function LiteralMapEntry(key, value, quoted) {
  function LiteralMapExpr (line 1943) | function LiteralMapExpr(entries, type, sourceSpan) {
  function CommaExpr (line 1965) | function CommaExpr(parts, sourceSpan) {
  function LeadingComment (line 1994) | function LeadingComment(text, multiline, trailingNewline) {
  function JSDocComment (line 2006) | function JSDocComment(tags) {
  function Statement (line 2017) | function Statement(modifiers, sourceSpan, leadingComments) {
  function DeclareVarStmt (line 2036) | function DeclareVarStmt(name, value, type, modifiers, sourceSpan, leadin...
  function DeclareFunctionStmt (line 2054) | function DeclareFunctionStmt(name, params, statements, type, modifiers, ...
  function ExpressionStatement (line 2073) | function ExpressionStatement(expr, sourceSpan, leadingComments) {
  function ReturnStatement (line 2088) | function ReturnStatement(value, sourceSpan, leadingComments) {
  function AbstractClassPart (line 2103) | function AbstractClassPart(type, modifiers) {
  function ClassField (line 2116) | function ClassField(name, type, modifiers, initializer) {
  function ClassMethod (line 2129) | function ClassMethod(name, params, body, type, modifiers) {
  function ClassGetter (line 2143) | function ClassGetter(name, body, type, modifiers) {
  function ClassStmt (line 2156) | function ClassStmt(name, parent, fields, getters, constructorMethod, met...
  function IfStmt (line 2181) | function IfStmt(condition, trueCase, falseCase, sourceSpan, leadingComme...
  function TryCatchStmt (line 2201) | function TryCatchStmt(bodyStmts, catchStmts, sourceSpan, leadingComments) {
  function ThrowStmt (line 2219) | function ThrowStmt(error, sourceSpan, leadingComments) {
  function AstTransformer (line 2234) | function AstTransformer() {
  function RecursiveAstVisitor (line 2364) | function RecursiveAstVisitor() {
  function findReadVarNames (line 2561) | function findReadVarNames(stmts) {
  function _ReadVarVisitor (line 2568) | function _ReadVarVisitor() {
  function collectExternalReferences (line 2589) | function collectExternalReferences(stmts) {
  function _FindExternalReferencesVisitor (line 2596) | function _FindExternalReferencesVisitor() {
  function applySourceSpanToStatementIfNeeded (line 2607) | function applySourceSpanToStatementIfNeeded(stmt, sourceSpan) {
  function applySourceSpanToExpressionIfNeeded (line 2614) | function applySourceSpanToExpressionIfNeeded(expr, sourceSpan) {
  function _ApplySourceSpanTransformer (line 2623) | function _ApplySourceSpanTransformer(sourceSpan) {
  function leadingComment (line 2662) | function leadingComment(text, multiline, trailingNewline) {
  function jsDocComment (line 2667) | function jsDocComment(tags) {
  function variable (line 2671) | function variable(name, type, sourceSpan) {
  function importExpr (line 2674) | function importExpr(id, typeParams, sourceSpan) {
  function importType (line 2678) | function importType(id, typeParams, typeModifiers) {
  function expressionType (line 2681) | function expressionType(expr, typeModifiers, typeParams) {
  function typeofExpr (line 2684) | function typeofExpr(expr) {
  function literalArr (line 2687) | function literalArr(values, type, sourceSpan) {
  function literalMap (line 2690) | function literalMap(values, type) {
  function unary (line 2694) | function unary(operator, expr, type, sourceSpan) {
  function not (line 2697) | function not(expr, sourceSpan) {
  function assertNotNull (line 2700) | function assertNotNull(expr, sourceSpan) {
  function fn (line 2703) | function fn(params, body, type, sourceSpan, name) {
  function ifStmt (line 2706) | function ifStmt(condition, thenClause, elseClause, sourceSpan, leadingCo...
  function taggedTemplate (line 2709) | function taggedTemplate(tag, template, type, sourceSpan) {
  function literal (line 2712) | function literal(value, type, sourceSpan) {
  function localizedString (line 2715) | function localizedString(metaBlock, messageParts, placeholderNames, expr...
  function isNull (line 2718) | function isNull(exp) {
  function tagToString (line 2725) | function tagToString(tag) {
  function serializeTags (line 2738) | function serializeTags(tags) {
  function FixupExpression (line 2800) | function FixupExpression(resolved) {
  function ConstantPool (line 2834) | function ConstantPool(isClosureCompilerEnabled) {
  function KeyVisitor (line 3003) | function KeyVisitor() {
  function invalid (line 3052) | function invalid(arg) {
  function isVariable (line 3055) | function isVariable(e) {
  function isLongStringLiteral (line 3058) | function isLongStringLiteral(expr) {
  function Identifiers (line 3072) | function Identifiers() {
  function dashCaseToCamelCase (line 3282) | function dashCaseToCamelCase(input) {
  function splitAtColon (line 3291) | function splitAtColon(input, defaultValues) {
  function splitAtPeriod (line 3294) | function splitAtPeriod(input, defaultValues) {
  function _splitAt (line 3297) | function _splitAt(input, character, defaultValues) {
  function visitValue (line 3303) | function visitValue(value, visitor, context) {
  function isDefined (line 3316) | function isDefined(val) {
  function noUndefined (line 3319) | function noUndefined(val) {
  function ValueTransformer (line 3323) | function ValueTransformer() {
  function error (line 3359) | function error(msg) {
  function syntaxError (line 3362) | function syntaxError(msg, parseErrors) {
  function isSyntaxError (line 3371) | function isSyntaxError(error) {
  function getParseErrors (line 3374) | function getParseErrors(error) {
  function escapeRegExp (line 3378) | function escapeRegExp(s) {
  function isStrictStringMap (line 3382) | function isStrictStringMap(obj) {
  function utf8Encode (line 3385) | function utf8Encode(str) {
  function stringify (line 3413) | function stringify(token) {
  function resolveForwardRef (line 3444) | function resolveForwardRef(type) {
  function isPromise (line 3455) | function isPromise(obj) {
  function Version (line 3461) | function Version(full) {
  function newArray (line 3477) | function newArray(size, value) {
  function partitionArray (line 3492) | function partitionArray(arr, conditionFn) {
  function Comment (line 3526) | function Comment(value, sourceSpan) {
  function Text (line 3536) | function Text(value, sourceSpan) {
  function BoundText (line 3546) | function BoundText(value, sourceSpan, i18n) {
  function TextAttribute (line 3563) | function TextAttribute(name, value, sourceSpan, keySpan, valueSpan, i18n) {
  function BoundAttribute (line 3577) | function BoundAttribute(name, type, securityContext, value, unit, source...
  function BoundEvent (line 3600) | function BoundEvent(name, type, handler, target, phase, sourceSpan, hand...
  function Element (line 3624) | function Element(name, attributes, inputs, outputs, children, references...
  function Template (line 3642) | function Template(tagName, attributes, inputs, outputs, templateAttrs, c...
  function Content (line 3662) | function Content(selector, attributes, sourceSpan, i18n) {
  function Variable (line 3675) | function Variable(name, value, sourceSpan, keySpan, valueSpan) {
  function Reference (line 3688) | function Reference(name, value, sourceSpan, keySpan, valueSpan) {
  function Icu (line 3701) | function Icu(vars, placeholders, sourceSpan, i18n) {
  function NullVisitor (line 3713) | function NullVisitor() {
  function RecursiveVisitor (line 3729) | function RecursiveVisitor() {
  function TransformVisitor (line 3758) | function TransformVisitor() {
  function visitAll (line 3818) | function visitAll(visitor, nodes) {
  function transformAll (line 3856) | function transformAll(visitor, nodes) {
  function Message (line 3896) | function Message(nodes, placeholders, placeholderToMessage, meaning, des...
  function Text (line 3922) | function Text(value, sourceSpan) {
  function Container (line 3933) | function Container(children, sourceSpan) {
  function Icu (line 3943) | function Icu(expression, type, cases, sourceSpan) {
  function TagPlaceholder (line 3955) | function TagPlaceholder(tag, attrs, startName, closeName, children, isVoid,
  function Placeholder (line 3974) | function Placeholder(value, name, sourceSpan) {
  function IcuPlaceholder (line 3985) | function IcuPlaceholder(value, name, sourceSpan) {
  function CloneVisitor (line 3997) | function CloneVisitor() {
  function RecurseVisitor (line 4030) | function RecurseVisitor() {
  function BigInteger (line 4070) | function BigInteger(digits) {
  function BigIntForMultiplication (line 4140) | function BigIntForMultiplication(value) {
  function BigIntExponentiation (line 4214) | function BigIntExponentiation(base) {
  function digest (line 4238) | function digest(message) {
  function computeDigest (line 4244) | function computeDigest(message) {
  function decimalDigest (line 4250) | function decimalDigest(message) {
  function computeDecimalDigest (line 4256) | function computeDecimalDigest(message) {
  function _SerializerVisitor (line 4269) | function _SerializerVisitor() {
  function serializeNodes (line 4298) | function serializeNodes(nodes) {
  function _SerializerIgnoreIcuExpVisitor (line 4310) | function _SerializerIgnoreIcuExpVisitor() {
  function sha1 (line 4329) | function sha1(str) {
  function fk (line 4364) | function fk(index, b, c, d) {
  function fingerprint (line 4384) | function fingerprint(str) {
  function computeMsgId (line 4394) | function computeMsgId(msg, meaning) {
  function hash32 (line 4405) | function hash32(bytes, c) {
  function mix (line 4424) | function mix(a, b, c) {
  function add32 (line 4461) | function add32(a, b) {
  function add32to64 (line 4464) | function add32to64(a, b) {
  function add64 (line 4469) | function add64(a, b) {
  function sub32 (line 4478) | function sub32(a, b) {
  function rol32 (line 4484) | function rol32(a, count) {
  function rol64 (line 4488) | function rol64(num, count) {
  function bytesToWords32 (line 4494) | function bytesToWords32(bytes, endian) {
  function byteAt (line 4502) | function byteAt(bytes, index) {
  function wordAt (line 4505) | function wordAt(bytes, index, endian) {
  function words32ToByteString (line 4519) | function words32ToByteString(words32) {
  function word32ToByteString (line 4522) | function word32ToByteString(word) {
  function bytesToHexString (line 4529) | function bytesToHexString(bytes) {
  function wordsToDecimalString (line 4552) | function wordsToDecimalString(hi, lo) {
  function Serializer (line 4564) | function Serializer() {
  function SimplePlaceholderMapper (line 4579) | function SimplePlaceholderMapper(message, mapName) {
  function _Visitor (line 4640) | function _Visitor() {
  function serialize (line 4667) | function serialize(nodes) {
  function Declaration (line 4671) | function Declaration(unescapedAttrs) {
  function Doctype (line 4684) | function Doctype(rootTag, dtd) {
  function Tag (line 4694) | function Tag(name, unescapedAttrs, children) {
  function Text (line 4711) | function Text(unescapedValue) {
  function CR (line 4721) | function CR(ws) {
  function escapeXml (line 4735) | function escapeXml(text) {
  function Xmb (line 4747) | function Xmb() {
  function _Visitor (line 4790) | function _Visitor() {
  function digest$1 (line 4851) | function digest$1(message) {
  function ExampleVisitor (line 4856) | function ExampleVisitor() {
  function toPublicName (line 4880) | function toPublicName(internalName) {
  function isI18nAttribute (line 4901) | function isI18nAttribute(name) {
  function isI18nRootNode (line 4904) | function isI18nRootNode(meta) {
  function isSingleI18nIcu (line 4907) | function isSingleI18nIcu(meta) {
  function hasI18nMeta (line 4910) | function hasI18nMeta(node) {
  function hasI18nAttrs (line 4913) | function hasI18nAttrs(element) {
  function icuFromI18nMessage (line 4916) | function icuFromI18nMessage(message) {
  function wrapI18nPlaceholder (line 4919) | function wrapI18nPlaceholder(content, contextId) {
  function assembleI18nBoundString (line 4924) | function assembleI18nBoundString(strings, bindingStartIndex, contextId) {
  function getSeqNumberGenerator (line 4937) | function getSeqNumberGenerator(startsAt) {
  function placeholdersToParams (line 4942) | function placeholdersToParams(placeholders) {
  function updatePlaceholderMap (line 4949) | function updatePlaceholderMap(map, name) {
  function assembleBoundTextPlaceholders (line 4958) | function assembleBoundTextPlaceholders(meta, bindingStartIndex, contextI...
  function i18nFormatPlaceholderNames (line 4985) | function i18nFormatPlaceholderNames(params, useCamelCase) {
  function formatI18nPlaceholderName (line 5001) | function formatI18nPlaceholderName(name, useCamelCase) {
  function getTranslationConstPrefix (line 5029) | function getTranslationConstPrefix(extra) {
  function declareI18nVariable (line 5036) | function declareI18nVariable(variable) {
  function temporaryAllocator (line 5068) | function temporaryAllocator(statements, name) {
  function unsupported (line 5078) | function unsupported(feature) {
  function invalid$1 (line 5084) | function invalid$1(arg) {
  function asLiteral (line 5087) | function asLiteral(value) {
  function conditionallyCreateMapObjectLiteral (line 5093) | function conditionallyCreateMapObjectLiteral(keys, keepDeclared) {
  function mapToExpression (line 5099) | function mapToExpression(map, keepDeclared) {
  function trimTrailingNulls (line 5135) | function trimTrailingNulls(parameters) {
  function getQueryPredicate (line 5141) | function getQueryPredicate(query, constantPool) {
  function DefinitionMap (line 5163) | function DefinitionMap() {
  function getAttrsForDirectiveMatching (line 5185) | function getAttrsForDirectiveMatching(elOrTpl) {
  function chainedInstruction (line 5206) | function chainedInstruction(reference, calls, span) {
  function getInterpolationArgsLength (line 5224) | function getInterpolationArgsLength(interpolation) {
  function toOptionalLiteralArray (line 5253) | function toOptionalLiteralArray(values, mapper) {
  function toOptionalLiteralMap (line 5268) | function toOptionalLiteralMap(object, mapper) {
  function compileDependencies (line 5280) | function compileDependencies(deps) {
  function compileDependency (line 5293) | function compileDependency(dep) {
  function generateForwardRef (line 5320) | function generateForwardRef(expr) {
  function SourceMapGenerator (line 5335) | function SourceMapGenerator(file) {
  function toBase64String (line 5446) | function toBase64String(value) {
  function toBase64VLQ (line 5460) | function toBase64VLQ(value) {
  function toBase64Digit (line 5474) | function toBase64Digit(value) {
  function _EmittedLine (line 5487) | function _EmittedLine(indent) {
  function EmitterVisitorContext (line 5496) | function EmitterVisitorContext(_indent) {
  function AbstractEmitterVisitor (line 5658) | function AbstractEmitterVisitor(_escapeDollarInStrings) {
  function escapeIdentifier (line 6046) | function escapeIdentifier(input, escapeDollar, alwaysQuote) {
  function _createIndent (line 6072) | function _createIndent(count) {
  function typeWithParameters (line 6087) | function typeWithParameters(type, numParams) {
  function prepareSyntheticPropertyName (line 6098) | function prepareSyntheticPropertyName(name) {
  function prepareSyntheticListenerName (line 6101) | function prepareSyntheticListenerName(name, phase) {
  function getSafePropertyAccessString (line 6104) | function getSafePropertyAccessString(accessor, name) {
  function prepareSyntheticListenerFunctionName (line 6108) | function prepareSyntheticListenerFunctionName(name, phase) {
  function jitOnlyGuardedExpression (line 6111) | function jitOnlyGuardedExpression(expr) {
  function devOnlyGuardedExpression (line 6114) | function devOnlyGuardedExpression(expr) {
  function guardedExpression (line 6117) | function guardedExpression(guard, expr) {
  function wrapReference (line 6124) | function wrapReference(value) {
  function refsToArray (line 6128) | function refsToArray(refs, shouldForwardDeclare) {
  function compileFactoryFunction (line 6155) | function compileFactoryFunction(meta) {
  function createFactoryType (line 6234) | function createFactoryType(meta) {
  function injectDependencies (line 6238) | function injectDependencies(deps, target) {
  function compileInjectDependency (line 6241) | function compileInjectDependency(dep, target, index) {
  function createCtorDepsType (line 6275) | function createCtorDepsType(deps) {
  function createCtorDepType (line 6294) | function createCtorDepType(dep) {
  function isDelegatedFactoryMetadata (line 6313) | function isDelegatedFactoryMetadata(meta) {
  function isExpressionFactoryMetadata (line 6316) | function isExpressionFactoryMetadata(meta) {
  function getInjectFn (line 6319) | function getInjectFn(target) {
  function createR3ProviderExpression (line 6339) | function createR3ProviderExpression(expression, isForwardRef) {
  function compileInjectable (line 6342) | function compileInjectable(meta, resolveForwardRefs) {
  function createInjectableType (line 6422) | function createInjectableType(meta) {
  function delegateToFactory (line 6425) | function delegateToFactory(type, internalType, unwrapForwardRefs) {
  function createFactoryFunction (line 6449) | function createFactoryFunction(type) {
  function assertArrayOfStrings (line 6460) | function assertArrayOfStrings(identifier, value) {
  function assertInterpolationSymbols (line 6480) | function assertInterpolationSymbols(identifier, value) {
  function InterpolationConfig (line 6504) | function InterpolationConfig(start, end) {
  function StaticSymbol (line 6532) | function StaticSymbol(filePath, name, members) {
  function StaticSymbolCache (line 6549) | function StaticSymbolCache() {
  function sanitizeIdentifier (line 6578) | function sanitizeIdentifier(name) {
  function identifierName (line 6582) | function identifierName(compileIdentifier) {
  function identifierModuleUrl (line 6609) | function identifierModuleUrl(compileIdentifier) {
  function viewClassName (line 6617) | function viewClassName(compType, embeddedTemplateIndex) {
  function rendererTypeName (line 6620) | function rendererTypeName(compType) {
  function hostViewClassName (line 6623) | function hostViewClassName(compType) {
  function componentFactoryName (line 6626) | function componentFactoryName(compType) {
  function tokenName (line 6635) | function tokenName(token) {
  function tokenReference (line 6638) | function tokenReference(token) {
  function CompileStylesheetMetadata (line 6650) | function CompileStylesheetMetadata(_a) {
  function CompileTemplateMetadata (line 6662) | function CompileTemplateMetadata(_a) {
  function CompileDirectiveMetadata (line 6694) | function CompileDirectiveMetadata(_a) {
  function CompilePipeMetadata (line 6808) | function CompilePipeMetadata(_a) {
  function CompileShallowModuleMetadata (line 6825) | function CompileShallowModuleMetadata() {
  function CompileNgModuleMetadata (line 6833) | function CompileNgModuleMetadata(_a) {
  function TransitiveCompileNgModuleMetadata (line 6864) | function TransitiveCompileNgModuleMetadata() {
  function _normalizeArray (line 6920) | function _normalizeArray(obj) {
  function ProviderMeta (line 6924) | function ProviderMeta(token, _a) {
  function flatten (line 6936) | function flatten(list) {
  function jitSourceUrl (line 6942) | function jitSourceUrl(url) {
  function templateSourceUrl (line 6947) | function templateSourceUrl(ngModuleType, compMeta, templateMeta) {
  function sharedStylesheetJitUrl (line 6964) | function sharedStylesheetJitUrl(meta, id) {
  function ngModuleJitUrl (line 6969) | function ngModuleJitUrl(moduleMeta) {
  function templateJitUrl (line 6972) | function templateJitUrl(ngModuleType, compMeta) {
  function AbstractJsEmitterVisitor (line 6991) | function AbstractJsEmitterVisitor() {
  function getPolicy (line 7203) | function getPolicy() {
  function trustedScriptFromString (line 7230) | function trustedScriptFromString(script) {
  function newTrustedFunctionForJIT (line 7241) | function newTrustedFunctionForJIT() {
  function JitEvaluator (line 7284) | function JitEvaluator() {
  function JitEmitterVisitor (line 7359) | function JitEmitterVisitor(reflector) {
  function isUseStrictStatement (line 7416) | function isUseStrictStatement(statement) {
  function isWhitespace (line 7488) | function isWhitespace(code) {
  function isDigit (line 7491) | function isDigit(code) {
  function isAsciiLetter (line 7494) | function isAsciiLetter(code) {
  function isAsciiHexDigit (line 7497) | function isAsciiHexDigit(code) {
  function isNewLine (line 7500) | function isNewLine(code) {
  function isOctalDigit (line 7503) | function isOctalDigit(code) {
  function ParseLocation (line 7515) | function ParseLocation(file, offset, line, col) {
  function ParseSourceFile (line 7599) | function ParseSourceFile(content, url) {
  function ParseSourceSpan (line 7629) | function ParseSourceSpan(start, end, fullStart, details) {
  function ParseError (line 7647) | function ParseError(span, msg, level) {
  function typeSourceSpan (line 7664) | function typeSourceSpan(kind, type) {
  function r3JitTypeSourceSpan (line 7679) | function r3JitTypeSourceSpan(kind, typeName, sourceUrl) {
  function compileInjector (line 7692) | function compileInjector(meta) {
  function createInjectorType (line 7704) | function createInjectorType(meta) {
  function R3JitReflector (line 7722) | function R3JitReflector(context) {
  function compileNgModule (line 7772) | function compileNgModule(meta) {
  function compileNgModuleDeclarationExpression (line 7815) | function compileNgModuleDeclarationExpression(meta) {
  function createNgModuleType (line 7838) | function createNgModuleType(_a) {
  function generateSetNgModuleScopeCall (line 7851) | function generateSetNgModuleScopeCall(meta) {
  function tupleTypeOf (line 7882) | function tupleTypeOf(exp) {
  function compilePipeFromMetadata (line 7894) | function compilePipeFromMetadata(metadata) {
  function createPipeType (line 7906) | function createPipeType(metadata) {
  function ParserError (line 7921) | function ParserError(message, input, errLocation, ctxLocation) {
  function ParseSpan (line 7930) | function ParseSpan(start, end) {
  function AST (line 7940) | function AST(span,
  function ASTWithName (line 7955) | function ASTWithName(span, sourceSpan, nameSpan) {
  function Quote (line 7977) | function Quote(span, sourceSpan, prefix, uninterpretedExpression, locati...
  function EmptyExpr (line 7995) | function EmptyExpr() {
  function ImplicitReceiver (line 8006) | function ImplicitReceiver() {
  function ThisReceiver (line 8025) | function ThisReceiver() {
  function Chain (line 8040) | function Chain(span, sourceSpan, expressions) {
  function Conditional (line 8053) | function Conditional(span, sourceSpan, condition, trueExp, falseExp) {
  function PropertyRead (line 8068) | function PropertyRead(span, sourceSpan, nameSpan, receiver, name) {
  function PropertyWrite (line 8082) | function PropertyWrite(span, sourceSpan, nameSpan, receiver, name, value) {
  function SafePropertyRead (line 8097) | function SafePropertyRead(span, sourceSpan, nameSpan, receiver, name) {
  function KeyedRead (line 8111) | function KeyedRead(span, sourceSpan, receiver, key) {
  function SafeKeyedRead (line 8125) | function SafeKeyedRead(span, sourceSpan, receiver, key) {
  function KeyedWrite (line 8139) | function KeyedWrite(span, sourceSpan, receiver, key, value) {
  function BindingPipe (line 8154) | function BindingPipe(span, sourceSpan, exp, name, args, nameSpan) {
  function LiteralPrimitive (line 8169) | function LiteralPrimitive(span, sourceSpan, value) {
  function LiteralArray (line 8182) | function LiteralArray(span, sourceSpan, expressions) {
  function LiteralMap (line 8195) | function LiteralMap(span, sourceSpan, keys, values) {
  function Interpolation (line 8209) | function Interpolation(span, sourceSpan, strings, expressions) {
  function Binary (line 8223) | function Binary(span, sourceSpan, operation, left, right) {
  function Unary (line 8247) | function Unary(span, sourceSpan, operator, expr, binaryOp, binaryLeft, b...
  function PrefixNot (line 8276) | function PrefixNot(span, sourceSpan, expression) {
  function NonNullAssert (line 8289) | function NonNullAssert(span, sourceSpan, expression) {
  function MethodCall (line 8302) | function MethodCall(span, sourceSpan, nameSpan, receiver, name, args, ar...
  function SafeMethodCall (line 8318) | function SafeMethodCall(span, sourceSpan, nameSpan, receiver, name, args...
  function FunctionCall (line 8334) | function FunctionCall(span, sourceSpan, target, args) {
  function AbsoluteSourceSpan (line 8351) | function AbsoluteSourceSpan(start, end) {
  function ASTWithSource (line 8359) | function ASTWithSource(ast, source, location, absoluteOffset, errors) {
  function VariableBinding (line 8385) | function VariableBinding(sourceSpan, key, value) {
  function ExpressionBinding (line 8403) | function ExpressionBinding(sourceSpan, key, value) {
  function RecursiveAstVisitor (line 8411) | function RecursiveAstVisitor() {
  function AstTransformer (line 8514) | function AstTransformer() {
  function AstMemoryEfficientTransformer (line 8604) | function AstMemoryEfficientTransformer() {
  function ParsedProperty (line 8784) | function ParsedProperty(name, expression, type,
  function ParsedEvent (line 8807) | function ParsedEvent(name, targetOrPhase, type, handler, sourceSpan,
  function ParsedVariable (line 8824) | function ParsedVariable(name, value, sourceSpan, keySpan, valueSpan) {
  function BoundElementProperty (line 8834) | function BoundElementProperty(name, type, securityContext, value, unit, ...
  function Identifiers (line 8856) | function Identifiers() {
  function createTokenForReference (line 8956) | function createTokenForReference(reference) {
  function createTokenForExternalReference (line 8959) | function createTokenForExternalReference(reflector, reference) {
  function EventHandlerVars (line 8964) | function EventHandlerVars() {
  function ConvertActionBindingResult (line 8970) | function ConvertActionBindingResult(
  function convertActionBinding (line 9014) | function convertActionBinding(localResolver, implicitReceiver, action, b...
  function convertPropertyBindingBuiltins (line 9061) | function convertPropertyBindingBuiltins(converterFactory, ast) {
  function ConvertPropertyBindingResult (line 9065) | function ConvertPropertyBindingResult(stmts, currValExpr) {
  function convertPropertyBinding (line 9088) | function convertPropertyBinding(localResolver, implicitReceiver, express...
  function convertUpdateArguments (line 9124) | function convertUpdateArguments(localResolver, contextVariableExpression...
  function getStatementsFromVisitor (line 9149) | function getStatementsFromVisitor(visitor, bindingId) {
  function convertBuiltins (line 9156) | function convertBuiltins(converterFactory, ast) {
  function temporaryName (line 9160) | function temporaryName(bindingId, temporaryNumber) {
  function temporaryDeclaration (line 9163) | function temporaryDeclaration(bindingId, temporaryNumber) {
  function prependTemporaryDecls (line 9166) | function prependTemporaryDecls(temporaryCount, bindingId, statements) {
  function ensureStatementMode (line 9176) | function ensureStatementMode(mode, ast) {
  function ensureExpressionMode (line 9181) | function ensureExpressionMode(mode, ast) {
  function convertToStatementIfNeeded (line 9186) | function convertToStatementIfNeeded(mode, expr) {
  function _BuiltinAstConverter (line 9196) | function _BuiltinAstConverter(_converterFactory) {
  function _AstToIrVisitor (line 9219) | function _AstToIrVisitor(_localResolver, _implicitReceiver, bindingId, i...
  function flattenStatements (line 9799) | function flattenStatements(arg, output) {
  function DefaultLocalResolver (line 9808) | function DefaultLocalResolver(globals) {
  function createCurrValueExpr (line 9821) | function createCurrValueExpr(bindingId) {
  function createPreventDefaultVar (line 9824) | function createPreventDefaultVar(bindingId) {
  function convertStmtIntoExpression (line 9827) | function convertStmtIntoExpression(stmt) {
  function BuiltinFunctionCall (line 9838) | function BuiltinFunctionCall(span, sourceSpan, args, converter) {
  function ShadowCss (line 9978) | function ShadowCss() {
  function SafeSelector (line 10382) | function SafeSelector(selector) {
  function stripComments (line 10456) | function stripComments(input) {
  function extractCommentsWithHash (line 10460) | function extractCommentsWithHash(input) {
  function CssRule (line 10470) | function CssRule(selector, content) {
  function processRules (line 10476) | function processRules(input, ruleCallback) {
  function StringWithEscapedBlocks (line 10502) | function StringWithEscapedBlocks(escapedString, blocks) {
  function escapeBlocks (line 10508) | function escapeBlocks(input, charPairs, placeholder) {
  function combineHostContextSelectors (line 10576) | function combineHostContextSelectors(contextSelectors, otherSelectors) {
  function repeatGroups (line 10617) | function repeatGroups(groups, multiples) {
  function StylesCompileDependency (line 10637) | function StylesCompileDependency(name, moduleUrl, setValue) {
  function CompiledStylesheet (line 10645) | function CompiledStylesheet(outputCtx, stylesVar, dependencies, isShimme...
  function StyleCompiler (line 10655) | function StyleCompiler(_urlResolver) {
  function getStylesVarName (line 10700) | function getStylesVarName(component) {
  function AstPath (line 10733) | function AstPath(path, position) {
  function NodeWithI18n (line 10782) | function NodeWithI18n(sourceSpan, i18n) {
  function Text (line 10790) | function Text(value, sourceSpan, i18n) {
  function Expansion (line 10802) | function Expansion(switchValue, type, cases, sourceSpan, switchValueSour...
  function ExpansionCase (line 10816) | function ExpansionCase(value, expression, sourceSpan, valueSourceSpan, e...
  function Attribute (line 10830) | function Attribute(name, value, sourceSpan, keySpan, valueSpan, i18n) {
  function Element (line 10845) | function Element(name, attrs, children, sourceSpan, startSourceSpan, end...
  function Comment (line 10861) | function Comment(value, sourceSpan) {
  function visitAll$1 (line 10870) | function visitAll$1(visitor, nodes, context) {
  function RecursiveVisitor (line 10885) | function RecursiveVisitor() {
  function visit (line 10905) | function visit(children) {
  function spanOf (line 10914) | function spanOf(ast) {
  function findNode (line 10927) | function findNode(nodes, position) {
  function Token (line 13119) | function Token(type, parts, sourceSpan) {
  function TokenError (line 13128) | function TokenError(errorMsg, tokenType, span) {
  function TokenizeResult (line 13136) | function TokenizeResult(tokens, errors, nonNormalizedIcuExpressions) {
  function tokenize (line 13143) | function tokenize(source, url, getTagDefinition, options) {
  function _unexpectedCharacterErrorMsg (line 13150) | function _unexpectedCharacterErrorMsg(charCode) {
  function _unknownEntityErrorMsg (line 13154) | function _unknownEntityErrorMsg(entitySrc) {
  function _unparsableEntityErrorMsg (line 13157) | function _unparsableEntityErrorMsg(type, entityStr) {
  function _ControlFlowError (line 13166) | function _ControlFlowError(error) {
  function _Tokenizer (line 13178) | function _Tokenizer(_file, _getTagDefinition, options) {
  function isNotWhitespace (line 13748) | function isNotWhitespace(code) {
  function isNameEnd (line 13751) | function isNameEnd(code) {
  function isPrefixEnd (line 13756) | function isPrefixEnd(code) {
  function isDigitEntityEnd (line 13760) | function isDigitEntityEnd(code) {
  function isNamedEntityEnd (line 13763) | function isNamedEntityEnd(code) {
  function isExpansionCaseStart (line 13766) | function isExpansionCaseStart(peek) {
  function compareCharCodeCaseInsensitive (line 13769) | function compareCharCodeCaseInsensitive(code1, code2) {
  function toUpperCaseCharCode (line 13772) | function toUpperCaseCharCode(code) {
  function mergeTextTokens (line 13775) | function mergeTextTokens(srcTokens) {
  function PlainCharacterCursor (line 13792) | function PlainCharacterCursor(fileOrCursor, range) {
  function EscapedCharacterCursor (line 13890) | function EscapedCharacterCursor(fileOrCursor, range) {
  function CursorError (line 14029) | function CursorError(msg, cursor) {
  function TreeError (line 14038) | function TreeError(elementName, span, msg) {
  function ParseTreeResult (line 14049) | function ParseTreeResult(rootNodes, errors) {
  function Parser (line 14056) | function Parser(getTagDefinition) {
  function _TreeBuilder (line 14068) | function _TreeBuilder(tokens, getTagDefinition) {
  function lastOnStack (line 14366) | function lastOnStack(stack, element) {
  function HtmlParser (line 14372) | function HtmlParser() {
  function hasPreserveWhitespacesAttr (line 14395) | function hasPreserveWhitespacesAttr(attrs) {
  function replaceNgsp (line 14404) | function replaceNgsp(value) {
  function WhitespaceVisitor (line 14423) | function WhitespaceVisitor() {
  function removeWhitespaces (line 14456) | function removeWhitespaces(htmlAstWithErrors) {
  function visitAllWithSiblings (line 14459) | function visitAllWithSiblings(visitor, nodes) {
  function expandNodes (line 14496) | function expandNodes(nodes) {
  function ExpansionResult (line 14501) | function ExpansionResult(nodes, expanded, errors) {
  function ExpansionError (line 14510) | function ExpansionError(span, errorMsg) {
  function _Expander (line 14521) | function _Expander() {
  function _expandPluralForm (line 14548) | function _expandPluralForm(ast, errors) {
  function _expandDefaultForm (line 14561) | function _expandDefaultForm(ast, errors) {
  function TextAst (line 14587) | function TextAst(value, ngContentIndex, sourceSpan) {
  function BoundTextAst (line 14601) | function BoundTextAst(value, ngContentIndex, sourceSpan) {
  function AttrAst (line 14615) | function AttrAst(name, value, sourceSpan) {
  function BoundElementPropertyAst (line 14637) | function BoundElementPropertyAst(name, type, securityContext, value, uni...
  function BoundEventAst (line 14660) | function BoundEventAst(name, target, phase, handler, sourceSpan, handler...
  function ReferenceAst (line 14693) | function ReferenceAst(name, value, originalValue, sourceSpan) {
  function VariableAst (line 14708) | function VariableAst(name, value, sourceSpan, valueSpan) {
  function ElementAst (line 14726) | function ElementAst(name, attrs, inputs, outputs, references, directives...
  function EmbeddedTemplateAst (line 14750) | function EmbeddedTemplateAst(attrs, outputs, references, variables, dire...
  function BoundDirectivePropertyAst (line 14772) | function BoundDirectivePropertyAst(directiveName, templateName, value, s...
  function DirectiveAst (line 14787) | function DirectiveAst(directive, inputs, hostProperties, hostEvents, con...
  function ProviderAst (line 14804) | function ProviderAst(token, multiProvider, eager, providers, providerTyp...
  function NgContentAst (line 14831) | function NgContentAst(index, ngContentIndex, sourceSpan) {
  function NullTemplateVisitor (line 14846) | function NullTemplateVisitor() {
  function RecursiveTemplateAstVisitor (line 14868) | function RecursiveTemplateAstVisitor() {
  function visit (line 14903) | function visit(children) {
  function templateVisitAll (line 14915) | function templateVisitAll(visitor, asts, context) {
  function ProviderError (line 14932) | function ProviderError(message, span) {
  function ProviderViewContext (line 14938) | function ProviderViewContext(reflector, component) {
  function ProviderElementContext (line 14954) | function ProviderElementContext(viewContext, _parent, _isViewRoot, _dire...
  function NgModuleProviderAnalyzer (line 15210) | function NgModuleProviderAnalyzer(reflector, ngModule, extraProviders, s...
  function _transformProvider (line 15316) | function _transformProvider(provider, _a) {
  function _transformProviderAst (line 15328) | function _transformProviderAst(provider, _a) {
  function _resolveProvidersFromDirectives (line 15332) | function _resolveProvidersFromDirectives(directives, sourceSpan, targetE...
  function _resolveProviders (line 15346) | function _resolveProviders(providers, providerType, eager, sourceSpan, t...
  function _getViewQueries (line 15369) | function _getViewQueries(component) {
  function _getContentQueries (line 15378) | function _getContentQueries(contentQueryStartId, directives) {
  function _addQueryToTokenMap (line 15388) | function _addQueryToTokenMap(map, query) {
  function StyleWithImports (line 15407) | function StyleWithImports(style, styleUrls) {
  function isStyleUrlResolvable (line 15413) | function isStyleUrlResolvable(url) {
  function extractStyleUrls (line 15423) | function extractStyleUrls(resolver, baseUrl, cssText) {
  function BindingParser (line 15456) | function BindingParser(_exprParser, _interpolationConfig, _schemaRegistr...
  function PipeCollector (line 15913) | function PipeCollector() {
  function isAnimationLabel (line 15926) | function isAnimationLabel(name) {
  function calcPossibleSecurityContexts (line 15929) | function calcPossibleSecurityContexts(registry, selector, propName, isAt...
  function moveParseSourceSpan (line 15947) | function moveParseSourceSpan(sourceSpan, absoluteSpan) {
  function preparseElement (line 15970) | function preparseElement(ast) {
  function PreparsedElement (line 16022) | function PreparsedElement(type, selectAttr, hrefAttr, nonBindable, proje...
  function normalizeNgContentSelect (line 16031) | function normalizeNgContentSelect(selectAttr) {
  function TEXT_CSS_SELECTOR (line 16062) | function TEXT_CSS_SELECTOR() {
  function TemplateParseError (line 16070) | function TemplateParseError(message, span, level) {
  function TemplateParseResult (line 16076) | function TemplateParseResult(templateAst, usedPipes, errors) {
  function TemplateParser (line 16084) | function TemplateParser(_config, _reflector, _exprParser, _schemaRegistr...
  function TemplateParseVisitor (line 16196) | function TemplateParseVisitor(reflector, config, providerViewContext, di...
  function NonBindableVisitor (line 16616) | function NonBindableVisitor() {
  function ElementOrDirectiveRef (line 16660) | function ElementOrDirectiveRef(name, value, sourceSpan) {
  function splitExportAs (line 16672) | function splitExportAs(exportAs) {
  function splitClasses (line 16675) | function splitClasses(classAttrValue) {
  function ElementContext (line 16679) | function ElementContext(isTemplateElement, _ngContentIndexMatcher, _wild...
  function createElementCssSelector (line 16716) | function createElementCssSelector(elementName, attributes) {
  function _isEmptyTextNode (line 16734) | function _isEmptyTextNode(node) {
  function removeSummaryDuplicates (line 16737) | function removeSummaryDuplicates(items) {
  function isEmptyExpression (line 16746) | function isEmptyExpression(ast) {
  function parse (line 16768) | function parse(value) {
  function stripUnnecessaryQuotes (line 16835) | function stripUnnecessaryQuotes(value) {
  function hyphenate (line 16848) | function hyphenate(value) {
  function StylingBuilder (line 16936) | function StylingBuilder(_directiveExpr) {
  function registerIntoMap (line 17267) | function registerIntoMap(map, key) {
  function parseProperty (line 17272) | function parseProperty(name) {
  function getClassMapInterpolationExpression (line 17292) | function getClassMapInterpolationExpression(interpolation) {
  function getStyleMapInterpolationExpression (line 17320) | function getStyleMapInterpolationExpression(interpolation) {
  function getStylePropInterpolationExpression (line 17348) | function getStylePropInterpolationExpression(interpolation) {
  function isCssCustomProperty (line 17376) | function isCssCustomProperty(name) {
  function Lexer (line 17399) | function Lexer() {
  function Token (line 17414) | function Token(index, end, type, numValue, strValue) {
  function newCharacterToken (line 17487) | function newCharacterToken(index, end, code) {
  function newIdentifierToken (line 17490) | function newIdentifierToken(index, end, text) {
  function newPrivateIdentifierToken (line 17493) | function newPrivateIdentifierToken(index, end, text) {
  function newKeywordToken (line 17496) | function newKeywordToken(index, end, text) {
  function newOperatorToken (line 17499) | function newOperatorToken(index, end, text) {
  function newStringToken (line 17502) | function newStringToken(index, end, text) {
  function newNumberToken (line 17505) | function newNumberToken(index, end, n) {
  function newErrorToken (line 17508) | function newErrorToken(index, end, message) {
  function _Scanner (line 17513) | function _Scanner(input) {
  function isIdentifierStart (line 17750) | function isIdentifierStart(code) {
  function isIdentifier (line 17754) | function isIdentifier(input) {
  function isIdentifierPart (line 17768) | function isIdentifierPart(code) {
  function isExponentStart (line 17772) | function isExponentStart(code) {
  function isExponentSign (line 17775) | function isExponentSign(code) {
  function isQuote (line 17778) | function isQuote(code) {
  function unescape (line 17781) | function unescape(code) {
  function parseIntAutoRadix (line 17797) | function parseIntAutoRadix(text) {
  function SplitInterpolation (line 17806) | function SplitInterpolation(strings, expressions, offsets) {
  function TemplateBindingParseResult (line 17814) | function TemplateBindingParseResult(templateBindings, warnings, errors) {
  function Parser (line 17822) | function Parser(_lexer) {
  function IvyParser (line 18142) | function IvyParser() {
  function _ParseAST (line 18163) | function _ParseAST(input, location, absoluteOffset, tokens, inputLength,...
  function SimpleExpressionChecker (line 19057) | function SimpleExpressionChecker() {
  function IvySimpleExpressionChecker (line 19104) | function IvySimpleExpressionChecker() {
  function mapEntry (line 19122) | function mapEntry(key, value) {
  function mapLiteral (line 19125) | function mapLiteral(obj, quoted) {
  function SECURITY_SCHEMA (line 19146) | function SECURITY_SCHEMA() {
  function registerContext (line 19181) | function registerContext(ctx, specs) {
  function ElementSchemaRegistry (line 19206) | function ElementSchemaRegistry() {
  function DomElementSchemaRegistry (line 19439) | function DomElementSchemaRegistry() {
  function _isPixelDimensionStyle (line 19597) | function _isPixelDimensionStyle(prop) {
  function isTrustedTypesSink (line 19666) | function isTrustedTypesSink(tagName, propName) {
  function htmlAstToRender3Ast (line 19696) | function htmlAstToRender3Ast(htmlNodes, bindingParser, options) {
  function HtmlAstToIvyAst (line 19714) | function HtmlAstToIvyAst(bindingParser, options) {
  function createKeySpan (line 19934) | function createKeySpan(srcSpan, prefix, identifier) {
  function NonBindableVisitor (line 20060) | function NonBindableVisitor() {
  function normalizeAttributeName (line 20094) | function normalizeAttributeName(attrName) {
  function addEvents (line 20097) | function addEvents(events, boundEvents) {
  function isEmptyTextNode (line 20100) | function isEmptyTextNode(node) {
  function isCommentNode (line 20103) | function isCommentNode(node) {
  function textContents (line 20106) | function textContents(node) {
  function setupRegistry (line 20123) | function setupRegistry() {
  function I18nContext (line 20142) | function I18nContext(index, ref, level, templateIndex, meta, registry) {
  function wrap (line 20290) | function wrap(symbol, index, contextId, closed) {
  function wrapTag (line 20294) | function wrapTag(symbol, _a, closed) {
  function findTemplateFn (line 20299) | function findTemplateFn(ctx, templateIndex) {
  function serializePlaceholderValue (line 20303) | function serializePlaceholderValue(value) {
  function IcuSerializerVisitor (line 20334) | function IcuSerializerVisitor() {
  function serializeIcuNode (line 20367) | function serializeIcuNode(icu) {
  function PlaceholderRegistry (line 20416) | function PlaceholderRegistry() {
  function createI18nMessageFactory (line 20491) | function createI18nMessageFactory(interpolationConfig) {
  function noopVisitNodeFn (line 20495) | function noopVisitNodeFn(_html, i18n) {
  function _I18nVisitor (line 20499) | function _I18nVisitor(_expressionParser, _interpolationConfig) {
  function reusePreviousSourceSpans (line 20655) | function reusePreviousSourceSpans(nodes, previousI18n) {
  function assertSingleContainerMessage (line 20676) | function assertSingleContainerMessage(message) {
  function assertEquivalentNodes (line 20686) | function assertEquivalentNodes(previousNodes, nodes) {
  function getOffsetSourceSpan (line 20697) | function getOffsetSourceSpan(sourceSpan, _b) {
  function extractPlaceholderName (line 20702) | function extractPlaceholderName(input) {
  function I18nError (line 20711) | function I18nError(span, msg) {
  function I18nMetaVisitor (line 20736) | function I18nMetaVisitor(interpolationConfig, keepI18nAttrs, enableI18nL...
  function parseI18nMeta (line 20929) | function parseI18nMeta(meta) {
  function i18nMetaToJSDoc (line 20949) | function i18nMetaToJSDoc(meta) {
  function createGoogleGetMsgStatements (line 20962) | function createGoogleGetMsgStatements(variable$1, message, closureVar, p...
  function GetMsgSerializerVisitor (line 20987) | function GetMsgSerializerVisitor() {
  function serializeI18nMessageForGetMsg (line 21017) | function serializeI18nMessageForGetMsg(message) {
  function createLocalizeStatements (line 21021) | function createLocalizeStatements(variable, message, params) {
  function LocalizeSerializerVisitor (line 21035) | function LocalizeSerializerVisitor() {
  function serializeI18nMessageForLocalize (line 21082) | function serializeI18nMessageForLocalize(message) {
  function getSourceSpan (line 21087) | function getSourceSpan(message) {
  function processMessagePieces (line 21101) | function processMessagePieces(pieces) {
  function createEmptyMessagePart (line 21127) | function createEmptyMessagePart(location) {
  function renderFlagCheckIfStmt (line 21141) | function renderFlagCheckIfStmt(flags, statements) {
  function prepareEventListenerParameters (line 21144) | function prepareEventListenerParameters(eventAst, handlerName, scope) {
  function createComponentDefConsts (line 21179) | function createComponentDefConsts() {
  function TemplateDefinitionBuilder (line 21187) | function TemplateDefinitionBuilder(constantPool, parentBindingScope, lev...
  function addAttrExpr (line 22233) | function addAttrExpr(key, value) {
  function ValueConverter (line 22340) | function ValueConverter(constantPool, allocateSlot, allocatePureFunction...
  function pipeBindingCallInfo (line 22401) | function pipeBindingCallInfo(args) {
  function pureFunctionCallInfo (line 22412) | function pureFunctionCallInfo(args) {
  function instruction (line 22419) | function instruction(span, reference, params) {
  function generateNextContextExpr (line 22423) | function generateNextContextExpr(relativeLevelDiff) {
  function getLiteralFactory (line 22427) | function getLiteralFactory(constantPool, literal$1, allocateSlots) {
  function getAttributeNameLiterals (line 22450) | function getAttributeNameLiterals(name) {
  function BindingScope (line 22463) | function BindingScope(bindingLevel, parent, globals) {
  function createCssSelector (line 22690) | function createCssSelector(elementName, attributes) {
  function getNgProjectAsLiteral (line 22709) | function getNgProjectAsLiteral(attribute) {
  function getPropertyInterpolationExpression (line 22719) | function getPropertyInterpolationExpression(interpolation) {
  function getAttributeInterpolationExpression (line 22747) | function getAttributeInterpolationExpression(interpolation) {
  function getTextInterpolationExpression (line 22773) | function getTextInterpolationExpression(interpolation) {
  function parseTemplate (line 22804) | function parseTemplate(template, templateUrl, options) {
  function makeBindingParser (line 22880) | function makeBindingParser(interpolationConfig) {
  function resolveSanitizationFn (line 22884) | function resolveSanitizationFn(context, isAttribute) {
  function trustedConstAttribute (line 22903) | function trustedConstAttribute(tagName, attr) {
  function isSingleElementTemplate (line 22920) | function isSingleElementTemplate(children) {
  function isTextNode (line 22923) | function isTextNode(node) {
  function hasTextChildrenOnly (line 22926) | function hasTextChildrenOnly(children) {
  function getTranslationDeclStmts (line 22957) | function getTranslationDeclStmts(message, variable, closureVar, params, ...
  function createClosureModeGuard (line 22976) | function createClosureModeGuard() {
  function baseDirectiveFields (line 22985) | function baseDirectiveFields(meta, constantPool, bindingParser) {
  function addFeatures (line 23015) | function addFeatures(definitionMap, meta) {
  function compileDirectiveFromMetadata (line 23043) | function compileDirectiveFromMetadata(meta, constantPool, bindingParser) {
  function compileComponentFromMetadata (line 23053) | function compileComponentFromMetadata(meta, constantPool, bindingParser) {
  function createComponentType (line 23168) | function createComponentType(meta) {
  function compileDeclarationList (line 23177) | function compileDeclarationList(list, mode) {
  function prepareQueryParams (line 23191) | function prepareQueryParams(query, constantPool) {
  function toQueryFlags (line 23202) | function toQueryFlags(query) {
  function convertAttributesToExpressions (line 23207) | function convertAttributesToExpressions(attributes) {
  function createContentQueriesFunction (line 23227) | function createContentQueriesFunction(queries, constantPool, name) {
  function stringAsType (line 23265) | function stringAsType(str) {
  function stringMapAsType (line 23268) | function stringMapAsType(map) {
  function stringArrayAsType (line 23279) | function stringArrayAsType(arr) {
  function createDirectiveTypeParams (line 23283) | function createDirectiveTypeParams(meta) {
  function createDirectiveType (line 23300) | function createDirectiveType(meta) {
  function createViewQueriesFunction (line 23305) | function createViewQueriesFunction(viewQueries, constantPool, name) {
  function createHostBindingsFunction (line 23329) | function createHostBindingsFunction(hostBindingsMetadata, typeSourceSpan...
  function bindingFn (line 23475) | function bindingFn(implicit, value) {
  function convertStylingCall (line 23478) | function convertStylingCall(call, bindingContext, bindingFn) {
  function getBindingNameAndInstruction (line 23481) | function getBindingNameAndInstruction(binding) {
  function createHostListeners (line 23504) | function createHostListeners(eventBindings, name) {
  function metadataAsSummary (line 23530) | function metadataAsSummary(meta) {
  function parseHostBindings (line 23542) | function parseHostBindings(host) {
  function verifyHostBindings (line 23614) | function verifyHostBindings(bindings, sourceSpan) {
  function compileStyles (line 23623) | function compileStyles(styles, selector, hostSelector) {
  function ResourceLoader (line 23645) | function ResourceLoader() {
  function CompilerFacadeImpl (line 23651) | function CompilerFacadeImpl(jitEvaluator) {
  function convertToR3QueryMetadata (line 23832) | function convertToR3QueryMetadata(facade) {
  function convertQueryDeclarationToMetadata (line 23836) | function convertQueryDeclarationToMetadata(declaration) {
  function convertDirectiveFacadeToMetadata (line 23849) | function convertDirectiveFacadeToMetadata(facade) {
  function convertDeclareDirectiveFacadeToMetadata (line 23873) | function convertDeclareDirectiveFacadeToMetadata(declaration, typeSource...
  function convertHostDeclarationToMetadata (line 23896) | function convertHostDeclarationToMetadata(host) {
  function convertOpaqueValuesToExpressions (line 23909) | function convertOpaqueValuesToExpressions(obj) {
  function convertDeclareComponentFacadeToMetadata (line 23927) | function convertDeclareComponentFacadeToMetadata(declaration, typeSource...
  function convertUsedDirectiveDeclarationToMetadata (line 23937) | function convertUsedDirectiveDeclarationToMetadata(declaration) {
  function convertUsedPipesToMetadata (line 23947) | function convertUsedPipesToMetadata(declaredPipes) {
  function parseJitTemplate (line 23969) | function parseJitTemplate(template, typeName, sourceMapUrl, preserveWhit...
  function convertToProviderExpression (line 23987) | function convertToProviderExpression(obj, property) {
  function wrapExpression (line 23995) | function wrapExpression(obj, property) {
  function computeProvidedIn (line 24003) | function computeProvidedIn(providedIn) {
  function convertR3DependencyMetadataArray (line 24010) | function convertR3DependencyMetadataArray(facades) {
  function convertR3DependencyMetadata (line 24013) | function convertR3DependencyMetadata(facade) {
  function convertR3DeclareDependencyMetadata (line 24021) | function convertR3DeclareDependencyMetadata(facade) {
  function createR3DependencyMetadata (line 24027) | function createR3DependencyMetadata(token, isAttributeDep, host, optiona...
  function extractHostBindings (line 24034) | function extractHostBindings(propMetadata, sourceSpan, host) {
  function isHostBinding (line 24064) | function isHostBinding(value) {
  function isHostListener (line 24067) | function isHostListener(value) {
  function isInput (line 24070) | function isInput(value) {
  function isOutput (line 24073) | function isOutput(value) {
  function parseInputOutputs (line 24076) | function parseInputOutputs(values) {
  function convertDeclarePipeFacadeToMetadata (line 24083) | function convertDeclarePipeFacadeToMetadata(declaration) {
  function convertDeclareInjectorFacadeToMetadata (line 24095) | function convertDeclareInjectorFacadeToMetadata(declaration) {
  function publishFacade (line 24107) | function publishFacade(global) {
  function CompilerConfig (line 24129) | function CompilerConfig(_a) {
  function preserveWhitespacesDefault (line 24140) | function preserveWhitespacesDefault(preserveWhitespacesOption, defaultSe...
  function DirectiveNormalizer (line 24146) | function DirectiveNormalizer(_resourceLoader, _urlResolver, _htmlParser,...
  function TemplatePreparseVisitor (line 24321) | function TemplatePreparseVisitor() {
  function DirectiveResolver (line 24398) | function DirectiveResolver(_reflector) {
  function isDirectiveMetadata (line 24536) | function isDirectiveMetadata(type) {
  function findLast (line 24539) | function findLast(arr, condition) {
  function extractMessages (line 24557) | function extractMessages(nodes, interpolationConfig, implicitTags, impli...
  function mergeTranslations (line 24561) | function mergeTranslations(nodes, translations, interpolationConfig, imp...
  function ExtractionResult (line 24566) | function ExtractionResult(messages, errors) {
  function _Visitor (line 24585) | function _Visitor(_implicitTags, _implicitAttrs) {
  function _isOpeningComment (line 24927) | function _isOpeningComment(n) {
  function _isClosingComment (line 24930) | function _isClosingComment(n) {
  function _getI18nAttr (line 24933) | function _getI18nAttr(p) {
  function _parseMessageMeta (line 24936) | function _parseMessageMeta(i18n) {
  function XmlTagDefinition (line 24956) | function XmlTagDefinition() {
  function getXmlTagDefinition (line 24975) | function getXmlTagDefinition(tagName) {
  function XmlParser (line 24981) | function XmlParser() {
  function Xliff (line 25008) | function Xliff() {
  function _WriteVisitor (line 25067) | function _WriteVisitor() {
  function XliffParser (line 25113) | function XliffParser() {
  function XmlToI18n (line 25189) | function XmlToI18n() {
  function getCtypeForTag (line 25239) | function getCtypeForTag(tag) {
  function Xliff2 (line 25264) | function Xliff2() {
  function _WriteVisitor (line 25322) | function _WriteVisitor() {
  function Xliff2Parser (line 25393) | function Xliff2Parser() {
  function XmlToI18n (line 25474) | function XmlToI18n() {
  function getTypeForTag (line 25542) | function getTypeForTag(tag) {
  function Xtb (line 25563) | function Xtb() {
  function createLazyProperty (line 25602) | function createLazyProperty(messages, id, valueFn) {
  function XtbParser (line 25618) | function XtbParser() {
  function XmlToI18n (line 25684) | function XmlToI18n() {
  function TranslationBundle (line 25738) | function TranslationBundle(_i18nNodesByMsgId, locale, digest, mapperFact...
  function I18nToHtmlVisitor (line 25767) | function I18nToHtmlVisitor(_i18nNodesByMsgId, _locale, _digest, _mapperF...
  function I18NHtmlParser (line 25897) | function I18NHtmlParser(_htmlParser, translations, translationsFormat, m...
  function createSerializer (line 25921) | function createSerializer(format) {
  function convertValueToOutputAst (line 25946) | function convertValueToOutputAst(ctx, value, type) {
  function _ValueOutputAstTransformer (line 25951) | function _ValueOutputAstTransformer(ctx) {
  function mapEntry$1 (line 25996) | function mapEntry$1(key, value) {
  function InjectableCompiler (line 26000) | function InjectableCompiler(reflector, alwaysGenerateDef) {
  function ngfactoryFilePath (line 26119) | function ngfactoryFilePath(filePath, forceSourceFile) {
  function stripGeneratedFileSuffix (line 26124) | function stripGeneratedFileSuffix(filePath) {
  function isGeneratedFile (line 26127) | function isGeneratedFile(filePath) {
  function splitTypescriptSuffix (line 26130) | function splitTypescriptSuffix(path, forceSourceFile) {
  function normalizeGenFileSuffix (line 26141) | function normalizeGenFileSuffix(srcFileSuffix) {
  function summaryFileName (line 26144) | function summaryFileName(fileName) {
  function summaryForJitFileName (line 26148) | function summaryForJitFileName(fileName, forceSourceFile) {
  function stripSummaryForJitFileSuffix (line 26153) | function stripSummaryForJitFileSuffix(filePath) {
  function summaryForJitName (line 26156) | function summaryForJitName(symbolName) {
  function stripSummaryForJitNameSuffix (line 26159) | function stripSummaryForJitNameSuffix(symbolName) {
  function isLoweredSymbol (line 26163) | function isLoweredSymbol(name) {
  function createLoweredSymbol (line 26166) | function createLoweredSymbol(id) {
  function hasLifecycleHook (line 26193) | function hasLifecycleHook(reflector, hook, token) {
  function getAllLifecycleHooks (line 26196) | function getAllLifecycleHooks(reflector, token) {
  function getHookName (line 26199) | function getHookName(hook) {
  function getMissingNgModuleMetadataErrorData (line 26229) | function getMissingNgModuleMetadataErrorData(error) {
  function CompileMetadataResolver (line 26241) | function CompileMetadataResolver(_config, _htmlParser, _ngModuleResolver...
  function flattenArray (line 27259) | function flattenArray(tree, out) {
  function dedupeArray (line 27274) | function dedupeArray(array) {
  function flattenAndDedupeArray (line 27280) | function flattenAndDedupeArray(tree) {
  function isValidType (line 27283) | function isValidType(value) {
  function extractIdentifiers (line 27286) | function extractIdentifiers(value, targetIdentifiers) {
  function _CompileValueConverter (line 27291) | function _CompileValueConverter() {
  function stringifyType (line 27299) | function stringifyType(type) {
  function componentStillLoadingError (line 27310) | function componentStillLoadingError(compType) {
  function providerDef (line 27323) | function providerDef(ctx, providerAst) {
  function multiProviderDef (line 27352) | function multiProviderDef(ctx, flags, providers) {
  function singleProviderDef (line 27389) | function singleProviderDef(ctx, flags, providerType, providerMeta) {
  function tokenExpr (line 27422) | function tokenExpr(ctx, tokenMeta) {
  function depDef (line 27426) | function depDef(ctx, dep) {
  function lifecycleHookToNodeFlag (line 27445) | function lifecycleHookToNodeFlag(lifecycleHook) {
  function componentFactoryResolverProviderDef (line 27475) | function componentFactoryResolverProviderDef(reflector, ctx, flags, entr...
  function NgModuleCompileResult (line 27503) | function NgModuleCompileResult(ngModuleFactoryVar) {
  function NgModuleCompiler (line 27510) | function NgModuleCompiler(reflector) {
  function NgModuleResolver (line 27568) | function NgModuleResolver(_reflector) {
  function debugOutputAstAsTypeScript (line 27590) | function debugOutputAstAsTypeScript(ast) {
  function TypeScriptEmitter (line 27611) | function TypeScriptEmitter() {
  function _TsEmitterVisitor (line 27648) | function _TsEmitterVisitor(referenceFilter, importFilter) {
  function PipeResolver (line 28008) | function PipeResolver(_reflector) {
  function TypeCheckCompiler (line 28039) | function TypeCheckCompiler(options, reflector) {
  function TypeCheckLocalResolver (line 28068) | function TypeCheckLocalResolver() {
  function ViewBuilder (line 28084) | function ViewBuilder(options, reflector, externalReferenceVars, parent, ...
  function ViewCompileResult (line 28369) | function ViewCompileResult(viewClassVar, rendererTypeVar) {
  function ViewCompiler (line 28376) | function ViewCompiler(_reflector) {
  function ViewBuilder (line 28418) | function ViewBuilder(reflector, outputCtx, parent, component, embeddedVi...
  function createUpdateStatements (line 29030) | function createUpdateStatements(nodeIndex, sourceSpan, expressions, allo...
  function needsAdditionalRootNode (line 29089) | function needsAdditionalRootNode(astNodes) {
  function elementBindingDef (line 29102) | function elementBindingDef(inputAst, dirAst) {
  function fixedAttrsDef (line 29137) | function fixedAttrsDef(elementAst) {
  function mergeAttributeValue (line 29153) | function mergeAttributeValue(attrName, attrValue1, attrValue2) {
  function callCheckStmt (line 29161) | function callCheckStmt(nodeIndex, exprs) {
  function callUnwrapValue (line 29169) | function callUnwrapValue(nodeIndex, bindingIdx, expr) {
  function elementEventNameAndTarget (line 29174) | function elementEventNameAndTarget(eventAst, dirAst) {
  function calcQueryFlags (line 29185) | function calcQueryFlags(query) {
  function elementEventFullName (line 29200) | function elementEventFullName(target, name) {
  function MessageBundle (line 29208) | function MessageBundle(_htmlParser, _implicitTags, _implicitAttrs, _loca...
  function MapPlaceholderNames (line 29267) | function MapPlaceholderNames() {
  function GeneratedFile (line 29298) | function GeneratedFile(srcFileUrl, genFileUrl, sourceOrStmts) {
  function toTypeScript (line 29326) | function toTypeScript(file, preamble) {
  function listLazyRoutes (line 29334) | function listLazyRoutes(moduleMeta, reflector) {
  function _collectLoadChildren (line 29367) | function _collectLoadChildren(routes, target) {
  function parseLazyRoute (line 29396) | function parseLazyRoute(route, reflector, module) {
  function ResolvedStaticSymbol (line 29407) | function ResolvedStaticSymbol(symbol, metadata) {
  function StaticSymbolResolver (line 29423) | function StaticSymbolResolver(host, staticSymbolCache, summaryResolver, ...
  function ReferenceTransformer (line 29774) | function ReferenceTransformer() {
  function unescapeIdentifier (line 29913) | function unescapeIdentifier(identifier) {
  function unwrapResolvedMetadata (line 29916) | function unwrapResolvedMetadata(metadata) {
  function serializeSummaries (line 29923) | function serializeSummaries(srcFileName, forJitCtx, summaryResolver, sym...
  function deserializeSummaries (line 29951) | function deserializeSummaries(symbolCache, summaryResolver, libraryFileN...
  function createForJitStub (line 29955) | function createForJitStub(outputCtx, reference) {
  function createSummaryForJitFunction (line 29958) | function createSummaryForJitFunction(outputCtx, reference, value) {
  function ToJsonSerializer (line 29966) | function ToJsonSerializer(symbolResolver, summaryResolver, srcFileName) {
  function ForJitSerializer (line 30192) | function ForJitSerializer(outputCtx, symbolResolver, summaryResolver) {
  function Transformer (line 30312) | function Transformer() {
  function FromJsonDeserializer (line 30341) | function FromJsonDeserializer(symbolCache, summaryResolver) {
  function isCall (line 30378) | function isCall(metadata) {
  function isFunctionCall (line 30381) | function isFunctionCall(metadata) {
  function isMethodCallOnVariable (line 30384) | function isMethodCallOnVariable(metadata) {
  function AotCompiler (line 30390) | function AotCompiler(_config, _options, _host, reflector, _metadataResol...
  function visitLazyRoute (line 30879) | function visitLazyRoute(symbol, seenRoutes, allLazyRoutes) {
  function _createEmptyStub (line 30909) | function _createEmptyStub(outputCtx) {
  function _resolveStyleStatements (line 30915) | function _resolveStyleStatements(symbolResolver, compileResult, needsShi...
  function _stylesModuleUrl (line 30920) | function _stylesModuleUrl(stylesheetUrl, shim, suffix) {
  function analyzeNgModules (line 30923) | function analyzeNgModules(fileNames, host, staticSymbolResolver, metadat...
  function analyzeAndValidateNgModules (line 30927) | function analyzeAndValidateNgModules(fileNames, host, staticSymbolResolv...
  function validateAnalyzedModules (line 30930) | function validateAnalyzedModules(analyzedModules) {
  function _analyzeFilesIncludingNonProgramFiles (line 30940) | function _analyzeFilesIncludingNonProgramFiles(fileNames, host, staticSy...
  function analyzeFile (line 30957) | function analyzeFile(host, staticSymbolResolver, metadataResolver, fileN...
  function analyzeFileForInjectables (line 31032) | function analyzeFileForInjectables(host, staticSymbolResolver, metadataR...
  function isValueExportingNonSourceFile (line 31060) | function isValueExportingNonSourceFile(host, metadata) {
  function mergeAnalyzedFiles (line 31084) | function mergeAnalyzedFiles(analyzedFiles) {
  function mergeAndValidateNgFiles (line 31110) | function mergeAndValidateNgFiles(files) {
  function indentStr (line 31115) | function indentStr(level) {
  function formatChain (line 31123) | function formatChain(chain, indent) {
  function formattedError (line 31151) | function formattedError(chain) {
  function isFormattedError (line 31159) | function isFormattedError(error) {
  function shouldIgnore (line 31174) | function shouldIgnore(value) {
  function StaticReflector (line 31182) | function StaticReflector(summaryResolver, symbolResolver, knownMetadataC...
  function simplifyInContext (line 31553) | function simplifyInContext(context, value, depth, references) {
  function metadataError (line 31961) | function metadataError(message, summary, advise, position, symbol, conte...
  function isMetadataError (line 31978) | function isMetadataError(error) {
  function expandedMessage (line 31988) | function expandedMessage(message, context) {
  function messageAdvise (line 32019) | function messageAdvise(message, context) {
  function errorSummary (line 32038) | function errorSummary(error) {
  function mapStringMap (line 32067) | function mapStringMap(input, transform) {
  function isPrimitive (line 32084) | function isPrimitive(o) {
  function BindingScope (line 32088) | function BindingScope() {
  function PopulatedScope (line 32108) | function PopulatedScope(bindings) {
  function formatMetadataMessageChain (line 32118) | function formatMetadataMessageChain(chain, advise) {
  function formatMetadataError (line 32128) | function formatMetadataError(e, context) {
  function AotSummaryResolver (line 32152) | function AotSummaryResolver(host, staticSymbolCache) {
  function createAotUrlResolver (line 32245) | function createAotUrlResolver(host) {
  function createAotCompiler (line 32259) | function createAotCompiler(compilerHost, options, errorCollector) {
  function SummaryResolver (line 32294) | function SummaryResolver() {
  function JitSummaryResolver (line 32299) | function JitSummaryResolver() {
  function interpretStatements (line 32329) | function interpretStatements(statements, reflector) {
  function _executeFunctionStatements (line 32339) | function _executeFunctionStatements(varNames, varValues, statements, ctx...
  function _ExecutionContext (line 32348) | function _ExecutionContext(parent, instance, className, vars) {
  function ReturnValue (line 32361) | function ReturnValue(value) {
  function createDynamicClass (line 32366) | function createDynamicClass(_classStmt, _ctx, _visitor) {
  function StatementInterpreter (line 32413) | function StatementInterpreter(reflector) {
  function _declareFn (line 32705) | function _declareFn(varNames, statements, ctx, visitor) {
  function JitCompiler (line 32734) | function JitCompiler(_metadataResolver, _templateParser, _styleCompiler,...
  function CompiledTemplate (line 32985) | function CompiledTemplate(isHost, compType, compMeta, ngModule, directiv...
  function assertComponent (line 33004) | function assertComponent(meta) {
  function createOutputContext (line 33009) | function createOutputContext() {
  function CompileReflector (line 33025) | function CompileReflector() {
  function createUrlResolverWithoutPackagePrefix (line 33040) | function createUrlResolverWithoutPackagePrefix() {
  function createOfflineCompileUrlResolver (line 33043) | function createOfflineCompileUrlResolver() {
  function UrlResolverImpl (line 33047) | function UrlResolverImpl(_packagePrefix) {
  function getUrlScheme (line 33080) | function getUrlScheme(url) {
  function _buildFromEncodedParts (line 33103) | function _buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, op...
  function _split (line 33236) | function _split(uri) {
  function _removeDotSegments (line 33246) | function _removeDotSegments(path) {
  function _joinAndCanonicalizePath (line 33285) | function _joinAndCanonicalizePath(parts) {
  function _resolveUrl (line 33296) | function _resolveUrl(base, url) {
  function Extractor (line 33323) | function Extractor(host, staticSymbolResolver, messageBundle, metadataRe...
  function R3TargetBinder (line 33402) | function R3TargetBinder(directiveMatcher) {
  function Scope (line 33440) | function Scope(parentScope, template) {
  function DirectiveBinder (line 33558) | function DirectiveBinder(matcher, directives, bindings, references) {
  function TemplateBinder (line 33677) | function TemplateBinder(bindings, symbols, usedPipes, nestingLevel, scop...
  function R3BoundTarget (line 33834) | function R3BoundTarget(target, directives, bindings, references, exprTar...
  function extractTemplateEntities (line 33877) | function extractTemplateEntities(rootScope) {
  function compileClassMetadata (line 33937) | function compileClassMetadata(metadata) {
  function compileDeclareClassMetadata (line 33966) | function compileDeclareClassMetadata(metadata) {
  function compileDeclareDirectiveFromMetadata (line 33996) | function compileDeclareDirectiveFromMetadata(meta) {
  function createDirectiveDefinitionMap (line 34006) | function createDirectiveDefinitionMap(meta) {
  function compileQuery (line 34042) | function compileQuery(query) {
  function compileHostMetadata (line 34070) | function compileHostMetadata(meta) {
  function compileDeclareComponentFromMetadata (line 34092) | function compileDeclareComponentFromMetadata(meta, template, additionalT...
  function createComponentDefinitionMap (line 34101) | function createComponentDefinitionMap(meta, template, templateInfo) {
  function getTemplateExpression (line 34128) | function getTemplateExpression(template, templateInfo) {
  function computeEndLocation (line 34152) | function computeEndLocation(file, contents) {
  function compileUsedDirectiveMetadata (line 34170) | function compileUsedDirectiveMetadata(meta, predicate) {
  function compileUsedPipeMetadata (line 34190) | function compileUsedPipeMetadata(meta) {
  function compileDeclareFactoryFunction (line 34230) | function compileDeclareFactoryFunction(meta) {
  function compileDeclareInjectableFromMetadata (line 34263) | function compileDeclareInjectableFromMetadata(meta) {
  function createInjectableDefinitionMap (line 34272) | function createInjectableDefinitionMap(meta) {
  function convertFromProviderExpression (line 34323) | function convertFromProviderExpression(_a) {
  function compileDeclareInjectorFromMetadata (line 34343) | function compileDeclareInjectorFromMetadata(meta) {
  function createInjectorDefinitionMap (line 34352) | function createInjectorDefinitionMap(meta) {
  function compileDeclareNgModuleFromMetadata (line 34380) | function compileDeclareNgModuleFromMetadata(meta) {
  function createNgModuleDefinitionMap (line 34389) | function createNgModuleDefinitionMap(meta) {
  function compileDeclarePipeFromMetadata (line 34438) | function compileDeclarePipeFromMetadata(meta) {
  function createPipeDefinitionMap (line 34447) | function createPipeDefinitionMap(meta) {

FILE: test/lib/angular-12/angular-12-core.js
  function getClosureSafeProperty (line 20) | function getClosureSafeProperty(objWithPropertyToExtract) {
  function fillProperties (line 34) | function fillProperties(target, source) {
  function stringify (line 49) | function stringify(token) {
  function concatStringsWithSpace (line 80) | function concatStringsWithSpace(before, after) {
  function forwardRef (line 106) | function forwardRef(forwardRefFn) {
  function resolveForwardRef (line 126) | function resolveForwardRef(type) {
  function isForwardRef (line 130) | function isForwardRef(fn) {
  function __extends (line 158) | function __extends(d, b) {
  function __rest (line 177) | function __rest(s, e) {
  function __decorate (line 189) | function __decorate(decorators, target, key, desc) {
  function __param (line 199) | function __param(paramIndex, decorator) {
  function __metadata (line 202) | function __metadata(metadataKey, metadataValue) {
  function __awaiter (line 206) | function __awaiter(thisArg, _arguments, P, generator) {
  function __generator (line 225) | function __generator(thisArg, body) {
  function __exportStar (line 303) | function __exportStar(m, o) {
  function __values (line 308) | function __values(o) {
  function __read (line 322) | function __read(o, n) {
  function __spread (line 347) | function __spread() {
  function __spreadArrays (line 353) | function __spreadArrays() {
  function __spreadArray (line 361) | function __spreadArray(to, from, pack) {
  function __await (line 372) | function __await(v) {
  function __asyncGenerator (line 375) | function __asyncGenerator(thisArg, _arguments, generator) {
  function __asyncDelegator (line 394) | function __asyncDelegator(o) {
  function __asyncValues (line 399) | function __asyncValues(o) {
  function __makeTemplateObject (line 407) | function __makeTemplateObject(cooked, raw) {
  function __importStar (line 422) | function __importStar(mod) {
  function __importDefault (line 433) | function __importDefault(mod) {
  function __classPrivateFieldGet (line 436) | function __classPrivateFieldGet(receiver, state, kind, f) {
  function __classPrivateFieldSet (line 443) | function __classPrivateFieldSet(receiver, state, value, kind, f) {
  function RuntimeError (line 466) | function RuntimeError(code, message) {
  function formatRuntimeError (line 486) | function formatRuntimeError(code, message) {
  function renderStringify (line 514) | function renderStringify(value) {
  function stringifyForError (line 528) | function stringifyForError(value) {
  function throwCyclicDependencyError (line 538) | function throwCyclicDependencyError(token, path) {
  function throwMixedMultiProviderError (line 542) | function throwMixedMultiProviderError() {
  function throwInvalidProviderError (line 545) | function throwInvalidProviderError(ngModuleType, providers, provider) {
  function throwProviderNotFoundError (line 555) | function throwProviderNotFoundError(token, injectorName) {
  function assertNumber (line 567) | function assertNumber(actual, msg) {
  function assertNumberInRange (line 572) | function assertNumberInRange(actual, minInclusive, maxInclusive) {
  function assertString (line 577) | function assertString(actual, msg) {
  function assertFunction (line 582) | function assertFunction(actual, msg) {
  function assertEqual (line 587) | function assertEqual(actual, expected, msg) {
  function assertNotEqual (line 592) | function assertNotEqual(actual, expected, msg) {
  function assertSame (line 597) | function assertSame(actual, expected, msg) {
  function assertNotSame (line 602) | function assertNotSame(actual, expected, msg) {
  function assertLessThan (line 607) | function assertLessThan(actual, expected, msg) {
  function assertLessThanOrEqual (line 612) | function assertLessThanOrEqual(actual, expected, msg) {
  function assertGreaterThan (line 617) | function assertGreaterThan(actual, expected, msg) {
  function assertGreaterThanOrEqual (line 622) | function assertGreaterThanOrEqual(actual, expected, msg) {
  function assertNotDefined (line 627) | function assertNotDefined(actual, msg) {
  function assertDefined (line 632) | function assertDefined(actual, msg) {
  function throwError (line 637) | function throwError(msg, actual, expected, comparison) {
  function assertDomNode (line 641) | function assertDomNode(node) {
  function assertIndexInRange (line 649) | function assertIndexInRange(arr, index) {
  function assertOneOf (line 656) | function assertOneOf(value) {
  function ɵɵdefineInjectable (line 690) | function ɵɵdefineInjectable(opts) {
  function ɵɵdefineInjector (line 721) | function ɵɵdefineInjector(options) {
  function getInjectableDef (line 730) | function getInjectableDef(type) {
  function getOwnDefinition (line 737) | function getOwnDefinition(type, field) {
  function getInheritedInjectableDef (line 748) | function getInheritedInjectableDef(type) {
  function getTypeName (line 763) | function getTypeName(type) {
  function getInjectorDef (line 781) | function getInjectorDef(type) {
  function getInjectImplementation (line 834) | function getInjectImplementation() {
  function setInjectImplementation (line 840) | function setInjectImplementation(impl) {
  function injectRootLimpMode (line 852) | function injectRootLimpMode(token, notFoundValue, flags) {
  function assertInjectImplementationNotEqual (line 871) | function assertInjectImplementationNotEqual(fn) {
  function noSideEffects (line 892) | function noSideEffects(fn) {
  function isDefaultChangeDetectionStrategy (line 956) | function isDefaultChangeDetectionStrategy(changeDetectionStrategy) {
  function ngDevModeResetPerfCounters (line 1017) | function ngDevModeResetPerfCounters() {
  function initNgDevMode (line 1070) | function initNgDevMode() {
  function ɵɵdefineComponent (line 1154) | function ɵɵdefineComponent(componentDefinition) {
  function ɵɵsetComponentScope (line 1221) | function ɵɵsetComponentScope(type, directives, pipes) {
  function extractDirectiveDef (line 1226) | function extractDirectiveDef(type) {
  function extractPipeDef (line 1233) | function extractPipeDef(type) {
  function ɵɵdefineNgModule (line 1244) | function ɵɵdefineNgModule(def) {
  function ɵɵsetNgModuleScope (line 1272) | function ɵɵsetNgModuleScope(type, scope) {
  function invertObject (line 1335) | function invertObject(obj, secondary) {
  function ɵɵdefinePipe (line 1388) | function ɵɵdefinePipe(pipeDef) {
  function getComponentDef (line 1402) | function getComponentDef(type) {
  function getDirectiveDef (line 1405) | function getDirectiveDef(type) {
  function getPipeDef (line 1408) | function getPipeDef(type) {
  function getNgModuleDef (line 1411) | function getNgModuleDef(type, throwNotFound) {
  function getNgLocaleIdDef (line 1418) | function getNgLocaleIdDef(type) {
  function isLView (line 1523) | function isLView(value) {
  function isLContainer (line 1530) | function isLContainer(value) {
  function isContentQueryHost (line 1533) | function isContentQueryHost(tNode) {
  function isComponentHost (line 1536) | function isComponentHost(tNode) {
  function isDirectiveHost (line 1539) | function isDirectiveHost(tNode) {
  function isComponentDef (line 1542) | function isComponentDef(def) {
  function isRootView (line 1545) | function isRootView(target) {
  function assertTNodeForLView (line 1558) | function assertTNodeForLView(tNode, lView) {
  function assertTNodeForTView (line 1561) | function assertTNodeForTView(tNode, tView) {
  function assertTNode (line 1566) | function assertTNode(tNode) {
  function assertTIcu (line 1572) | function assertTIcu(tIcu) {
  function assertComponentType (line 1578) | function assertComponentType(actual, msg) {
  function assertNgModuleType (line 1584) | function assertNgModuleType(actual, msg) {
  function assertCurrentTNodeIsParent (line 1590) | function assertCurrentTNodeIsParent(isParent) {
  function assertHasParent (line 1593) | function assertHasParent(tNode) {
  function assertDataNext (line 1597) | function assertDataNext(lView, index, arr) {
  function assertLContainer (line 1602) | function assertLContainer(value) {
  function assertLViewOrUndefined (line 1606) | function assertLViewOrUndefined(value) {
  function assertLView (line 1609) | function assertLView(value) {
  function assertFirstCreatePass (line 1613) | function assertFirstCreatePass(tView, errMessage) {
  function assertFirstUpdatePass (line 1616) | function assertFirstUpdatePass(tView, errMessage) {
  function assertDirectiveDef (line 1623) | function assertDirectiveDef(obj) {
  function assertIndexInDeclRange (line 1628) | function assertIndexInDeclRange(lView, index) {
  function assertIndexInVarsRange (line 1632) | function assertIndexInVarsRange(lView, index) {
  function assertIndexInExpandoRange (line 1636) | function assertIndexInExpandoRange(lView, index) {
  function assertBetween (line 1640) | function assertBetween(lower, upper, index) {
  function assertProjectionSlots (line 1645) | function assertProjectionSlots(lView, errMessage) {
  function assertParentView (line 1650) | function assertParentView(lView, errMessage) {
  function assertNodeInjector (line 1660) | function assertNodeInjector(lView, injectorIndex) {
  function getFactoryDef (line 1681) | function getFactoryDef(type, throwNotFound) {
  function SimpleChange (line 1706) | function SimpleChange(previousValue, currentValue, firstChange) {
  function ɵɵNgOnChangesFeature (line 1749) | function ɵɵNgOnChangesFeature() {
  function NgOnChangesFeatureImpl (line 1752) | function NgOnChangesFeatureImpl(definition) {
  function rememberChangeHistoryAndInvokeOnChangesHook (line 1773) | function rememberChangeHistoryAndInvokeOnChangesHook() {
  function ngOnChangesSetInput (line 1792) | function ngOnChangesSetInput(instance, value, publicName, privateName) {
  function getSimpleChangesStore (line 1803) | function getSimpleChangesStore(instance) {
  function setSimpleChangesStore (line 1806) | function setSimpleChangesStore(instance, store) {
  function setDocument (line 1887) | function setDocument(document) {
  function getDocument (line 1896) | function getDocument() {
  function isProceduralRenderer (line 1925) | function isProceduralRenderer(renderer) {
  function unwrapRNode (line 1965) | function unwrapRNode(value) {
  function unwrapLView (line 1975) | function unwrapLView(value) {
  function unwrapLContainer (line 1989) | function unwrapLContainer(value) {
  function getNativeByIndex (line 2003) | function getNativeByIndex(index, lView) {
  function getNativeByTNode (line 2016) | function getNativeByTNode(tNode, lView) {
  function getNativeByTNodeOrNull (line 2031) | function getNativeByTNodeOrNull(tNode, lView) {
  function getTNode (line 2042) | function getTNode(tView, index) {
  function load (line 2050) | function load(view, index) {
  function getComponentLViewByIndex (line 2054) | function getComponentLViewByIndex(nodeIndex, hostView) {
  function isCreationMode (line 2062) | function isCreationMode(view) {
  function viewAttachedToChangeDetector (line 2071) | function viewAttachedToChangeDetector(view) {
  function viewAttachedToContainer (line 2075) | function viewAttachedToContainer(view) {
  function getConstant (line 2078) | function getConstant(consts, index) {
  function resetPreOrderHookFlags (line 2088) | function resetPreOrderHookFlags(lView) {
  function updateTransplantedViewCount (line 2098) | function updateTransplantedViewCount(lContainer, amount) {
  function specOnlyIsInstructionStateEmpty (line 2128) | function specOnlyIsInstructionStateEmpty() {
  function getElementDepthCount (line 2131) | function getElementDepthCount() {
  function increaseElementDepthCount (line 2134) | function increaseElementDepthCount() {
  function decreaseElementDepthCount (line 2137) | function decreaseElementDepthCount() {
  function getBindingsEnabled (line 2140) | function getBindingsEnabled() {
  function ɵɵenableBindings (line 2162) | function ɵɵenableBindings() {
  function ɵɵdisableBindings (line 2184) | function ɵɵdisableBindings() {
  function getLView (line 2190) | function getLView() {
  function getTView (line 2196) | function getTView() {
  function ɵɵrestoreView (line 2211) | function ɵɵrestoreView(viewToRestore) {
  function getCurrentTNode (line 2215) | function getCurrentTNode() {
  function getCurrentTNodePlaceholderOk (line 2222) | function getCurrentTNodePlaceholderOk() {
  function getCurrentParentTNode (line 2225) | function getCurrentParentTNode() {
  function setCurrentTNode (line 2230) | function setCurrentTNode(tNode, isParent) {
  function isCurrentTNodeParent (line 2236) | function isCurrentTNodeParent() {
  function setCurrentTNodeAsNotParent (line 2239) | function setCurrentTNodeAsNotParent() {
  function setCurrentTNodeAsParent (line 2242) | function setCurrentTNodeAsParent() {
  function getContextLView (line 2245) | function getContextLView() {
  function isInCheckNoChangesMode (line 2248) | function isInCheckNoChangesMode() {
  function setIsInCheckNoChangesMode (line 2252) | function setIsInCheckNoChangesMode(mode) {
  function getBindingRoot (line 2256) | function getBindingRoot() {
  function getBindingIndex (line 2264) | function getBindingIndex() {
  function setBindingIndex (line 2267) | function setBindingIndex(value) {
  function nextBindingIndex (line 2270) | function nextBindingIndex() {
  function incrementBindingIndex (line 2273) | function incrementBindingIndex(count) {
  function isInI18nBlock (line 2279) | function isInI18nBlock() {
  function setInI18nBlock (line 2282) | function setInI18nBlock(isInI18nBlock) {
  function setBindingRootForHostBindings (line 2296) | function setBindingRootForHostBindings(bindingRootIndex, currentDirectiv...
  function getCurrentDirectiveIndex (line 2306) | function getCurrentDirectiveIndex() {
  function setCurrentDirectiveIndex (line 2314) | function setCurrentDirectiveIndex(currentDirectiveIndex) {
  function getCurrentDirectiveDef (line 2323) | function getCurrentDirectiveDef(tData) {
  function getCurrentQueryIndex (line 2327) | function getCurrentQueryIndex() {
  function setCurrentQueryIndex (line 2330) | function setCurrentQueryIndex(value) {
  function getDeclarationTNode (line 2338) | function getDeclarationTNode(lView) {
  function enterDI (line 2367) | function enterDI(lView, tNode, flags) {
  function enterView (line 2421) | function enterView(newView) {
  function allocLFrame (line 2449) | function allocLFrame() {
  function createLFrame (line 2455) | function createLFrame(parent) {
  function leaveViewLight (line 2485) | function leaveViewLight() {
  function leaveView (line 2507) | function leaveView() {
  function nextContextImpl (line 2520) | function nextContextImpl(level) {
  function walkUpViews (line 2525) | function walkUpViews(nestingLevel, currentView) {
  function getSelectedIndex (line 2540) | function getSelectedIndex() {
  function setSelectedIndex (line 2552) | function setSelectedIndex(index) {
  function getSelectedTNode (line 2562) | function getSelectedTNode() {
  function ɵɵnamespaceSVG (line 2571) | function ɵɵnamespaceSVG() {
  function ɵɵnamespaceMathML (line 2579) | function ɵɵnamespaceMathML() {
  function ɵɵnamespaceHTML (line 2588) | function ɵɵnamespaceHTML() {
  function namespaceHTMLInternal (line 2595) | function namespaceHTMLInternal() {
  function getNamespace (line 2598) | function getNamespace() {
  function registerPreOrderHooks (line 2621) | function registerPreOrderHooks(directiveIndex, directiveDef, tView) {
  function registerPostOrderHooks (line 2656) | function registerPostOrderHooks(tView, tNode) {
  function executeCheckHooks (line 2717) | function executeCheckHooks(lView, hooks, nodeIndex) {
  function executeInitAndCheckHooks (line 2733) | function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) {
  function incrementInitPhaseFlags (line 2740) | function incrementInitPhaseFlags(lView, initPhase) {
  function callHooks (line 2764) | function callHooks(currentView, arr, initPhase, currentNodeIndex) {
  function callHook (line 2803) | function callHook(currentView, initPhase, arr, i) {
  function NodeInjectorFactory (line 2938) | function NodeInjectorFactory(
  function isFactory (line 2960) | function isFactory(obj) {
  function toTNodeTypeAsString (line 2971) | function toTNodeTypeAsString(tNodeType) {
  function hasClassInput (line 3006) | function hasClassInput(tNode) {
  function hasStyleInput (line 3030) | function hasStyleInput(tNode) {
  function assertTNodeType (line 3041) | function assertTNodeType(tNode, expectedTypes, message) {
  function assertPureTNodeType (line 3048) | function assertPureTNodeType(type) {
  function setUpAttributes (line 3087) | function setUpAttributes(renderer, native, attrs) {
  function isNameOnlyAttributeMarker (line 3141) | function isNameOnlyAttributeMarker(marker) {
  function isAnimationProp (line 3145) | function isAnimationProp(name) {
  function mergeHostAttrs (line 3159) | function mergeHostAttrs(dst, src) {
  function mergeHostAttribute (line 3201) | function mergeHostAttribute(dst, marker, key1, key2, value) {
  function hasParentInjector (line 3275) | function hasParentInjector(parentLocation) {
  function getParentInjectorIndex (line 3278) | function getParentInjectorIndex(parentLocation) {
  function getParentInjectorViewOffset (line 3286) | function getParentInjectorViewOffset(parentLocation) {
  function getParentInjectorView (line 3298) | function getParentInjectorView(location, startView) {
  function setIncludeViewProviders (line 3356) | function setIncludeViewProviders(v) {
  function bloomAdd (line 3384) | function bloomAdd(injectorIndex, tView, type) {
  function getOrCreateNodeInjectorForNode (line 3417) | function getOrCreateNodeInjectorForNode(tNode, lView) {
  function insertBloom (line 3446) | function insertBloom(arr, footer) {
  function getInjectorIndex (line 3449) | function getInjectorIndex(tNode, lView) {
  function getParentInjectorLocation (line 3471) | function getParentInjectorLocation(tNode, lView) {
  function diPublicInInjector (line 3527) | function diPublicInInjector(injectorIndex, tView, token) {
  function injectAttributeImpl (line 3561) | function injectAttributeImpl(tNode, attrNameToInject) {
  function notFoundValueOrThrow (line 3604) | function notFoundValueOrThrow(notFoundValue, token, flags) {
  function lookupTokenUsingModuleInjector (line 3621) | function lookupTokenUsingModuleInjector(lView, token, flags, notFoundVal...
  function getOrCreateInjectable (line 3662) | function getOrCreateInjectable(tNode, lView, token, flags, notFoundValue) {
  function createNodeInjector (line 3750) | function createNodeInjector() {
  function searchTokensOnInjector (line 3753) | function searchTokensOnInjector(injectorIndex, lView, token, previousTVi...
  function locateDirectiveOrProvider (line 3795) | function locateDirectiveOrProvider(tNode, tView, token, canAccessViewPro...
  function getNodeInjectable (line 3827) | function getNodeInjectable(lView, tView, index, tNode) {
  function bloomHashBitOrFactory (line 3876) | function bloomHashBitOrFactory(token) {
  function bloomHasToken (line 3899) | function bloomHasToken(bloomHash, injectorIndex, injectorView) {
  function shouldSearchParent (line 3913) | function shouldSearchParent(flags, isFirstHostTNode) {
  function NodeInjector (line 3917) | function NodeInjector(_tNode, _lView) {
  function ɵɵgetInheritedFactory (line 3929) | function ɵɵgetInheritedFactory(type) {
  function getFactoryOf (line 3955) | function getFactoryOf(type) {
  function ɵɵinjectAttribute (line 3977) | function ɵɵinjectAttribute(attrNameToInject) {
  function makeDecorator (line 3987) | function makeDecorator(name, props, parentClass, additionalProcessing, t...
  function makeMetadataCtor (line 4022) | function makeMetadataCtor(props) {
  function makeParamDecorator (line 4036) | function makeParamDecorator(name, props, parentClass) {
  function makePropDecorator (line 4074) | function makePropDecorator(name, props, parentClass, additionalProcessin...
  function CREATE_ATTRIBUTE_DECORATOR__PRE_R3__ (line 4117) | function CREATE_ATTRIBUTE_DECORATOR__PRE_R3__() {
  function CREATE_ATTRIBUTE_DECORATOR__POST_R3__ (line 4120) | function CREATE_ATTRIBUTE_DECORATOR__POST_R3__() {
  function InjectionToken (line 4180) | function InjectionToken(_desc, options) {
  function Query (line 4265) | function Query() {
  function getCompilerFacade (line 4343) | function getCompilerFacade(request) {
  function isType (line 4395) | function isType(v) {
  function addAllToArray (line 4412) | function addAllToArray(items, arr) {
  function arrayEquals (line 4425) | function arrayEquals(a, b, identityAccessor) {
  function flatten (line 4444) | function flatten(list, dst) {
  function deepForEach (line 4464) | function deepForEach(input, fn) {
  function addToArray (line 4467) | function addToArray(arr, index, value) {
  function removeFromArray (line 4476) | function removeFromArray(arr, index) {
  function newArray (line 4485) | function newArray(size, value) {
  function arraySplice (line 4505) | function arraySplice(array, index, count) {
  function arrayInsert (line 4526) | function arrayInsert(array, index, value) {
  function arrayInsert2 (line 4548) | function arrayInsert2(array, index, value1, value2) {
  function arrayInsertSorted (line 4583) | function arrayInsertSorted(array, value) {
  function arrayRemoveSorted (line 4605) | function arrayRemoveSorted(array, value) {
  function arrayIndexOfSorted (line 4625) | function arrayIndexOfSorted(array, value) {
  function keyValueArraySet (line 4636) | function keyValueArraySet(keyValueArray, key, value) {
  function keyValueArrayGet (line 4655) | function keyValueArrayGet(keyValueArray, key) {
  function keyValueArrayIndexOf (line 4673) | function keyValueArrayIndexOf(keyValueArray, key) {
  function keyValueArrayDelete (line 4686) | function keyValueArrayDelete(keyValueArray, key) {
  function _arrayIndexOfSorted (line 4711) | function _arrayIndexOfSorted(array, value, shift) {
  function isDelegateCtor (line 4782) | function isDelegateCtor(typeStr) {
  function ReflectionCapabilities (line 4788) | function ReflectionCapabilities(reflect) {
  function convertTsickleDecoratorIntoMetadata (line 5004) | function convertTsickleDecoratorIntoMetadata(decoratorInvocations) {
  function getParentCtor (line 5015) | function getParentCtor(ctor) {
  function setCurrentInjector (line 5052) | function setCurrentInjector(injector) {
  function injectInjectorOnly (line 5057) | function injectInjectorOnly(token, flags) {
  function ɵɵinject (line 5069) | function ɵɵinject(token, flags) {
  function ɵɵinvalidFactoryDep (line 5085) | function ɵɵinvalidFactoryDep(index) {
  function injectArgs (line 5116) | function injectArgs(types) {
  function attachInjectFlag (line 5160) | function attachInjectFlag(decorator, flag) {
  function getInjectFlag (line 5170) | function getInjectFlag(token) {
  function catchInjectorError (line 5173) | function catchInjectorError(e, token, injectorErrorName, source) {
  function formatError (line 5183) | function formatError(text, obj, injectorErrorName, source) {
  function getReflect (line 5270) | function getReflect() {
  function reflectDependencies (line 5273) | function reflectDependencies(type) {
  function convertDependencies (line 5276) | function convertDependencies(deps) {
  function reflectDependency (line 5279) | function reflectDependency(dep) {
  function resolveComponentResources (line 5370) | function resolveComponentResources(resourceResolver) {
  function maybeQueueResolutionOfComponentResources (line 5412) | function maybeQueueResolutionOfComponentResources(type, metadata) {
  function isComponentDefPendingResolution (line 5418) | function isComponentDefPendingResolution(type) {
  function componentNeedsResolution (line 5421) | function componentNeedsResolution(component) {
  function clearResolutionOfComponentResourcesQueue (line 5425) | function clearResolutionOfComponentResourcesQueue() {
  function restoreComponentResolutionQueue (line 5430) | function restoreComponentResolutionQueue(queue) {
  function isComponentResourceResolutionQueueEmpty (line 5435) | function isComponentResourceResolutionQueueEmpty() {
  function unwrapResponse (line 5438) | function unwrapResponse(response) {
  function componentDefResolved (line 5441) | function componentDefResolved(type) {
  function getPolicy (line 5454) | function getPolicy() {
  function trustedHTMLFromString (line 5484) | function trustedHTMLFromString(html) {
  function trustedScriptFromString (line 5495) | function trustedScriptFromString(script) {
  function trustedScriptURLFromString (line 5508) | function trustedScriptURLFromString(url) {
  function newTrustedFunctionForDev (line 5521) | function newTrustedFunctionForDev() {
  function getPolicy$1 (line 5579) | function getPolicy$1() {
  function trustedHTMLFromStringBypass (line 5609) | function trustedHTMLFromStringBypass(html) {
  function trustedScriptFromStringBypass (line 5621) | function trustedScriptFromStringBypass(script) {
  function trustedScriptURLFromStringBypass (line 5633) | function trustedScriptURLFromStringBypass(url) {
  function SafeValueImpl (line 5646) | function SafeValueImpl(changingThisBreaksApplicationSecurity) {
  function SafeHtmlImpl (line 5657) | function SafeHtmlImpl() {
  function SafeStyleImpl (line 5667) | function SafeStyleImpl() {
  function SafeScriptImpl (line 5677) | function SafeScriptImpl() {
  function SafeUrlImpl (line 5687) | function SafeUrlImpl() {
  function SafeResourceUrlImpl (line 5697) | function SafeResourceUrlImpl() {
  function unwrapSafeValue (line 5705) | function unwrapSafeValue(value) {
  function allowSanitizationBypassAndThrow (line 5709) | function allowSanitizationBypassAndThrow(value, type) {
  function getSanitizationBypassType (line 5719) | function getSanitizationBypassType(value) {
  function bypassSanitizationTrustHtml (line 5731) | function bypassSanitizationTrustHtml(trustedHtml) {
  function bypassSanitizationTrustStyle (line 5743) | function bypassSanitizationTrustStyle(trustedStyle) {
  function bypassSanitizationTrustScript (line 5755) | function bypassSanitizationTrustScript(trustedScript) {
  function bypassSanitizationTrustUrl (line 5767) | function bypassSanitizationTrustUrl(trustedUrl) {
  function bypassSanitizationTrustResourceUrl (line 5779) | function bypassSanitizationTrustResourceUrl(trustedResourceUrl) {
  function getInertBodyHelper (line 5797) | function getInertBodyHelper(defaultDoc) {
  function DOMParserHelper (line 5806) | function DOMParserHelper(inertDocumentHelper) {
  function InertDocumentHelper (line 5840) | function InertDocumentHelper(defaultDoc) {
  function isDOMParserAvailable (line 5909) | function isDOMParserAvailable() {
  function _sanitizeUrl (line 5956) | function _sanitizeUrl(url) {
  function sanitizeSrcset (line 5965) | function sanitizeSrcset(srcset) {
  function tagSet (line 5970) | function tagSet(tags) {
  function merge (line 5988) | function merge() {
  function SanitizingHtmlSerializer (line 6068) | function SanitizingHtmlSerializer() {
  function encodeEntities (line 6177) | function encodeEntities(value) {
  function _sanitizeHtml (line 6195) | function _sanitizeHtml(defaultDoc, unsafeHtmlInput) {
  function getTemplateContent (line 6232) | function getTemplateContent(el) {
  function isTemplateElement (line 6237) | function isTemplateElement(el) {
  function ɵɵsanitizeHtml (line 6279) | function ɵɵsanitizeHtml(unsafeHtml) {
  function ɵɵsanitizeStyle (line 6300) | function ɵɵsanitizeStyle(unsafeStyle) {
  function ɵɵsanitizeUrl (line 6326) | function ɵɵsanitizeUrl(unsafeUrl) {
  function ɵɵsanitizeResourceUrl (line 6347) | function ɵɵsanitizeResourceUrl(unsafeResourceUrl) {
  function ɵɵsanitizeScript (line 6369) | function ɵɵsanitizeScript(unsafeScript) {
  function ɵɵtrustConstantHtml (line 6392) | function ɵɵtrustConstantHtml(html) {
  function ɵɵtrustConstantResourceUrl (line 6417) | function ɵɵtrustConstantResourceUrl(url) {
  function getUrlSanitizer (line 6436) | function getUrlSanitizer(tag, prop) {
  function ɵɵsanitizeUrlOrResourceUrl (line 6460) | function ɵɵsanitizeUrlOrResourceUrl(unsafeUrl, tag, prop) {
  function validateAgainstEventProperties (line 6463) | function validateAgainstEventProperties(name) {
  function validateAgainstEventAttributes (line 6472) | function validateAgainstEventAttributes(name) {
  function getSanitizer (line 6479) | function getSanitizer() {
  function getLContext (line 6511) | function getLContext(target) {
  function createLContext (line 6603) | function createLContext(lView, nodeIndex, native) {
  function getComponentViewByInstance (line 6619) | function getComponentViewByInstance(componentInstance) {
  function attachPatchData (line 6644) | function attachPatchData(target, data) {
  function readPatchedData (line 6652) | function readPatchedData(target) {
  function readPatchedLView (line 6656) | function readPatchedLView(target) {
  function isComponentInstance (line 6663) | function isComponentInstance(instance) {
  function isDirectiveInstance (line 6666) | function isDirectiveInstance(instance) {
  function findViaNativeElement (line 6672) | function findViaNativeElement(lView, target) {
  function traverseNextElement (line 6684) | function traverseNextElement(tNode) {
  function findViaComponent (line 6704) | function findViaComponent(lView, componentInstance) {
  function findViaDirective (line 6729) | function findViaDirective(lView, directiveInstance) {
  function getDirectivesAtNodeIndex (line 6756) | function getDirectivesAtNodeIndex(nodeIndex, lView, includeComponents) {
  function getComponentAtNodeIndex (line 6766) | function getComponentAtNodeIndex(nodeIndex, lView) {
  function discoverLocalRefs (line 6775) | function discoverLocalRefs(lView, nodeIndex) {
  function wrappedError (line 6800) | function wrappedError(message, originalError) {
  function getType (line 6807) | function getType(error) {
  function getDebugContext (line 6810) | function getDebugContext(error) {
  function getOriginalError (line 6813) | function getOriginalError(error) {
  function getErrorLogger (line 6816) | function getErrorLogger(error) {
  function defaultErrorLogger (line 6819) | function defaultErrorLogger(console) {
  function ErrorHandler (line 6860) | function ErrorHandler() {
  function escapeCommentText (line 6971) | function escapeCommentText(value) {
  function createNamedArrayType (line 6994) | function createNamedArrayType(name) {
  function normalizeDebugBindingName (line 7020) | function normalizeDebugBindingName(name) {
  function camelCaseToDashCase (line 7026) | function camelCaseToDashCase(input) {
  function normalizeDebugBindingValue (line 7035) | function normalizeDebugBindingValue(value) {
  function ɵɵresolveWindow (line 7062) | function ɵɵresolveWindow(element) {
  function ɵɵresolveDocument (line 7069) | function ɵɵresolveDocument(element) {
  function ɵɵresolveBody (line 7076) | function ɵɵresolveBody(element) {
  function maybeUnwrapFn (line 7097) | function maybeUnwrapFn(value) {
  function throwMultipleComponentError (line 7107) | function throwMultipleComponentError(tNode) {
  function throwErrorIfNoChangesMode (line 7111) | function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, pr...
  function constructDetailsForInterpolation (line 7123) | function constructDetailsForInterpolation(lView, rootIndex, expressionIn...
  function getExpressionChangedErrorDetails (line 7141) | function getExpressionChangedErrorDetails(lView, bindingIndex, oldValue,...
  function icuContainerIterate (line 7206) | function icuContainerIterate(tIcuContainerNode, lView) {
  function ensureIcuContainerVisitorLoaded (line 7215) | function ensureIcuContainerVisitorLoaded(loader) {
  function getLViewParent (line 7246) | function getLViewParent(lView) {
  function getRootView (line 7257) | function getRootView(componentOrLView) {
  function getRootContext (line 7273) | function getRootContext(viewOrComponent) {
  function getFirstLContainer (line 7282) | function getFirstLContainer(lView) {
  function getNextLContainer (line 7288) | function getNextLContainer(container) {
  function getNearestLContainer (line 7291) | function getNearestLContainer(viewOrContainer) {
  function applyToElementOrContainer (line 7310) | function applyToElementOrContainer(action, renderer, parent, lNodeToHand...
  function createTextNode (line 7354) | function createTextNode(renderer, value) {
  function updateTextNode (line 7360) | function updateTextNode(renderer, rNode, value) {
  function createCommentNode (line 7364) | function createCommentNode(renderer, value) {
  function createElementNode (line 7377) | function createElementNode(renderer, name, namespace) {
  function removeViewFromContainer (line 7397) | function removeViewFromContainer(tView, lView) {
  function addViewToContainer (line 7417) | function addViewToContainer(tView, parentTNode, renderer, lView, parentN...
  function renderDetachView (line 7428) | function renderDetachView(tView, lView) {
  function destroyViewTree (line 7444) | function destroyViewTree(rootView) {
  function insertView (line 7495) | function insertView(tView, lView, lContainer, index) {
  function trackMovedView (line 7530) | function trackMovedView(declarationContainer, lView) {
  function detachMovedView (line 7553) | function detachMovedView(declarationContainer, lView) {
  function detachView (line 7580) | function detachView(lContainer, removeIndex) {
  function destroyLView (line 7614) | function destroyLView(tView, lView) {
  function cleanUpView (line 7631) | function cleanUpView(tView, lView) {
  function processCleanups (line 7665) | function processCleanups(tView, lView) {
  function executeOnDestroys (line 7715) | function executeOnDestroys(tView, lView) {
  function getParentRElement (line 7765) | function getParentRElement(tView, tNode, lView) {
  function getClosestRElement (line 7783) | function getClosestRElement(tView, tNode, lView) {
  function nativeInsertBefore (line 7823) | function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) {
  function nativeAppendChild (line 7832) | function nativeAppendChild(renderer, parent, child) {
  function nativeAppendOrInsertBefore (line 7842) | function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode,...
  function nativeRemoveChild (line 7851) | function nativeRemoveChild(renderer, parent, child, isHostElement) {
  function nativeParentNode (line 7862) | function nativeParentNode(renderer, node) {
  function nativeNextSibling (line 7868) | function nativeNextSibling(renderer, node) {
  function getInsertInFrontOfRNode (line 7881) | function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) {
  function getInsertInFrontOfRNodeWithNoI18n (line 7895) | function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lV...
  function setI18nHandling (line 7913) | function setI18nHandling(getInsertInFrontOfRNodeWithI18n, processI18nIns...
  function appendChild (line 7925) | function appendChild(tView, lView, childRNode, childTNode) {
  function getFirstNativeNode (line 7948) | function getFirstNativeNode(lView, tNode) {
  function getProjectionNodes (line 7997) | function getProjectionNodes(lView, tNode) {
  function getBeforeNodeForView (line 8007) | function getBeforeNodeForView(viewIndexInContainer, lContainer) {
  function nativeRemoveNode (line 8027) | function nativeRemoveNode(renderer, rNode, isHostElement) {
  function applyNodes (line 8038) | function applyNodes(renderer, action, tNode, lView, parentRElement, befo...
  function applyView (line 8075) | function applyView(tView, lView, renderer, action, parentRElement, befor...
  function applyProjection (line 8088) | function applyProjection(tView, lView, tProjectionNode) {
  function applyProjectionRecursive (line 8109) | function applyProjectionRecursive(renderer, action, lView, tProjectionNo...
  function applyContainer (line 8145) | function applyContainer(renderer, action, lContainer, parentRElement, be...
  function applyStyling (line 8177) | function applyStyling(renderer, isClassBased, rNode, prop, value) {
  function writeDirectStyle (line 8242) | function writeDirectStyle(renderer, element, newValue) {
  function writeDirectClass (line 8262) | function writeDirectClass(renderer, element, newValue) {
  function classIndexOf (line 8296) | function classIndexOf(className, classToSearch, startingIndex) {
  function isCssClassMatching (line 8334) | function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) {
  function isInlineTemplate (line 8367) | function isInlineTemplate(tNode) {
  function hasTagAndTypeMatch (line 8381) | function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) {
  function isNodeMatchingSelector (line 8394) | function isNodeMatchingSelector(tNode, selector, isProjectionMode) {
  function isPositive (line 8475) | function isPositive(mode) {
  function findAttrIndexInNode (line 8507) | function findAttrIndexInNode(name, attrs, isInlineTemplate, isProjection...
  function isNodeMatchingSelectorList (line 8549) | function isNodeMatchingSelectorList(tNode, selector, isProjectionMode) {
  function getProjectAsAttrValue (line 8558) | function getProjectAsAttrValue(tNode) {
  function getNameOnlyMarkerIndex (line 8570) | function getNameOnlyMarkerIndex(nodeAttrs) {
  function matchTemplateAttribute (line 8579) | function matchTemplateAttribute(attrs, name) {
  function isSelectorInSelectorList (line 8601) | function isSelectorInSelectorList(selector, list) {
  function maybeWrapInNotSelector (line 8616) | function maybeWrapInNotSelector(isNegativeMode, chunk) {
  function stringifyCSSSelector (line 8619) | function stringifyCSSSelector(selector) {
  function stringifyCSSSelectorList (line 8686) | function stringifyCSSSelectorList(selectorList) {
  function extractAttrsAndClassesFromSelector (line 8699) | function extractAttrsAndClassesFromSelector(selector) {
  function ɵɵadvance (line 8769) | function ɵɵadvance(delta) {
  function selectIndexInternal (line 8773) | function selectIndexInternal(tView, lView, index, checkNoChangesMode) {
  function toTStylingRange (line 8806) | function toTStylingRange(prev, next) {
  function getTStylingRangePrev (line 8811) | function getTStylingRangePrev(tStylingRange) {
  function getTStylingRangePrevDuplicate (line 8815) | function getTStylingRangePrevDuplicate(tStylingRange) {
  function setTStylingRangePrev (line 8820) | function setTStylingRangePrev(tStylingRange, previous) {
  function setTStylingRangePrevDuplicate (line 8826) | function setTStylingRangePrevDuplicate(tStylingRange) {
  function getTStylingRangeNext (line 8830) | function getTStylingRangeNext(tStylingRange) {
  function setTStylingRangeNext (line 8834) | function setTStylingRangeNext(tStylingRange, next) {
  function getTStylingRangeNextDuplicate (line 8840) | function getTStylingRangeNextDuplicate(tStylingRange) {
  function setTStylingRangeNextDuplicate (line 8845) | function setTStylingRangeNextDuplicate(tStylingRange) {
  function getTStylingRangeTail (line 8849) | function getTStylingRangeTail(tStylingRange) {
  function attachDebugObject (line 8870) | function attachDebugObject(obj, debug) {
  function attachDebugGetter (line 8886) | function attachDebugGetter(obj, debugGetter) {
  function cloneToLViewFromTViewBlueprint (line 8939) | function cloneToLViewFromTViewBlueprint(tView) {
  function getLViewToClone (line 8944) | function getLViewToClone(type, name) {
  function nameSuffix (line 8970) | function nameSuffix(text) {
  function TView (line 8982) | function TView(type, blueprint, template, queries, viewQuery, declTNode,...
  function TNode (line 9035) | function TNode(tView_, //
  function toDebugStyleBinding (line 9235) | function toDebugStyleBinding(tNode, isClassBased) {
  function processTNodeChildren (line 9262) | function processTNodeChildren(tNode, buf) {
  function cloneToTViewData (line 9276) | function cloneToTViewData(list) {
  function attachLViewDebug (line 9289) | function attachLViewDebug(lView) {
  function attachLContainerDebug (line 9292) | function attachLContainerDebug(lContainer) {
  function toDebug (line 9295) | function toDebug(obj) {
  function toHtml (line 9316) | function toHtml(value, includeChildren) {
  function LViewDebug (line 9339) | function LViewDebug(_raw_lView) {
  function mapToHTML (line 9535) | function mapToHTML(node) {
  function toLViewRange (line 9546) | function toLViewRange(tView, lView, start, end) {
  function toDebugNodes (line 9559) | function toDebugNodes(tNode, lView) {
  function buildDebugNode (line 9573) | function buildDebugNode(tNode, lView) {
  function buildNodeInjectorDebug (line 9598) | function buildNodeInjectorDebug(tNode, tView, lView) {
  function binary (line 9622) | function binary(array, idx) {
  function toBloom (line 9638) | function toBloom(array, idx) {
  function LContainerDebug (line 9645) | function LContainerDebug(_raw_lContainer) {
  function processHostBindingOpCodes (line 9716) | function processHostBindingOpCodes(tView, lView) {
  function refreshContentQueries (line 9743) | function refreshContentQueries(tView, lView) {
  function refreshChildComponents (line 9761) | function refreshChildComponents(hostLView, components) {
  function renderChildComponents (line 9767) | function renderChildComponents(hostLView, components) {
  function createLView (line 9772) | function createLView(parentLView, tView, context, flags, host, tHostNode...
  function getOrCreateTNode (line 9794) | function getOrCreateTNode(tView, index, type, name, attrs) {
  function createTNodeAtIndex (line 9823) | function createTNodeAtIndex(tView, index, type, name, attrs) {
  function allocExpando (line 9864) | function allocExpando(tView, lView, numSlotsToAlloc, initialValue) {
  function renderView (line 9892) | function renderView(tView, lView, context) {
  function refreshView (line 9954) | function refreshView(tView, lView, templateFn, context) {
  function renderComponentOrTemplate (line 10070) | function renderComponentOrTemplate(tView, lView, templateFn, context) {
  function executeTemplate (line 10089) | function executeTemplate(tView, lView, templateFn, rf, context) {
  function executeContentQueries (line 10112) | function executeContentQueries(tView, tNode, lView) {
  function createDirectivesInstances (line 10127) | function createDirectivesInstances(tView, lView, tNode) {
  function saveResolvedLocalsInData (line 10139) | function saveResolvedLocalsInData(viewData, tNode, localRefExtractor) {
  function getOrCreateTComponentView (line 10160) | function getOrCreateTComponentView(def) {
  function createTView (line 10185) | function createTView(type, declTNode, templateFn, decls, vars, directive...
  function createViewBlueprint (line 10269) | function createViewBlueprint(bindingStartIndex, initialViewLength) {
  function createError (line 10276) | function createError(text, token) {
  function assertHostNodeExists (line 10279) | function assertHostNodeExists(rElement, elementOrSelector) {
  function locateHostElement (line 10296) | function locateHostElement(renderer, elementOrSelector, encapsulation) {
  function storeCleanupWithContext (line 10323) | function storeCleanupWithContext(tView, lView, context, cleanupFn) {
  function createTNode (line 10340) | function createTNode(tView, tParent, type, index, value, attrs) {
  function generatePropertyAliases (line 10422) | function generatePropertyAliases(inputAliasMap, directiveDefIdx, propSto...
  function initializeInputAndOutputAliases (line 10441) | function initializeInputAndOutputAliases(tView, tNode) {
  function mapPropName (line 10486) | function mapPropName(name) {
  function elementPropertyInternal (line 10501) | function elementPropertyInternal(tView, tNode, lView, propName, value, r...
  function markDirtyIfOnPush (line 10545) | function markDirtyIfOnPush(lView, viewIndex) {
  function setNgReflectProperty (line 10552) | function setNgReflectProperty(lView, element, type, attrName, value) {
  function setNgReflectProperties (line 10578) | function setNgReflectProperties(lView, element, type, dataValue, value) {
  function validateProperty (line 10593) | function validateProperty(tView, element, propName, tNode) {
  function matchingSchemas (line 10609) | function matchingSchemas(tView, tagName) {
  function logUnknownPropertyError (line 10627) | function logUnknownPropertyError(propName, tNode) {
  function instantiateRootComponent (line 10634) | function instantiateRootComponent(tView, lView, def) {
  function resolveDirectives (line 10655) | function resolveDirectives(tView, lView, tNode, localRefs) {
  function registerHostBindingOpCodes (line 10729) | function registerHostBindingOpCodes(tView, tNode, lView, directiveIdx, d...
  function lastSelectedElementIdx (line 10755) | function lastSelectedElementIdx(hostBindingOpCodes) {
  function instantiateAllDirectives (line 10768) | function instantiateAllDirectives(tView, lView, tNode, native) {
  function invokeDirectivesHostBindings (line 10794) | function invokeDirectivesHostBindings(tView, lView, tNode) {
  function invokeHostBindingsInCreationMode (line 10822) | function invokeHostBindingsInCreationMode(def, directive) {
  function findDirectiveDefMatches (line 10831) | function findDirectiveDefMatches(tView, viewData, tNode) {
  function markAsComponentHost (line 10866) | function markAsComponentHost(tView, hostTNode) {
  function cacheMatchingLocalNames (line 10873) | function cacheMatchingLocalNames(tNode, localRefs, exportsMap) {
  function saveNameToExportMap (line 10891) | function saveNameToExportMap(directiveIdx, def, exportsMap) {
  function initTNodeFlags (line 10907) | function initTNodeFlags(tNode, index, numberOfDirectives) {
  function configureViewWithDirective (line 10928) | function configureViewWithDirective(tView, tNode, lView, directiveIndex,...
  function addComponentLogic (line 10938) | function addComponentLogic(lView, hostTNode, def) {
  function elementAttributeInternal (line 10949) | function elementAttributeInternal(tNode, lView, name, value, sanitizer, ...
  function setElementAttribute (line 10959) | function setElementAttribute(renderer, element, namespace, tagName, name...
  function setInputsFromAttrs (line 10986) | function setInputsFromAttrs(lView, directiveIndex, instance, def, tNode,...
  function generateInitialInputs (line 11021) | function generateInitialInputs(inputs, attrs) {
  function createLContainer (line 11064) | function createLContainer(hostNative, currentView, native, tNode) {
  function refreshEmbeddedViews (line 11087) | function refreshEmbeddedViews(lView) {
  function markTransplantedViewsForRefresh (line 11104) | function markTransplantedViewsForRefresh(lView) {
  function refreshComponent (line 11133) | function refreshComponent(hostLView, componentHostIdx) {
  function refreshContainsDirtyView (line 11154) | function refreshContainsDirtyView(lView) {
  function renderComponent (line 11182) | function renderComponent(hostLView, componentHostIdx) {
  function syncViewWithBlueprint (line 11216) | function syncViewWithBlueprint(tView, lView) {
  function addToViewTree (line 11232) | function addToViewTree(lView, lViewOrLContainer) {
  function markViewDirty (line 11260) | function markViewDirty(lView) {
  function scheduleTick (line 11284) | function scheduleTick(rootContext, flags) {
  function tickRootContext (line 11309) | function tickRootContext(rootContext) {
  function detectChang
Condensed preview — 199 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,594K chars).
[
  {
    "path": ".eslintignore",
    "chars": 37,
    "preview": "test/lib\ndemo\ndist\ntest/.eslintrc.js\n"
  },
  {
    "path": ".eslintrc.js",
    "chars": 391,
    "preview": "/* @flow */\n\nmodule.exports = {\n  extends: \"@krakenjs/eslint-config-grumbler/eslintrc-browser\",\n\n  globals: {\n    __ZOID"
  },
  {
    "path": ".flowconfig",
    "chars": 367,
    "preview": "[ignore]\n.*/node_modules/babel-plugin-flow-runtime\n.*/node_modules/flow-runtime\n.*/node_modules/npm\n.*/node_modules/json"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 66,
    "preview": "# Owner for everything in the repo\n*       @krakenjs/checkout-sdk\n"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 744,
    "preview": "name: build\n\non:\n  push:\n    branches:\n      - main\n  pull_request: {}\njobs:\n  main:\n    runs-on: ubuntu-latest\n    step"
  },
  {
    "path": ".github/workflows/publish.yml",
    "chars": 1136,
    "preview": "name: publish to npm\non: workflow_dispatch\njobs:\n  main:\n    runs-on: ubuntu-latest\n    steps:\n      - name: ⬇️ Checkout"
  },
  {
    "path": ".gitignore",
    "chars": 570,
    "preview": "# Logs\nlogs\n*.log\n\n# Runtime data\npids\n*.pid\n*.seed\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nl"
  },
  {
    "path": ".husky/.gitignore",
    "chars": 2,
    "preview": "_\n"
  },
  {
    "path": ".husky/commit-msg",
    "chars": 77,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx --no -- commitlint --edit \"$1\"\n"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 58,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
  },
  {
    "path": ".npmrc",
    "chars": 67,
    "preview": "registry=https://registry.npmjs.org/\npackage-lock=false\nsave=false\n"
  },
  {
    "path": ".prettierignore",
    "chars": 54,
    "preview": "build\ndist\ncoverage\nflow-typed\ntest/lib/\nCHANGELOG.md\n"
  },
  {
    "path": ".prettierrc.json",
    "chars": 3,
    "preview": "{}\n"
  },
  {
    "path": "AUTHORS.md",
    "chars": 68,
    "preview": "Daniel Brain <dbrain@paypal.com>\nAnurag Sinha <anusinha@paypal.com>\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 6442,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file. See [standard-version](https://github."
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1912,
    "preview": "# Contributing to zoid\n\nWe are always looking for ways to make our modules better. Adding features and fixing bugs allow"
  },
  {
    "path": "LICENSE",
    "chars": 10753,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 7711,
    "preview": "<p align=\"center\"><img width=\"45%\" alt=\"zoid\" src=\"https://cdn.rawgit.com/krakenjs/zoid/main/zoid.png\"></p>\n\n---\n\n[![bui"
  },
  {
    "path": "SECURITY.md",
    "chars": 1703,
    "preview": "# Security Policy\n\n## How is Zoid secure?\n\nZoid uses [Post Robot](https://github.com/krakenjs/post-robot) to do [post me"
  },
  {
    "path": "babel.config.js",
    "chars": 166,
    "preview": "/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = {\n  extends: \"@krakenjs/babel-config-grumbl"
  },
  {
    "path": "commitlint.config.js",
    "chars": 120,
    "preview": "/* @flow */\n/* eslint import/no-commonjs: off */\n\nmodule.exports = {\n  extends: [\"@commitlint/config-conventional\"],\n};\n"
  },
  {
    "path": "demo/advanced/props/index.htm",
    "chars": 1041,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/advanced/props/login.htm",
    "chars": 2348,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/props/login.js",
    "chars": 492,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/advanced/react-end-to-end/index.htm",
    "chars": 1466,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/advanced/react-end-to-end/login.htm",
    "chars": 2861,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/react-end-to-end/login.js",
    "chars": 286,
    "preview": "window.LoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n\n "
  },
  {
    "path": "demo/advanced/redirect-different-domain/index.htm",
    "chars": 610,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/advanced/redirect-different-domain/login-button.htm",
    "chars": 1130,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/redirect-different-domain/login-button.js",
    "chars": 413,
    "preview": "window.MyLoginButtonComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-button-com"
  },
  {
    "path": "demo/advanced/redirect-different-domain/login.htm",
    "chars": 2225,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/redirect-different-domain/login.js",
    "chars": 335,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/advanced/redirect-different-domain/redirect.htm",
    "chars": 813,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/remote/index.htm",
    "chars": 610,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/advanced/remote/login-button.htm",
    "chars": 1070,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/remote/login-button.js",
    "chars": 413,
    "preview": "window.MyLoginButtonComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-button-com"
  },
  {
    "path": "demo/advanced/remote/login.htm",
    "chars": 2225,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/remote/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/advanced/remote-popup/index.htm",
    "chars": 610,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/advanced/remote-popup/login-button.htm",
    "chars": 1130,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/remote-popup/login-button.js",
    "chars": 413,
    "preview": "window.MyLoginButtonComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-button-com"
  },
  {
    "path": "demo/advanced/remote-popup/login.htm",
    "chars": 2225,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/advanced/remote-popup/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/basic/iframe/index.htm",
    "chars": 749,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/basic/iframe/login.htm",
    "chars": 2225,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/basic/iframe/login.js",
    "chars": 351,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  dimensions: {\n    width: \"300px\",\n    height: \"150px\",\n  },\n\n  // The html"
  },
  {
    "path": "demo/basic/popup/index.htm",
    "chars": 1190,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/basic/popup/login.htm",
    "chars": 2225,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/basic/popup/login.js",
    "chars": 2468,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/common/common.js",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "demo/common/index.css",
    "chars": 96,
    "preview": "body {\n  text-align: center;\n}\n\nh3 {\n  margin: 50px;\n}\n\n#container {\n  display: inline-block;\n}\n"
  },
  {
    "path": "demo/common/login.css",
    "chars": 1011,
    "preview": "html,\nbody {\n  overflow: hidden;\n}\n\nbody {\n  text-align: center;\n  border: 1px solid #ccc;\n  height: 100%;\n  width: 100%"
  },
  {
    "path": "demo/frameworks/angular/index.htm",
    "chars": 1289,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/frameworks/angular/login.htm",
    "chars": 2236,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/angular/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/frameworks/angular2/index.htm",
    "chars": 2586,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/frameworks/angular2/login.htm",
    "chars": 2236,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/angular2/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/app-component.html",
    "chars": 270,
    "preview": "<div>\n  <h3>Log in on xyz.com</h3>\n  <div id=\"container\">\n    <my-login-component\n      [props]=\"{ onLogin: onLogin, pre"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/app-component.ts",
    "chars": 412,
    "preview": "import { Component } from \"@angular/core\";\n\n@Component({\n  selector: \"my-app\",\n  templateUrl: \"./app-component.html\",\n})"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/app-module.ts",
    "chars": 492,
    "preview": "import * as ngCore from \"@angular/core\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { AppComponen"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/config.js",
    "chars": 1010,
    "preview": "System.config({\n  // use typescript for compilation\n  transpiler: \"typescript\",\n  // typescript compiler options\n  types"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/index.htm",
    "chars": 985,
    "preview": "<!DOCTYPE html>\n\n<html>\n  <head>\n    <base href=\".\" />\n    <title>angular2</title>\n    <link\n      rel=\"stylesheet\"\n    "
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/login.htm",
    "chars": 2236,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/login.js",
    "chars": 448,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/main.ts",
    "chars": 191,
    "preview": "//main entry point\nimport { platformBrowserDynamic } from \"@angular/platform-browser-dynamic\";\nimport { AppModule } from"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/start.cmd",
    "chars": 56,
    "preview": "Chrome.exe %CD%/index.htm --allow-file-access-from-files"
  },
  {
    "path": "demo/frameworks/angular2_TypeScript/start.sh",
    "chars": 59,
    "preview": "google-chrome $PWD/index.htm --allow-file-access-from-files"
  },
  {
    "path": "demo/frameworks/react/index.htm",
    "chars": 1794,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/frameworks/react/login.htm",
    "chars": 2236,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/react/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/frameworks/vue/index.htm",
    "chars": 1458,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/frameworks/vue/login.htm",
    "chars": 2236,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/vue/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/frameworks/vue3/index.htm",
    "chars": 1420,
    "preview": "<!DOCTYPE html>\n\n<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material"
  },
  {
    "path": "demo/frameworks/vue3/login.htm",
    "chars": 2312,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "demo/frameworks/vue3/login.js",
    "chars": 288,
    "preview": "window.MyLoginZoidComponent = zoid.create({\n  // The html tag used to render my component\n\n  tag: \"my-login-component\",\n"
  },
  {
    "path": "demo/index.htm",
    "chars": 1270,
    "preview": "<head>\n  <link\n    rel=\"stylesheet\"\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/bootstrap-material-design/4.0.2/boo"
  },
  {
    "path": "dist/zoid.frame.js",
    "chars": 262486,
    "preview": "!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"f"
  },
  {
    "path": "dist/zoid.frameworks.frame.js",
    "chars": 276770,
    "preview": "!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"f"
  },
  {
    "path": "dist/zoid.frameworks.js",
    "chars": 304336,
    "preview": "!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"f"
  },
  {
    "path": "dist/zoid.js",
    "chars": 291626,
    "preview": "!function(root, factory) {\n    \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory() : \"f"
  },
  {
    "path": "docs/api/component.md",
    "chars": 3266,
    "preview": "# Component\n\n## Instantiate `(props : { [string] : any }) => ZoidComponentInstance`\n\nInstantiate a component and pass in"
  },
  {
    "path": "docs/api/create.md",
    "chars": 16654,
    "preview": "# Create new component\n\n```javascript\nzoid.create({ ...options });\n```\n\nCreate a component definition, which will be loa"
  },
  {
    "path": "docs/api/index.md",
    "chars": 221,
    "preview": "# API\n\n- [Create](./create.md)\n  - [Prop Definitions](./prop-definitions.md)\n- [Component](./component.md)\n- [Instance]("
  },
  {
    "path": "docs/api/instance.md",
    "chars": 7203,
    "preview": "# Component Instance\n\nAfter instantiating a component, that component instance has a number of helpers.\n\n```javascript\nc"
  },
  {
    "path": "docs/api/parent-props.md",
    "chars": 2475,
    "preview": "# Parent Props\n\n## window `Window | ProxyWindow`\n\nPass in a custom window to render the zoid component to. Passing this "
  },
  {
    "path": "docs/api/prop-definitions.md",
    "chars": 3719,
    "preview": "# Prop Definitions\n\n## type\n\n`string`\n\nThe data-type expected for the prop\n\n- `'string'`\n- `'number'`\n- `'boolean'`\n- `'"
  },
  {
    "path": "docs/api/render.md",
    "chars": 1840,
    "preview": "# Render\n\n## Basic Render (same window)\n\n```javacript\nComponent(props).render(container, ?context)\n```\n\nRender the compo"
  },
  {
    "path": "docs/api/xprops.md",
    "chars": 6274,
    "preview": "# `xprops`\n\nBy default `window.xprops` is populated in the child window/frame with any props from the parent.\n\nSome buil"
  },
  {
    "path": "docs/example.md",
    "chars": 4518,
    "preview": "# zoid example\n\nLet's create a login component. We want the user to be able to log in on our site, and to notify the par"
  },
  {
    "path": "flow-typed/npm/@commitlint/cli_vx.x.x.js",
    "chars": 1646,
    "preview": "// flow-typed signature: 5559d97aaf526bbcbabcb99b36bc5e17\n// flow-typed version: <<STUB>>/@commitlint/cli_v^16.2.1/flow_"
  },
  {
    "path": "flow-typed/npm/@commitlint/config-conventional_vx.x.x.js",
    "chars": 996,
    "preview": "// flow-typed signature: 9962542700789a22cff26fc78989b904\n// flow-typed version: <<STUB>>/@commitlint/config-conventiona"
  },
  {
    "path": "flow-typed/npm/@krakenjs/belter_vx.x.x.js",
    "chars": 7928,
    "preview": "// flow-typed signature: 78dfcbdab7b7573cb3d17170eaade9ab\n// flow-typed version: <<STUB>>/@krakenjs/belter_v^2.0.0/flow_"
  },
  {
    "path": "flow-typed/npm/@krakenjs/cross-domain-utils_vx.x.x.js",
    "chars": 4527,
    "preview": "// flow-typed signature: 1b384d8a481c18b578d4eb7f1866aefd\n// flow-typed version: <<STUB>>/@krakenjs/cross-domain-utils_v"
  },
  {
    "path": "flow-typed/npm/@krakenjs/grumbler-scripts_vx.x.x.js",
    "chars": 2192,
    "preview": "// flow-typed signature: 7ec2f9ff984b201918fcd9678837db06\n// flow-typed version: <<STUB>>/@krakenjs/grumbler-scripts_v^8"
  },
  {
    "path": "flow-typed/npm/@krakenjs/jsx-pragmatic_vx.x.x.js",
    "chars": 9983,
    "preview": "// flow-typed signature: e3879a2c640bc8421f798cb70cce7477\n// flow-typed version: <<STUB>>/@krakenjs/jsx-pragmatic_v^3.0."
  },
  {
    "path": "flow-typed/npm/@krakenjs/post-robot_vx.x.x.js",
    "chars": 20954,
    "preview": "// flow-typed signature: 18f28813f8bef0fbfc11f18b89116082\n// flow-typed version: <<STUB>>/@krakenjs/post-robot_v^11.0.0/"
  },
  {
    "path": "flow-typed/npm/@krakenjs/zalgo-promise_vx.x.x.js",
    "chars": 4943,
    "preview": "// flow-typed signature: a31bde17276864ac955bb0ae5d9ebb5f\n// flow-typed version: <<STUB>>/@krakenjs/zalgo-promise_v^2.0."
  },
  {
    "path": "flow-typed/npm/@octokit/rest_v18.x.x.js",
    "chars": 5813,
    "preview": "// flow-typed signature: 6103021a6389a42ea8b41c577b3f91b3\n// flow-typed version: 79dc43986b/@octokit/rest_v18.x.x/flow_>"
  },
  {
    "path": "flow-typed/npm/colors_v1.x.x.js",
    "chars": 1749,
    "preview": "// flow-typed signature: 6c56e55f6af24f47c33f50f10270785f\n// flow-typed version: 590676b089/colors_v1.x.x/flow_>=v0.104."
  },
  {
    "path": "flow-typed/npm/cross-env_vx.x.x.js",
    "chars": 1898,
    "preview": "// flow-typed signature: d88f07e71439b946a3c634907a30e9c7\n// flow-typed version: <<STUB>>/cross-env_v^7.0.3/flow_v0.155."
  },
  {
    "path": "flow-typed/npm/flow-bin_v0.x.x.js",
    "chars": 189,
    "preview": "// flow-typed signature: 28fdff7f110e1c75efab63ff205dda30\n// flow-typed version: c6154227d1/flow-bin_v0.x.x/flow_>=v0.10"
  },
  {
    "path": "flow-typed/npm/fs-extra_v8.x.x.js",
    "chars": 21583,
    "preview": "// flow-typed signature: beb4c73787fb04b445ce22aee439eed9\n// flow-typed version: d81afd5307/fs-extra_v8.x.x/flow_>=v0.10"
  },
  {
    "path": "flow-typed/npm/glob_v7.x.x.js",
    "chars": 2346,
    "preview": "// flow-typed signature: d2a519d7d007e9ba3e5bf2ac3ff76eca\n// flow-typed version: f243e51ed7/glob_v7.x.x/flow_>=v0.104.x\n"
  },
  {
    "path": "flow-typed/npm/husky_vx.x.x.js",
    "chars": 1048,
    "preview": "// flow-typed signature: 879510e2b63c9ed0a1bead509d75e31c\n// flow-typed version: <<STUB>>/husky_v^7.0.4/flow_v0.155.0\n\n/"
  },
  {
    "path": "flow-typed/npm/jest_v29.x.x.js",
    "chars": 37118,
    "preview": "// flow-typed signature: 0e64c840aab684c37415b655ddbf8ce1\n// flow-typed version: 02d4f1d2c5/jest_v29.x.x/flow_>=v0.134.x"
  },
  {
    "path": "flow-typed/npm/lint-staged_vx.x.x.js",
    "chars": 6160,
    "preview": "// flow-typed signature: 9793179ff11430685c8286a4ff6f3f16\n// flow-typed version: <<STUB>>/lint-staged_v^12.4.0/flow_v0.1"
  },
  {
    "path": "flow-typed/npm/md5_v2.x.x.js",
    "chars": 336,
    "preview": "// flow-typed signature: 198b480a6b35dbf3a74cb37d21258b00\n// flow-typed version: c6154227d1/md5_v2.x.x/flow_>=v0.104.x\n\n"
  },
  {
    "path": "flow-typed/npm/mkdirp_v1.x.x.js",
    "chars": 887,
    "preview": "// flow-typed signature: 28ddcca31abd597a77830710de25f5fe\n// flow-typed version: a75473352d/mkdirp_v1.x.x/flow_>=v0.83.x"
  },
  {
    "path": "flow-typed/npm/mocha_v4.x.x.js",
    "chars": 8793,
    "preview": "// flow-typed signature: 8b533a1271b4580048529f45ac3a3c68\n// flow-typed version: ba7bfb2fda/mocha_v4.x.x/flow_>=v0.104.x"
  },
  {
    "path": "flow-typed/npm/node-stream-zip_v1.x.x.js",
    "chars": 4306,
    "preview": "// flow-typed signature: bd18604d0696d9e4ad0da443cf74273b\n// flow-typed version: 1ff21d416b/node-stream-zip_v1.x.x/flow_"
  },
  {
    "path": "flow-typed/npm/prettier_v1.x.x.js",
    "chars": 7184,
    "preview": "// flow-typed signature: cfdc7e61e71ab8d32e882a236b798eaf\n// flow-typed version: 02d4f1d2c5/prettier_v1.x.x/flow_>=v0.10"
  },
  {
    "path": "flow-typed/npm/prettier_vx.x.x.js",
    "chars": 3911,
    "preview": "// flow-typed signature: 1f4ab6c1d3d18b92a343b925d5e6384c\n// flow-typed version: <<STUB>>/prettier_v^2.6.2/flow_v0.155.0"
  },
  {
    "path": "flow-typed/npm/rimraf_v3.x.x.js",
    "chars": 516,
    "preview": "// flow-typed signature: 31191d41b239d1242753bdea18136ae9\n// flow-typed version: 6ee04b16cf/rimraf_v3.x.x/flow_>=v0.104."
  },
  {
    "path": "flow-typed/npm/semver_v7.x.x.js",
    "chars": 6057,
    "preview": "// flow-typed signature: bf6205896c200fb28700dfa8d29f2b8a\n// flow-typed version: 3d76504c27/semver_v7.x.x/flow_>=v0.104."
  },
  {
    "path": "flow-typed/npm/serve_vx.x.x.js",
    "chars": 817,
    "preview": "// flow-typed signature: ff47633e906b77d18196430051db52fa\n// flow-typed version: <<STUB>>/serve_v^10.0.0/flow_v0.155.0\n\n"
  },
  {
    "path": "flow-typed/npm/standard-version_vx.x.x.js",
    "chars": 6599,
    "preview": "// flow-typed signature: 570f5014289cb73342d1dd70c136bca1\n// flow-typed version: <<STUB>>/standard-version_v^9.3.2/flow_"
  },
  {
    "path": "flow-typed/npm/yargs_v15.x.x.js",
    "chars": 8287,
    "preview": "// flow-typed signature: d538758c32ffc612a9c0d1262c22d161\n// flow-typed version: 3c81f4d103/yargs_v15.x.x/flow_>=v0.118."
  },
  {
    "path": "globals.js",
    "chars": 677,
    "preview": "/* @flow */\n/* eslint import/no-commonjs: off */\n\nconst postRobotGlobals = require(\"@krakenjs/post-robot/globals\");\n\ncon"
  },
  {
    "path": "index.js",
    "chars": 427,
    "preview": "/* @flow */\n/* eslint import/no-commonjs: 0, import/extensions: 0 */\n\n// eslint-disable-next-line no-process-env\nif (pro"
  },
  {
    "path": "karma.conf.js",
    "chars": 1525,
    "preview": "/* @flow */\n/* eslint import/no-default-export: off */\n\nimport { getKarmaConfig } from \"@krakenjs/karma-config-grumbler\""
  },
  {
    "path": "package.json",
    "chars": 3462,
    "preview": "{\n  \"name\": \"@krakenjs/zoid\",\n  \"version\": \"10.5.1\",\n  \"description\": \"Cross domain components.\",\n  \"main\": \"index.js\",\n"
  },
  {
    "path": "src/babel.config.js",
    "chars": 144,
    "preview": "/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = {\n  extends: \"@krakenjs/babel-config-grumbl"
  },
  {
    "path": "src/child/child.js",
    "chars": 8380,
    "preview": "/* @flow */\n/* eslint max-lines: 0 */\n\nimport {\n  isSameDomain,\n  matchDomain,\n  getAllFramesInWindow,\n  type CrossDomai"
  },
  {
    "path": "src/child/index.js",
    "chars": 38,
    "preview": "/* @flow */\n\nexport * from \"./child\";\n"
  },
  {
    "path": "src/child/props.js",
    "chars": 2679,
    "preview": "/* @flow */\n\nimport {\n  getDomain,\n  isSameDomain,\n  matchDomain,\n  type CrossDomainWindowType,\n} from \"@krakenjs/cross-"
  },
  {
    "path": "src/component/component.js",
    "chars": 18025,
    "preview": "/* @flow */\n/* eslint max-lines: 0 */\n\nimport {\n  setup as setupPostRobot,\n  on,\n  send,\n  bridge,\n  toProxyWindow,\n  de"
  },
  {
    "path": "src/component/index.js",
    "chars": 67,
    "preview": "/* @flow */\n\nexport * from \"./component\";\nexport * from \"./props\";\n"
  },
  {
    "path": "src/component/props.js",
    "chars": 16380,
    "preview": "/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { once, noop"
  },
  {
    "path": "src/component/templates/component.js",
    "chars": 1632,
    "preview": "/* @flow */\n/* eslint react/react-in-jsx-scope: off */\n\nimport { type RenderOptionsType } from \"../../parent/parent\";\n\ne"
  },
  {
    "path": "src/component/templates/container.js",
    "chars": 2317,
    "preview": "/* @flow */\n/* eslint react/react-in-jsx-scope: off */\n\nimport { destroyElement, toCSS } from \"@krakenjs/belter/src\";\n\ni"
  },
  {
    "path": "src/component/templates/index.js",
    "chars": 71,
    "preview": "/* @flow */\n\nexport * from \"./container\";\nexport * from \"./component\";\n"
  },
  {
    "path": "src/component/validate.js",
    "chars": 3314,
    "preview": "/* @flow */\n\nimport { isPerc, isPx, values } from \"@krakenjs/belter/src\";\n\nimport { CONTEXT, PROP_TYPE } from \"../consta"
  },
  {
    "path": "src/constants.js",
    "chars": 1615,
    "preview": "/* @flow */\n\nimport { WINDOW_TYPE } from \"@krakenjs/cross-domain-utils/src\";\n\nexport const ZOID = `zoid`;\n\nexport const "
  },
  {
    "path": "src/declarations.js",
    "chars": 320,
    "preview": "/* @flow */\n\ndeclare var __ZOID__: {|\n  __VERSION__: string,\n  __GLOBAL_KEY__: string,\n  __POPUP_SUPPORT__: boolean,\n  _"
  },
  {
    "path": "src/drivers/angular.js",
    "chars": 2077,
    "preview": "/* @flow */\n\nimport { dasherizeToCamel, replaceObject, noop } from \"@krakenjs/belter/src\";\n\nimport type { ComponentDrive"
  },
  {
    "path": "src/drivers/angular2.js",
    "chars": 3346,
    "preview": "/* @flow */\n/* eslint new-cap: 0 */\n\nimport { replaceObject } from \"@krakenjs/belter/src\";\n\nimport type { ComponentDrive"
  },
  {
    "path": "src/drivers/index.js",
    "chars": 140,
    "preview": "/* @flow */\n\nexport * from \"./react\";\nexport * from \"./vue\";\nexport * from \"./vue3\";\nexport * from \"./angular\";\nexport *"
  },
  {
    "path": "src/drivers/react.js",
    "chars": 1700,
    "preview": "/* @flow */\n/* eslint react/no-deprecated: off, react/no-find-dom-node: off, react/display-name: off, react/no-did-mount"
  },
  {
    "path": "src/drivers/vue.js",
    "chars": 1894,
    "preview": "/* @flow */\n\nimport { noop, dasherizeToCamel } from \"@krakenjs/belter/src\";\n\nimport type { ComponentDriverType } from \"."
  },
  {
    "path": "src/drivers/vue3.js",
    "chars": 1455,
    "preview": "/* @flow */\nimport { dasherizeToCamel, noop } from \"@krakenjs/belter/src\";\n\nimport type { ComponentDriverType } from \".."
  },
  {
    "path": "src/index.js",
    "chars": 986,
    "preview": "/* @flow */\n\nimport typeof { PopupOpenError } from \"@krakenjs/belter/src\";\n\nimport type { CreateZoidComponent } from \"./"
  },
  {
    "path": "src/lib/global.js",
    "chars": 933,
    "preview": "/* @flow */\n\nimport {\n  isSameDomain,\n  type CrossDomainWindowType,\n} from \"@krakenjs/cross-domain-utils/src\";\nimport { "
  },
  {
    "path": "src/lib/index.js",
    "chars": 94,
    "preview": "/* @flow */\n\nexport * from \"./global\";\nexport * from \"./serialize\";\nexport * from \"./window\";\n"
  },
  {
    "path": "src/lib/serialize.js",
    "chars": 5028,
    "preview": "/* @flow */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport {\n  serializeMessage,\n  deserializeMessa"
  },
  {
    "path": "src/lib/window.js",
    "chars": 5432,
    "preview": "/* @flow */\n\nimport { assertExists, memoize } from \"@krakenjs/belter/src\";\nimport {\n  isSameDomain,\n  getOpener,\n  getNt"
  },
  {
    "path": "src/parent/index.js",
    "chars": 39,
    "preview": "/* @flow */\n\nexport * from \"./parent\";\n"
  },
  {
    "path": "src/parent/parent.js",
    "chars": 47060,
    "preview": "/* @flow */\n/* eslint max-lines: 0 */\n\nimport {\n  send,\n  bridge,\n  ProxyWindow,\n  toProxyWindow,\n  type CrossDomainFunc"
  },
  {
    "path": "src/parent/props.js",
    "chars": 5519,
    "preview": "/* @flow */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { dotify, isDefined, base64encode, noop "
  },
  {
    "path": "src/types.js",
    "chars": 446,
    "preview": "/* @flow */\n\n// export something to force webpack to see this as an ES module\nexport const TYPES = true;\n\nexport type Di"
  },
  {
    "path": "test/babel.config.js",
    "chars": 144,
    "preview": "/* @flow */\n\n// eslint-disable-next-line import/no-commonjs\nmodule.exports = {\n  extends: \"@krakenjs/babel-config-grumbl"
  },
  {
    "path": "test/common.js",
    "chars": 8598,
    "preview": "/* @flow */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport {\n  isWindowClosed,\n  type CrossDomainWi"
  },
  {
    "path": "test/index.js",
    "chars": 30,
    "preview": "/* @flow */\n\nimport \"./test\";\n"
  },
  {
    "path": "test/lib/angular-12/angular-12-common.js",
    "chars": 261569,
    "preview": "/**\n * @license Angular v12.2.1\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global,"
  },
  {
    "path": "test/lib/angular-12/angular-12-compiler.js",
    "chars": 1683827,
    "preview": "/**\n * @license Angular v12.2.1\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global,"
  },
  {
    "path": "test/lib/angular-12/angular-12-core.js",
    "chars": 1534281,
    "preview": "/**\n * @license Angular v12.2.1\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global,"
  },
  {
    "path": "test/lib/angular-12/angular-12-platform-browser-dynamic.js",
    "chars": 37880,
    "preview": "/**\n * @license Angular v12.2.1\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global,"
  },
  {
    "path": "test/lib/angular-12/angular-12-platform-browser.js",
    "chars": 107765,
    "preview": "/**\n * @license Angular v12.2.1\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n(function (global,"
  },
  {
    "path": "test/lib/angular-12/rxjs_v6.2.0.js",
    "chars": 134940,
    "preview": "/**\n  @license\n  Apache License 2.0 https://github.com/ReactiveX/RxJS/blob/master/LICENSE.txt\n **/\n/**\n  @license\n  Apac"
  },
  {
    "path": "test/lib/angular-12/zone_v0.8.12.js",
    "chars": 96003,
    "preview": "/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style lice"
  },
  {
    "path": "test/lib/angular-4.js",
    "chars": 2094619,
    "preview": "/**\n* @license\n* Copyright Google Inc. All Rights Reserved.\n*\n* Use of this source code is governed by an MIT-style lice"
  },
  {
    "path": "test/lib/react-dom_v15.1.0.js",
    "chars": 1174,
    "preview": "/**\n * ReactDOM v15.1.0\n *\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is l"
  },
  {
    "path": "test/lib/react-dom_v16.0.0.js",
    "chars": 102890,
    "preview": "/*\n React v16.0.0\n react-dom.production.min.js\n\n Copyright (c) 2013-present, Facebook, Inc.\n\n This source code is licens"
  },
  {
    "path": "test/lib/react_v15.1.0.js",
    "chars": 668793,
    "preview": " /**\n  * React v15.1.0\n  */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}e"
  },
  {
    "path": "test/lib/react_v16.0.0.js",
    "chars": 6588,
    "preview": "/*\n React v16.0.0\n react.production.min.js\n\n Copyright (c) 2013-present, Facebook, Inc.\n\n This source code is licensed u"
  },
  {
    "path": "test/lib/vue_v3.2.1.js",
    "chars": 625499,
    "preview": "var Vue = (function (exports) {\n  'use strict';\n\n  /**\n   * Make a map and return a function for checking if a key\n   * "
  },
  {
    "path": "test/test.js",
    "chars": 1043,
    "preview": "/* @flow */\n\nimport \"./tests\";\nimport { noop } from \"@krakenjs/belter/src\";\n\nimport { zoid } from \"./zoid\";\n\nwindow.mock"
  },
  {
    "path": "test/tests/actions.jsx",
    "chars": 6109,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { onCloseWindow } from \"@krakenjs/cross-domain-utils/src\";\nimport { wrapPromise } f"
  },
  {
    "path": "test/tests/attributes.js",
    "chars": 2810,
    "preview": "/* @flow */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\n\nimport { zoid } from \"../zoid\";\nimport { onWindowOpen,"
  },
  {
    "path": "test/tests/bridge.js",
    "chars": 1919,
    "preview": "/* @flow */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\n\nimport { zoid } from \"../zoid\";\nimport { runOnClick, g"
  },
  {
    "path": "test/tests/child.js",
    "chars": 5045,
    "preview": "/* @flow */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { onCloseWindow } from \"@krakenjs/cross-domain-u"
  },
  {
    "path": "test/tests/children.jsx",
    "chars": 35328,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { getParent } from \"@krakenjs/c"
  },
  {
    "path": "test/tests/clone.jsx",
    "chars": 6228,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { getParent } from \"@krakenjs/c"
  },
  {
    "path": "test/tests/dimensions.jsx",
    "chars": 28855,
    "preview": "/* @flow */\n/** @jsx node */\n/* eslint max-lines: off */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { n"
  },
  {
    "path": "test/tests/domain.js",
    "chars": 6665,
    "preview": "/* @flow */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { getDomain } from \"@krakenjs/cross-domain-utils"
  },
  {
    "path": "test/tests/drivers.js",
    "chars": 22282,
    "preview": "/* @flow */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\n\nimport { zoid } from \"../zoid\";\nimport { getBody, load"
  },
  {
    "path": "test/tests/eligible.jsx",
    "chars": 5044,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\n\nimport { zoid } from \"../zoid\";\nimpor"
  },
  {
    "path": "test/tests/error.js",
    "chars": 24475,
    "preview": "/* @flow */\n/* eslint max-lines: off */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { wrapPromis"
  },
  {
    "path": "test/tests/exports.js",
    "chars": 5956,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport type { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { wrapPromise } fr"
  },
  {
    "path": "test/tests/extensions.jsx",
    "chars": 5343,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\nimport { getParent } from \"@krakenjs/c"
  },
  {
    "path": "test/tests/happy.jsx",
    "chars": 31816,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { wrapPromise } from \"@"
  },
  {
    "path": "test/tests/index.js",
    "chars": 434,
    "preview": "/* @flow */\n\nimport \"./happy\";\nimport \"./props\";\nimport \"./actions\";\nimport \"./exports\";\nimport \"./drivers\";\nimport \"./e"
  },
  {
    "path": "test/tests/method.jsx",
    "chars": 1403,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { wrapPromise } from \"@krakenjs/belter/src\";\n\nimport { getBody } from \"../common\";\n"
  },
  {
    "path": "test/tests/props.js",
    "chars": 68783,
    "preview": "/* @flow */\n/* eslint max-lines: off */\n\nimport {\n  wrapPromise,\n  noop,\n  parseQuery,\n  destroyElement,\n  getElement,\n}"
  },
  {
    "path": "test/tests/remove.jsx",
    "chars": 4821,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { wrapPromise } from \"@"
  },
  {
    "path": "test/tests/renderto.jsx",
    "chars": 56560,
    "preview": "/* @flow */\n/* eslint max-lines: off */\n/** @jsx node */\n\nimport {\n  onCloseWindow,\n  getParent,\n  getOpener,\n  isWindow"
  },
  {
    "path": "test/tests/rerender.js",
    "chars": 8852,
    "preview": "/* @flow */\n/** @jsx node */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\nimport { wrapPromise } from \"@"
  },
  {
    "path": "test/tests/validation.js",
    "chars": 12139,
    "preview": "/* @flow */\n\nimport { ZalgoPromise } from \"@krakenjs/zalgo-promise/src\";\n\nimport { zoid } from \"../zoid\";\nimport { getBo"
  },
  {
    "path": "test/tests/window.js",
    "chars": 14012,
    "preview": "/* @flow */\n/* eslint max-nested-callbacks: off */\n\nimport { send, once } from \"@krakenjs/post-robot/src\";\nimport { uniq"
  },
  {
    "path": "test/windows/basicchild/index.htm",
    "chars": 923,
    "preview": "<body>\n  <div id=\"container\"></div>\n\n  <script>\n    function getAncestor(win) {\n      if (win.opener) {\n        return w"
  },
  {
    "path": "test/windows/basicchild/index.js",
    "chars": 525,
    "preview": "/* @flow */\n/* eslint no-eval: off, security/detect-eval-with-expression: off */\n\nimport { setup, send, on, once } from "
  },
  {
    "path": "test/windows/bridge/index.htm",
    "chars": 776,
    "preview": "<body>\n  <script>\n    function getAncestor(win) {\n      if (win.opener) {\n        return win.opener;\n      }\n\n      if ("
  },
  {
    "path": "test/windows/bridge/index.js",
    "chars": 73,
    "preview": "/* @flow */\n\nimport { setup } from \"@krakenjs/post-robot/src\";\n\nsetup();\n"
  },
  {
    "path": "test/windows/child/index.htm",
    "chars": 1342,
    "preview": "<body>\n  <div id=\"container\"></div>\n\n  <script>\n    function getAncestor(win) {\n      if (win.opener) {\n        return w"
  },
  {
    "path": "test/windows/child/index.js",
    "chars": 1306,
    "preview": "/* @flow */\n/* eslint no-eval: off, security/detect-eval-with-expression: off */\n\nimport { on } from \"@krakenjs/post-rob"
  },
  {
    "path": "test/zoid.global.js",
    "chars": 126,
    "preview": "/* @flow */\n\n// eslint-disable-next-line import/no-namespace\nimport * as _zoid from \"../src/index\";\n\nwindow.__zoid__ = _"
  },
  {
    "path": "test/zoid.js",
    "chars": 99,
    "preview": "/* @flow */\n\nimport type { Zoid } from \"../src/index\";\n\nexport const zoid: Zoid = window.__zoid__;\n"
  },
  {
    "path": "webpack.config.js",
    "chars": 4143,
    "preview": "/* @flow */\n/* eslint import/no-nodejs-modules: off, import/no-default-export: off */\n\nimport type { WebpackConfig } fro"
  }
]

About this extraction

This page contains the full source code of the krakenjs/zoid GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 199 files (8.9 MB), approximately 2.3M tokens, and a symbol index with 5924 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!