From 728cc225a7c72a1769237b14b3403fa914510e50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreu=20Tom=C3=A0s?= <79577520+atomas-at-wiris@users.noreply.github.com> Date: Tue, 3 Mar 2026 12:41:00 +0100 Subject: [PATCH 1/6] Test/playwright migration (#1134) * test: migration to playwright (WIP) * test: enable e2e tests to run locally * test: remove cypress and add pw workflow * ci: fix e2e test execution * ci: fix e2e test execution * test: remove committed .only * test: fix staging execution * test: add 1 worker in CI * test: fix ports * test: correct ports in readme * test: delete always from test action * test: deploy demos via serve-static to run e2e tests * test: fix tinymce8 e2e test run on ci * test: fix action for tinymce8 * test: limit ci time execution * fix: renamed main by master in e2e workflow * ci: add blob reporter to e2e workflow * test: re-enable ckeditor4 testing on CI * test: update serve-static command * chore: upload ck5 telemeter wasm file * ci: update ci tests ckeditor4 build * test: fix tinymce8 port * test: update e2e tests ci env variables management * test: update e2e tests docs * chore: revert ckeditor5 undesired changed files * test: delete duplicated e2e tests readme * ci: rename e2e tests action * test: remove list reporter duplicate * test: add playwright extension --------- Co-authored-by: sergibaron-at-wiris Co-authored-by: David Adalid <159769517+dadalid-at-wiris@users.noreply.github.com> --- .../cypress-Run-tests-with-npm-packages.yml | 146 ------ .github/workflows/run-e2e-tests.yml | 108 ++++ .gitignore | 4 - .vscode/extensions.json | 1 + cypress.json | 8 - cypress/README.md | 88 ---- cypress/YYY-ZZZ.category.js | 32 -- cypress/fixtures/formulas.json | 20 - cypress/mathtype-web-app.png | Bin 89806 -> 0 bytes cypress/modal.jpg | Bin 48423 -> 0 bytes cypress/plugins/index.js | 24 - cypress/support/commands.d.ts | 119 ----- cypress/support/commands.js | 161 ------ cypress/support/index.js | 22 - cypress/support/utils.js | 19 - cypress/support/validations.d.ts | 37 -- cypress/support/validations.js | 4 - cypress/tests/e2e/STD-018.insertion.js | 29 -- cypress/tests/e2e/STD-026.modal.js | 38 -- cypress/tests/e2e/STD-028.modal.js | 32 -- cypress/tests/sandbox/.gitkeep | 0 cypress/tests/smoke/.gitkeep | 0 cypress/tests/smoke/STD-001.insertion.js | 29 -- cypress/tests/smoke/STD-002.insertion.js | 32 -- cypress/tests/smoke/STD-003.insertion.js | 36 -- cypress/tests/smoke/STD-004.images.js | 28 - cypress/tests/smoke/STD-005.images.js | 35 -- cypress/tests/smoke/STD-007.images.js | 26 - cypress/tests/smoke/STD-010.images.js | 30 -- cypress/tests/smoke/STD-011.modal.js | 20 - cypress/tests/smoke/STD-012.modal.js | 32 -- cypress/tests/smoke/STD-014.insertion.js | 23 - cypress/tests/smoke/STD-016.insertion.js | 46 -- cypress/tests/smoke/STD-017.insertion.js | 46 -- cypress/tests/smoke/STD-019.insertion.js | 33 -- cypress/tests/smoke/STD-020.modal.js | 23 - cypress/tests/smoke/STD-021.modal.js | 23 - cypress/tests/smoke/STD-022.modal.js | 40 -- cypress/tests/smoke/STD-023.modal.js | 40 -- cypress/tests/ui/.gitkeep | 0 cypress/tests/validation/.gitkeep | 0 demos/html/ckeditor4/project.json | 10 + demos/html/ckeditor5/project.json | 10 + demos/html/froala/project.json | 10 + demos/html/generic/project.json | 10 + demos/html/tinymce5/project.json | 10 + demos/html/tinymce6/project.json | 10 + demos/html/tinymce7/project.json | 10 + demos/html/tinymce8/project.json | 10 + docs/development/cicd/README.md | 37 +- docs/development/testing/README.md | 194 ++++++- package.json | 15 +- tests/e2e/.env.example | 16 + tests/e2e/.gitignore | 9 + tests/e2e/enums/equation_entry_mode.ts | 6 + tests/e2e/enums/equations.ts | 36 ++ tests/e2e/enums/toolbar.ts | 6 + tests/e2e/enums/typing_mode.ts | 7 + tests/e2e/helpers/network.ts | 20 + tests/e2e/helpers/test-setup.ts | 30 ++ tests/e2e/interfaces/equation.ts | 5 + tests/e2e/page-objects/base_editor.ts | 480 ++++++++++++++++++ tests/e2e/page-objects/editor_manager.ts | 42 ++ tests/e2e/page-objects/equation_entry_form.ts | 46 ++ tests/e2e/page-objects/html/ckeditor4.ts | 16 + tests/e2e/page-objects/html/ckeditor5.ts | 25 + tests/e2e/page-objects/html/froala.ts | 23 + tests/e2e/page-objects/html/generic.ts | 15 + tests/e2e/page-objects/html/tinymce5.ts | 16 + tests/e2e/page-objects/html/tinymce6.ts | 16 + tests/e2e/page-objects/html/tinymce7.ts | 16 + tests/e2e/page-objects/html/tinymce8.ts | 16 + tests/e2e/page-objects/page.ts | 16 + tests/e2e/page-objects/wiris_editor.ts | 213 ++++++++ tests/e2e/playwright.config.ts | 84 +++ .../e2e/tests/edit/edit_corner_cases.spec.ts | 96 ++++ tests/e2e/tests/edit/edit_hand.spec.ts | 38 ++ .../tests/edit/edit_via_doble_click.spec.ts | 56 ++ .../e2e/tests/edit/edit_via_selection.spec.ts | 56 ++ tests/e2e/tests/editor/copy_cut_drop.spec.ts | 78 +++ tests/e2e/tests/editor/editor.spec.ts | 125 +++++ tests/e2e/tests/insert/insert.spec.ts | 68 +++ .../tests/insert/insert_corner_cases.spec.ts | 66 +++ tests/e2e/tests/insert/insert_hand.spec.ts | 37 ++ tests/e2e/tests/latex/latex.spec.ts | 87 ++++ .../tests/modal/confirmation_dialog.spec.ts | 108 ++++ tests/e2e/tests/modal/toolbar.spec.ts | 102 ++++ tests/e2e/tests/telemetry/telemetry.spec.ts | 45 ++ tests/e2e/tsconfig.json | 27 + 89 files changed, 2530 insertions(+), 1378 deletions(-) delete mode 100644 .github/workflows/cypress-Run-tests-with-npm-packages.yml create mode 100644 .github/workflows/run-e2e-tests.yml delete mode 100644 cypress.json delete mode 100644 cypress/README.md delete mode 100644 cypress/YYY-ZZZ.category.js delete mode 100644 cypress/fixtures/formulas.json delete mode 100644 cypress/mathtype-web-app.png delete mode 100644 cypress/modal.jpg delete mode 100644 cypress/plugins/index.js delete mode 100644 cypress/support/commands.d.ts delete mode 100644 cypress/support/commands.js delete mode 100644 cypress/support/index.js delete mode 100644 cypress/support/utils.js delete mode 100644 cypress/support/validations.d.ts delete mode 100644 cypress/support/validations.js delete mode 100644 cypress/tests/e2e/STD-018.insertion.js delete mode 100644 cypress/tests/e2e/STD-026.modal.js delete mode 100644 cypress/tests/e2e/STD-028.modal.js delete mode 100644 cypress/tests/sandbox/.gitkeep delete mode 100644 cypress/tests/smoke/.gitkeep delete mode 100644 cypress/tests/smoke/STD-001.insertion.js delete mode 100644 cypress/tests/smoke/STD-002.insertion.js delete mode 100644 cypress/tests/smoke/STD-003.insertion.js delete mode 100644 cypress/tests/smoke/STD-004.images.js delete mode 100644 cypress/tests/smoke/STD-005.images.js delete mode 100644 cypress/tests/smoke/STD-007.images.js delete mode 100644 cypress/tests/smoke/STD-010.images.js delete mode 100644 cypress/tests/smoke/STD-011.modal.js delete mode 100644 cypress/tests/smoke/STD-012.modal.js delete mode 100644 cypress/tests/smoke/STD-014.insertion.js delete mode 100644 cypress/tests/smoke/STD-016.insertion.js delete mode 100644 cypress/tests/smoke/STD-017.insertion.js delete mode 100644 cypress/tests/smoke/STD-019.insertion.js delete mode 100644 cypress/tests/smoke/STD-020.modal.js delete mode 100644 cypress/tests/smoke/STD-021.modal.js delete mode 100644 cypress/tests/smoke/STD-022.modal.js delete mode 100644 cypress/tests/smoke/STD-023.modal.js delete mode 100644 cypress/tests/ui/.gitkeep delete mode 100644 cypress/tests/validation/.gitkeep create mode 100644 tests/e2e/.env.example create mode 100644 tests/e2e/.gitignore create mode 100644 tests/e2e/enums/equation_entry_mode.ts create mode 100644 tests/e2e/enums/equations.ts create mode 100644 tests/e2e/enums/toolbar.ts create mode 100644 tests/e2e/enums/typing_mode.ts create mode 100644 tests/e2e/helpers/network.ts create mode 100644 tests/e2e/helpers/test-setup.ts create mode 100644 tests/e2e/interfaces/equation.ts create mode 100644 tests/e2e/page-objects/base_editor.ts create mode 100644 tests/e2e/page-objects/editor_manager.ts create mode 100644 tests/e2e/page-objects/equation_entry_form.ts create mode 100644 tests/e2e/page-objects/html/ckeditor4.ts create mode 100644 tests/e2e/page-objects/html/ckeditor5.ts create mode 100644 tests/e2e/page-objects/html/froala.ts create mode 100644 tests/e2e/page-objects/html/generic.ts create mode 100644 tests/e2e/page-objects/html/tinymce5.ts create mode 100644 tests/e2e/page-objects/html/tinymce6.ts create mode 100644 tests/e2e/page-objects/html/tinymce7.ts create mode 100644 tests/e2e/page-objects/html/tinymce8.ts create mode 100644 tests/e2e/page-objects/page.ts create mode 100644 tests/e2e/page-objects/wiris_editor.ts create mode 100644 tests/e2e/playwright.config.ts create mode 100644 tests/e2e/tests/edit/edit_corner_cases.spec.ts create mode 100644 tests/e2e/tests/edit/edit_hand.spec.ts create mode 100644 tests/e2e/tests/edit/edit_via_doble_click.spec.ts create mode 100644 tests/e2e/tests/edit/edit_via_selection.spec.ts create mode 100644 tests/e2e/tests/editor/copy_cut_drop.spec.ts create mode 100644 tests/e2e/tests/editor/editor.spec.ts create mode 100644 tests/e2e/tests/insert/insert.spec.ts create mode 100644 tests/e2e/tests/insert/insert_corner_cases.spec.ts create mode 100644 tests/e2e/tests/insert/insert_hand.spec.ts create mode 100644 tests/e2e/tests/latex/latex.spec.ts create mode 100644 tests/e2e/tests/modal/confirmation_dialog.spec.ts create mode 100644 tests/e2e/tests/modal/toolbar.spec.ts create mode 100644 tests/e2e/tests/telemetry/telemetry.spec.ts create mode 100644 tests/e2e/tsconfig.json diff --git a/.github/workflows/cypress-Run-tests-with-npm-packages.yml b/.github/workflows/cypress-Run-tests-with-npm-packages.yml deleted file mode 100644 index ae600ce55..000000000 --- a/.github/workflows/cypress-Run-tests-with-npm-packages.yml +++ /dev/null @@ -1,146 +0,0 @@ -# It runs all available Cypress tests and sends test data to Cypress Dashboard. -# It executes on every Monday at 01 a.m, and on demand by the user. -# The tests run with a fail-fast strategy, once one fails, the others will not run. -# If a test fails, it creates a set of screenshots showing the errors. -# -# Matrix: -# - Browser: chrome. -# - Test folder: All tests available on the `/tests` folder. -# -# Jobs: -# - Set up the Cypress Environment: `setup-cypress`. -# - Runs all tests on the matrix: `run-all-tests-matrix`. - -name: Run Cypress tests with npm packages - -on: - schedule: - # runs every Monday at 1 a.m - - cron: "0 1 * * 1" - filters: - branches: - only: - - stable - workflow_dispatch: - inputs: - # Sends data to Cy - cypress-record: - description: Send test data to Cypress Dashboard? Write 'Yes' to send data. - required: true - default: "No" - -jobs: - setup-cypress: - # Setup Cypress environment without cache. - name: Setup Cypress environment without cache - runs-on: ubuntu-latest - steps: - # 01. Checkout the repository. - - name: Checkout - uses: actions/checkout@v2 - - # 02. Install a specific version of Node using. - - name: Use Node.js - uses: actions/setup-node@v2 - with: - node-version: 16 - - # 03. Install dependencies and verify Cypress - - name: Install dependencies and verify Cypress - env: - # make sure every Cypress install prints minimal information - CI: 1 - # print Cypress and OS info - # This next command should use "npm ci" instead of "npm install" - run: | - npm ci - npx cypress verify - npx cypress info - npx cypress version - npx cypress version --component package - npx cypress version --component binary - npx cypress version --component electron - npx cypress version --component node - - run-all-tests-matrix: - # Runs all tests. - runs-on: ubuntu-latest - needs: setup-cypress - strategy: - fail-fast: true - matrix: - # Define values for browsers from - browser: ["chrome"] - # browser: ['chrome', 'edge', 'firefox', 'chromium'] - type: ["all"] - # type: ['smoke','e2e', 'ui', 'validation'] - # env: ['local', 'public'] - name: Run ${{ matrix.type }} tests on ${{ matrix.browser }} - steps: - # 01. Checkout the repository. - - name: Checkout - uses: actions/checkout@v2 - - # 02. Install a specific version of Node. - - name: Use Node.js - uses: actions/setup-node@v2 - with: - node-version: 16 - - # 03a. Decide whether to send data to Cypress Dashboard, or not, for workflow_dispatch and schedule. - - name: Decide if we send data to Cypress 2 - if: ${{ github.event.inputs.cypress-record == 'Yes' || github.event_name == 'schedule' }} - run: | - echo "CY_RECORD_KEY=${{ secrets.CYPRESS_RECORD_KEY }}" >> $GITHUB_ENV - echo "CY_RECORD_FLAG=-- --record --key " >> $GITHUB_ENV - - # 03a. Decide whether to send data to Cypress Dashboard, or not, for workflow_dispatch. - - name: Decide if we send data to Cypress 1 - # We don't want to send the tests to Dashboard through workflow dispatch - if: ${{ github.event.inputs.cypress-record != 'Yes' }} - # we set the environment variables dynamically to empty in order to avoid - # recording the test execution to Cypress Dashboard. - run: | - echo "CY_RECORD_KEY=" >> $GITHUB_ENV - echo "CY_RECORD_FLAG=" >> $GITHUB_ENV - - # 04. Run the tests following the initial matrix: by browser and test type - - name: Run tests by browser - uses: cypress-io/github-action@v2 - timeout-minutes: 10 - with: - # 'build' starts the default demo - build: npm run build - # 'test:ci' runs tests over Docker image for build context - # we also send the Cypress Dashboard record key dynamically - command: npm run test:ci ${{ env.CY_RECORD_FLAG }} ${{ env.CY_RECORD_KEY }} - record: true - parallel: true - group: "${{ matrix.type }} tests on ${{ matrix.browser }}" - browser: ${{ matrix.browser }} - config: "video: true" - spec: | - cypress/tests/**/*.js - env: - # https://github.com/wiris/html-integrations/settings/secrets/actions - CYPRESS_PROJECT_ID: ${{ secrets.CYPRESS_PROJECT_ID }} - GITHUB_TOKEN: ${{ secrets.GH_CICD_TOKEN }} - - # 05a. Save videos and screenshots as test artifacts - # https://github.com/actions/upload-artifact - - name: Upload screenshots - uses: actions/upload-artifact@master - # there might be no screenshots created when: - # - there are no test failures - # so only upload screenshots if previous step has failed - if: failure() - with: - name: screenshots-${{ matrix.type }}-${{ matrix.browser }} - path: cypress/screenshots - - # 05b. Upload videos, since they are always be generated. - - name: Upload videos for all tests - uses: actions/upload-artifact@master - with: - name: videos-${{ matrix.type }}-${{ matrix.browser }} - path: cypress/videos diff --git a/.github/workflows/run-e2e-tests.yml b/.github/workflows/run-e2e-tests.yml new file mode 100644 index 000000000..fd739cff2 --- /dev/null +++ b/.github/workflows/run-e2e-tests.yml @@ -0,0 +1,108 @@ +name: E2E Tests - All Editors + +on: + push: + branches: + - master + pull_request: + workflow_dispatch: + +jobs: + # Matrix strategy to enable per html editor parallelization + e2e-tests: + name: E2E Tests - ${{ matrix.editor }} + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + editor: + - generic + - ckeditor4 + - ckeditor5 + - froala + - tinymce5 + - tinymce6 + - tinymce7 + - tinymce8 + + steps: + - uses: actions/checkout@v5 + + - uses: actions/setup-node@v4 + with: + node-version: "23.x" + + - name: Install dependencies + run: | + yarn install + yarn playwright install --with-deps + + - name: Build ${{ matrix.editor }} package + if: matrix.editor != 'tinymce8' + run: | + yarn nx build ${{ matrix.editor }} + yarn nx build html-${{ matrix.editor }} + env: + CKEDITOR4_API_KEY: ${{ secrets.CKEDITOR4_API_KEY }} + FROALA_API_KEY: ${{ secrets.FROALA_API_KEY }} + + - name: Build tinymce8 packages + if: matrix.editor == 'tinymce8' + run: | + yarn nx build tinymce7 + yarn nx build html-tinymce8 + + - name: Run E2E tests for ${{ matrix.editor }} + id: e2e + run: HTML_EDITOR=${{ matrix.editor }} PLAYWRIGHT_BLOB_OUTPUT_NAME=report-${{ matrix.editor }}.zip yarn test:e2e + continue-on-error: true + env: + CKEDITOR4_API_KEY: ${{ secrets.CKEDITOR4_API_KEY }} + FROALA_API_KEY: ${{ secrets.FROALA_API_KEY }} + + - name: Publish test results for ${{ matrix.editor }} + uses: dorny/test-reporter@d61b558e8df85cb60d09ca3e5b09653b4477cea7 # v2.0.0 + with: + name: E2E Tests - ${{ matrix.editor }} + path: tests/e2e/test-results/results.xml + reporter: java-junit + fail-on-error: ${{ steps.e2e.outcome == 'failure' }} + continue-on-error: true + + - name: Upload blob report for ${{ matrix.editor }} + uses: actions/upload-artifact@v4 + with: + name: blob-report-${{ matrix.editor }} + path: blob-report + retention-days: 1 + + merge-reports: + if: always() + needs: [e2e-tests] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/setup-node@v4 + with: + node-version: "23.x" + + - name: Install dependencies + run: yarn install + + - name: Download all blobs + uses: actions/download-artifact@v4 + with: + path: all-blob-reports + pattern: blob-report-* + merge-multiple: true + + - name: Merge into HTML Report + run: npx playwright merge-reports --reporter html ./all-blob-reports + + - name: Upload Final HTML Report + uses: actions/upload-artifact@v4 + with: + name: final-playwright-report + path: playwright-report/ + retention-days: 2 diff --git a/.gitignore b/.gitignore index e2b72db8e..0576f28bc 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,6 @@ package-lock.json packages/*/yarn.lock -# Cypress -cypress/screenshots -cypress/videos - node_modules # Verdaccio diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ce541f0a9..00c201f60 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -20,6 +20,7 @@ "ms-vsliveshare.vsliveshare", // Live Share "visualstudioexptteam.vscodeintellicode", // IntelliCode "thundergang.thunder-client", // Thunder Client + "ms-playwright.playwright", // Playwright // GITHUB "eamodio.gitlens", // GitLens diff --git a/cypress.json b/cypress.json deleted file mode 100644 index ea606fa3b..000000000 --- a/cypress.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "integrationFolder": "cypress/tests", - "screenshotOnRunFailure": true, - "env": { - "FAIL_FAST_STRATEGY": "run", - "FAIL_FAST_ENABLED": true - } -} diff --git a/cypress/README.md b/cypress/README.md deleted file mode 100644 index 0291ea446..000000000 --- a/cypress/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Cypress End-to-end tests for the MathType Web Integrations - -[Cypress.io](https://www.cypress.io) is an open source, MIT licensed end-to-end test runner. - -**Important**: More information about testing commands and how to use instructions on the [Testing section](/docs/development/testing/README.md) of this project documentation. - -## Folder structure - -These folders hold end-to-end tests and supporting files for the Cypress Test Runner. - -- [fixtures](fixtures) holds sample data for mocking our tests, [read more](https://on.cypress.io/fixture). -- [tests](tests) holds the actual integration test files, [read more](https://on.cypress.io/writing-and-organizing-tests) -- [plugins](plugins) allow you to customize how tests are loaded, [read more](https://on.cypress.io/plugins) -- [support](support) includes our custom commands, [read more](https://on.cypress.io/writing-and-organizing-tests#Support-file) - -## What do we want to test? - -A minimal MathType Integration for the web that includes mathematical formula editing & rendering features from Wiris. - -### Elements - -It would consist on these next HTML elements: - -1. an editable element, with a default value or not -2. a read-only element with its content synchronized to the previous element through an `onChange` event -3. the MathType and ChemType buttons, over the editable content - -Also, whenever the MathType or ChemType buttons are clicked, or a mathematical expression inside the textarea is clicked, - -4. a MathType Modal Window is shown to the user to edit the formula. - -### Source code - -A canonical representation of the HTML source code of this app would look like this: - -```html - - - - - -
...
- - -``` - -### UI Preview - -This next diagram represents a common E2E interaction with the MathType for the Web UI elements of the canonical MathType Integration sample app: adding a mathematical formula from scratch using the MathType editor. - -![Minimal MathType integration snapshot](mathtype-web-app.png) - -### MathType Modal Window - -The MathType Modal Window consists on the following elements: - -![Diagram of the MathType modal window](modal.jpg) - -> This diagram is based on a comment in the source code of [`modal.js`](/packages/mathtype-html-integration-devkit/src/modal.js) from the `mathtype-html-integration-devkit` package. - -## `cypress.json` file - -You can configure project options in the [../cypress.json](../cypress.json) file, see [Cypress configuration doc](https://on.cypress.io/configuration). - -The current values we've set by default for all environments are: - -```json - // By default, point to the demos/html/generic App. - "baseUrl": "http://localhost:8007", - // Override default 'integration' value to 'tests' - "integrationFolder": "cypress/tests", - "screenshotOnRunFailure": true, - // Optimize test execution by activating Fail_fast feature everywhere. - "env": - { - "FAIL_FAST_STRATEGY": "run", - "FAIL_FAST_ENABLED": true - } - -``` - -The main cypress.json files will hold the default settings for all tests in all environments: local, build, ... - -## More information - -- [https://github.com/cypress.io/cypress](https://github.com/cypress.io/cypress) -- [https://docs.cypress.io/](https://docs.cypress.io/) -- [Writing your first Cypress test](http://on.cypress.io/intro) diff --git a/cypress/YYY-ZZZ.category.js b/cypress/YYY-ZZZ.category.js deleted file mode 100644 index aca165ed6..000000000 --- a/cypress/YYY-ZZZ.category.js +++ /dev/null @@ -1,32 +0,0 @@ -/// -// *********************************************************** -// Test case: {Test.ID} Ex. INT-STD-014 -// Title: {Test.Title} Ex. User creates a new formula from scratch using MathType. -// Document: {Test.URL} Ex. https://docs.google.com/document/d/1fiGsUwqNIsjiaJI0aGfH_aNX5OJKEHkfWtfvlQkEEFI/edit -// Context: {Test.Type} - {Text.category} Ex. UI - Formula insertion/edition -// Issue: {Test.Issue} Ex. KB-99999 -// *********************************************************** - -describe("Formula insertion/edition", () => { - beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - // and visit page. - cy.visit("/"); - // Eventually, clear the editor content: by default the editor could include a mathematical expression. - cy.getTextEditor().clear(); - }); - - it("User creates a new formula from scratch using MathType", function () { - // Open a new MathType modal window clicking the button - cy.clickButtonToOpenModal(); - // then type a general formula inside the editor - cy.typeInModal(this.formulas["formula-general"]); - // and insert the formula at the beginning of the target element using the 'Insert' button. - cy.clickModalButton("insert"); - - // Check the recently inserted formula - // and validate is rendered succesfully using MathType services. - cy.getFormula(0).isRendered(); - }); -}); diff --git a/cypress/fixtures/formulas.json b/cypress/fixtures/formulas.json deleted file mode 100644 index 8623cf382..000000000 --- a/cypress/fixtures/formulas.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "formula-general": "x + y", - "formula-general-alt-en": "x space plus space y", - "formula-general-alt-es": "x espacio más espacio y", - "formula-addition": " = z", - "formula-total-alt-es": "x espacio más espacio y espacio igual espacio z", - "text-alignment": "2222", - "formula-alignment": "2+2", - "latex-general": "$$\\cos^2(x)+\\sin^2(x)$$", - "latex-general-alt-en": "cos squared left parenthesis x right parenthesis plus sin squared left parenthesis x right parenthesis", - "latex-addition": "=log(e)", - "quadratic": "x=-b±b2-4ac2a", - "quadratic-accessible-en": "x equals fraction numerator negative b plus-or-minus square root of b squared minus 4 a c end root over denominator 2 a end fraction", - "formula-drawn": [ - { "x": 0, "y": 0 }, - { "x": 0, "y": 1 }, - { "x": 1, "y": 0 }, - { "x": 1, "y": 1 } - ] -} diff --git a/cypress/mathtype-web-app.png b/cypress/mathtype-web-app.png deleted file mode 100644 index b2c4cb2d22c9eb9b29c0800b6459b6d977aa6c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89806 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 @0+gv5^AhA6AS*!PWRQ9pRkE- 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

}-yD%&9_O~sz4*2gyAvJIgaim-g*$(f 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 -// *********************************************************** -// This example plugins/index.js can be used to load plugins -// -// You can change the location of this file or turn off loading -// the plugins file with the 'pluginsFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/plugins-guide -// *********************************************************** - -// This function is called when a project is opened or re-opened (e.g. due to -// the project's config changing) - -/** - * @type {Cypress.PluginConfig} - */ -module.exports = (on, config) => { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config - // eslint-disable-next-line global-require - require("cypress-fail-fast/plugin")(on, config); - return config; -}; diff --git a/cypress/support/commands.d.ts b/cypress/support/commands.d.ts deleted file mode 100644 index 7a95b4714..000000000 --- a/cypress/support/commands.d.ts +++ /dev/null @@ -1,119 +0,0 @@ -/// - -declare namespace Cypress { - interface Chainable { - /** - * Yield the text editor. - */ - getTextEditor(); - - /** - * Click the MathType or ChemType button in the text editor. - * @param chem {default = false} whether to click the MathType or ChemType button. - */ - clickButtonToOpenModal(chem?: boolean); - - /** - * Append the given string in the text editor at the given offset. - * @param text string to append in the editor - * @param offset position of the caret when typing. At the end if omitted. Not yet implemented - */ - typeInTextEditor(text: string, offset?: number); - - /** - * Append the given text in MathType. - * @param formula formula to append in the editor - * @param paste whether the text appended is typed or pasted. Not yet implemented - */ - typeInModal(formula: string, paste?: boolean); - - /** - * Click the specified button on the MathType modal dialog - * @param {string} button Button identifier. Values can be: - * - insert: inserts a formula - * - cancel: closes the modal. If there are changes, opens a confirmation dialog - * - confirmationClose: discards the changes when closing the modal dialog - * - confirmationCancel: cancels the confirmation dialog and returns to editing the formula - * - xClose: closes the modal through the top right x button - * - maximize: makes the modal full screen through the top right button - * - stack: changes the modal to not be full screen through the top right button - * - minimize: hides the modal, if visible, and shows it again, if not visible, through the top right button - * - hand: opens/closes Hand mode - */ - clickModalButton(button: string); - - /** - * Insert a formula from scratch - * @param formula formula to append in the editor - * @param chem {default = false} whether to click the MathType or ChemType button - * @param paste {default = false} whether the text appended is typed or pasted. Not yet implemented - */ - insertFormulaFromScratch(formula: string, chem?: boolean, paste?: boolean); - - /** - * Obtain a formula from a given identifier. - * @param formulaId identifier of the formula to obtain. The identifier is the 0-indexed position of the formula inside the text editor. - * @returns the formula - */ - getFormula(formulaId: number): Chainable; - - /** - * Select a LaTeX formula from a given identifier. - * @param formulaId id of the formula to obtain. The id is the 0-indexed position of the formula inside the text editor. - * @returns the formula - */ - selectLatexFormula(formulaId: number): Chainable; - - /** - * Edit an existing MathType formula by clicking the MathType or ChemType button. - * Must be applied to a father command unless latex is set to true. - * @param subject the formula to apply this command to. Not yet implemented - * @param options object with options: - * chem {default = false} whether to edit a chem or math formula - * latex {default = false} whether it is a LaTeX formula or not - * formulaId id of the formula to edit. Only used when latex is set to true - * formula string to be added when editing the formula - */ - editFormula( - subject: Element, - formula: string, - options?: { chem?: boolean; latex?: boolean; formulaId?: number }, - ): Chainable | null; - - /** - * Press the ESC keyboard button - */ - pressESCButton(); - - /** - * Not yet implemented. - * Drag and drop the MathType or ChemType modal - * @param coordinates place to drop the modal - */ - dragDropModal(coordinates: { x: number; y: number }); - - /** - * Not yet implemented. - * Drag and drop a Formula. - * Must be applied to a father command. - * @param subject the formula to apply this command to - * @param coordinates place to drop the formula - */ - dragDropFormula(subject: Element, coordinates: { x: number; y: number }): Chainable; - - /** - * Not yet implemented. - * Draw a formula with Hand mode. - * @param points list of ordered coordinates to draw - */ - drawFormula(points: { x: number; y: number }[]); - - /** - * Not yet implemented. - * Resize a given formula. - * Must be applied to a father command. - * @param subject the formula to apply this command to - */ - resizeFormula(subject: Element): Chainable; - } -} diff --git a/cypress/support/commands.js b/cypress/support/commands.js deleted file mode 100644 index 66cfd3a8b..000000000 --- a/cypress/support/commands.js +++ /dev/null @@ -1,161 +0,0 @@ -import { createSelection } from "./utils"; - -Cypress.Commands.add("getTextEditor", () => { - cy.get("div[contenteditable]"); -}); - -Cypress.Commands.add("clickButtonToOpenModal", (chem = false) => { - if (!chem) { - cy.get("#editorIcon").click(); - } else { - cy.get("#chemistryIcon").click(); - } - cy - // We wait for the toolbar to load before typing, as it is a good indicator of whether MathType has fully loaded. - // This depends on the implementation of the modal and is not too desirable, but works well. - .get(".wrs_toolbar") - .should("be.visible"); -}); - -Cypress.Commands.add("typeInTextEditor", (text) => { - cy.getTextEditor().type(text); -}); - -Cypress.Commands.add("typeInModal", (formula) => { - cy.get(".wrs_focusElementContainer > input").type(formula); -}); - -Cypress.Commands.add("clickModalButton", (button) => { - switch (button) { - case "insert": - cy.get(".wrs_modal_button_accept").click(); - break; - case "cancel": - cy.get(".wrs_modal_button_cancel").click(); - break; - case "confirmationClose": - cy.get("#wrs_popup_accept_button").click({ force: true }); - break; - case "confirmationCancel": - cy.get("#wrs_popup_cancel_button").click({ force: true }); - break; - case "xClose": - cy.get(".wrs_modal_close_button").click(); - break; - case "maximize": - cy.get(".wrs_modal_maximize_button").click(); - break; - case "stack": - cy.get(".wrs_modal_stack_button").click(); - break; - case "minimize": - cy.get(".wrs_modal_minimize_button").click(); - break; - case "hand": - cy.get(".wrs_handWrapper > input").click(); - break; - default: - throw new Error(`The button '${button}' does not exist. Check the clickModalButton documentation.`); - } -}); - -// eslint-disable-next-line no-unused-vars -Cypress.Commands.add("insertFormulaFromScratch", (formula, chem = false, paste = false) => { - // Open the mathtype modal - cy.clickButtonToOpenModal(chem); - - // Type the formula that matxes the previous inserted text on the mathtype modal - cy.typeInModal(formula); - - // Insert the formula - cy.clickModalButton("insert"); -}); - -Cypress.Commands.add("getFormula", (formulaId) => { - cy.get(".Wirisformula") - .should("have.length.at.least", formulaId + 1) - .eq(formulaId); -}); - -Cypress.Commands.add("selectLatexFormula", (formulaId) => { - let block; - let startOffset; - let endOffset; - - // Get the block, and offsets of the latex formula - let countFormula = 0; - const edit = Cypress.$("#editable"); - const kids = edit[0].children; - for (let j = 0; j < kids.length; ++j) { - const elem = kids[j]; - const html = elem.innerHTML; - let prevDolar = false; - let waitEndDolar = false; - for (let i = 0; i < html.length; i++) { - const caracter = html[i]; - if (caracter === "$" && prevDolar === false && waitEndDolar === false) { - prevDolar = true; - } else if (caracter === "$" && prevDolar === true && waitEndDolar === false) { - prevDolar = false; - waitEndDolar = true; - if (countFormula === formulaId) startOffset = i + 1; - } else if (caracter === "$" && prevDolar === false && waitEndDolar === true) { - prevDolar = true; - if (countFormula === formulaId) endOffset = i; - else countFormula += 1; - } else if (caracter === "$" && prevDolar === true && waitEndDolar === true) { - prevDolar = false; - waitEndDolar = false; - } - if (startOffset && endOffset) { - block = j; - break; - } - } - if (startOffset && endOffset) break; - } - - // Throw error if the latex formula identifier does not correspond to a latex formula on the test - if (!startOffset || !endOffset) { - throw new Error(`The latex formula number '${formulaId}' does not exist`); - } - - // Select the latex formula - cy.getTextEditor() - .children() - .eq(block) - .trigger("mousedown") - .then(($el) => { - createSelection($el, startOffset, endOffset); - }) - .trigger("mouseup"); - cy.document().trigger("selectionchange"); -}); - -Cypress.Commands.add( - "editFormula", - { prevSubject: "optional" }, - ( - subject, - formula, - options = { - chem: false, - latex: false, - formulaId: 0, - }, - ) => { - // Select the latex formula and edit it - if (options.latex) { - cy.selectLatexFormula(options.formulaId); - cy.clickButtonToOpenModal(options.chem); - cy.typeInModal(formula); - cy.clickModalButton("insert"); - } else { - throw new Error("Not implemented yet"); - } - }, -); - -Cypress.Commands.add("pressESCButton", () => { - cy.get("body").type("{esc}"); -}); diff --git a/cypress/support/index.js b/cypress/support/index.js deleted file mode 100644 index fececccb1..000000000 --- a/cypress/support/index.js +++ /dev/null @@ -1,22 +0,0 @@ -// *********************************************************** -// This example support/index.js is processed and -// loaded automatically before your test files. -// -// This is a great place to put global configuration and -// behavior that modifies Cypress. -// -// You can change the location of this file or turn off -// automatically serving support files with the -// 'supportFile' configuration option. -// -// You can read more here: -// https://on.cypress.io/configuration -// *********************************************************** - -// Import commands.js using ES2015 syntax: -import "./commands"; -import "./validations"; -import "cypress-fail-fast"; - -// Alternatively you can use CommonJS syntax: -// require('./commands') diff --git a/cypress/support/utils.js b/cypress/support/utils.js deleted file mode 100644 index a2d60c7c6..000000000 --- a/cypress/support/utils.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Create a selection in the document in the given field, at the given start and end positions. - * @param field DOM element to make the selection in - * @param start index of the character to start the selecion in - * @param end index of the character to end the selection in - */ -function createSelection(field, start, end) { - const el = field[0]; - const document = el.ownerDocument; - const range = document.createRange(); - range.selectNodeContents(el); - document.getSelection().removeAllRanges(range); - if (start) range.setStart(el.firstChild, start); - if (end) range.setEnd(el.firstChild, end); - document.getSelection().addRange(range); -} - -// eslint-disable-next-line import/prefer-default-export -export { createSelection }; diff --git a/cypress/support/validations.d.ts b/cypress/support/validations.d.ts deleted file mode 100644 index 83fc62762..000000000 --- a/cypress/support/validations.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -/// - -declare namespace Cypress { - interface Chainable { - /** - * Validate that the height of the given formula and the surrounding text is the same. - * Must be applied to a father command. - * @param subject the formula to apply this validation to - * @param preview {default = false} whether to check aligment on the preview or on the text editor - */ - isAligned(subject: Element, preview?: boolean): Chainable; - - /** - * Check that the given formula is rendered in the preview mode or the text editor area. - * Must be applied to a father command. - * @param subject the formula to apply this validation to - * @param preview {default = false} whether to check aligment on the preview or on the text editor - */ - isRendered(subject: Element, preview?: boolean): Chainable; - - /** - * Validates that Hand mode is activated. - */ - isHandModeOn(); - - /** - * Validates that the ChemType modal is open. - */ - isChemTypeOn(); - - /** - * Check that the text inside the modal matches the given text string. - * @param text the text to match the modal content against - */ - modalTextEquals(text: string); - } -} diff --git a/cypress/support/validations.js b/cypress/support/validations.js deleted file mode 100644 index dc5f2cebd..000000000 --- a/cypress/support/validations.js +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line no-unused-vars -Cypress.Commands.add("isRendered", { prevSubject: "element" }, (subject, preview = false) => { - cy.wrap(subject).should("be.visible"); -}); diff --git a/cypress/tests/e2e/STD-018.insertion.js b/cypress/tests/e2e/STD-018.insertion.js deleted file mode 100644 index cebb8a13a..000000000 --- a/cypress/tests/e2e/STD-018.insertion.js +++ /dev/null @@ -1,29 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-018 -// Title: User writes a latex formula and visualizes it on preview. -// Document: https://docs.google.com/document/d/1fiGsUwqNIsjiaJI0aGfH_aNX5OJKEHkfWtfvlQkEEFI/edit -// Context: E2E / Insertion -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("an inserted latex formula should be rendered on preview", function () { - // Type the formula that matxes the previous inserted text on the mathtype modal - cy.typeInTextEditor(this.formulas["latex-general"]); - - // // Click the update button - // cy.get('#btn_update').click(); - - // // Assert that the vertical align is -4px, which means that is aligner vertically (base) to the previous writen 2222 - // cy.getFormula(0).isRendered().and('have.attr', 'alt', this.formulas['latex-general-alt-en']); -}); diff --git a/cypress/tests/e2e/STD-026.modal.js b/cypress/tests/e2e/STD-026.modal.js deleted file mode 100644 index 94a61f222..000000000 --- a/cypress/tests/e2e/STD-026.modal.js +++ /dev/null @@ -1,38 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-026 -// Title: Validate Hand formulas open Hand directly when edited -// Document: https://docs.google.com/document/d/10nBVV0y3O5Eo7hEHtok8-s8zsZqVId7s_jwT5vziy7g/edit -// Context: E2E / Modal -// Issue: - -// *********************************************************** -beforeEach(() => { - // Load fixtures - cy.fixture("formulas.json").as("formulas"); - - // Visit page - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("Validate Hand formulas open Hand directly when edited", function () { - // Click the MT button on the HTML editor toolbar - cy.clickButtonToOpenModal(); - - // Switch to Hand editing mode by clicking the Hand icon in the MT modal window - // Draw a formula - // Instead of drawing the formula by hand, we type them in and let Hand transform them - cy.typeInModal(this.formulas["formula-general"]); - cy.clickModalButton("hand"); - - // Click the OK button in the MT modal window - cy.clickModalButton("insert"); - - // Double-click the created Hand formula - cy.getFormula(0).dblclick(); - - // MT modal window opens and Hand editing mode is already displayed with the formula - cy.get("canvas").should("be.visible"); -}); diff --git a/cypress/tests/e2e/STD-028.modal.js b/cypress/tests/e2e/STD-028.modal.js deleted file mode 100644 index 7bf395bf2..000000000 --- a/cypress/tests/e2e/STD-028.modal.js +++ /dev/null @@ -1,32 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-028 -// Title: Validate switch between CT and MT, and viceversa -// Document: https://docs.google.com/document/d/1PlqZUsfta5GMXXRq89oy50NTW5zBQCeUi8YBdO83Yug/edit -// Context: E2E / Modal -// Issue: - -// *********************************************************** -beforeEach(() => { - // Load fixtures - cy.fixture("formulas.json").as("formulas"); - - // Visit page - cy.visit("/"); -}); - -it("Validate switch between CT and MT, and viceversa", () => { - // Click the MT icon in the HTML editor toolbar. - cy.clickButtonToOpenModal(); - - // Click the CT icon in the HTML editor toolbar - cy.clickButtonToOpenModal(true); - - // MT modal window changes to CT modal window. - cy.get(".wrs_modal_title").eq(0).should("have.text", "ChemType"); - - // Click the MT icon in the HTML editor toolbar. - cy.clickButtonToOpenModal(); - - // CT modal window changes to MT modal window. - cy.get(".wrs_modal_title").eq(0).should("have.text", "MathType"); -}); diff --git a/cypress/tests/sandbox/.gitkeep b/cypress/tests/sandbox/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/cypress/tests/smoke/.gitkeep b/cypress/tests/smoke/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/cypress/tests/smoke/STD-001.insertion.js b/cypress/tests/smoke/STD-001.insertion.js deleted file mode 100644 index f8ef0540b..000000000 --- a/cypress/tests/smoke/STD-001.insertion.js +++ /dev/null @@ -1,29 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-001 -// Title: Validate alignment of a formula after insertion. -// Document: https://docs.google.com/document/d/1RTZlelOssfwWAqx-ilTvRatrEQoaFIpk6ErWa7xMwIw/edit -// Context: UI / Insertion -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("an inserted formula that looks like plain text should be aligned with the same plain text", function () { - // Type the text plane on the text editor - cy.typeInTextEditor(this.formulas["text-alignment"]); - - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-alignment"]); - - // Assert that the vertical align is -4px, which means that is aligner vertically (base) to the previous writen 2222 - cy.getFormula(0).should("have.attr", "style").and("contain", "vertical-align: -4px"); -}); diff --git a/cypress/tests/smoke/STD-002.insertion.js b/cypress/tests/smoke/STD-002.insertion.js deleted file mode 100644 index 42b4f6590..000000000 --- a/cypress/tests/smoke/STD-002.insertion.js +++ /dev/null @@ -1,32 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-002 -// Title: Validate alignment of a formula on preview. -// Document: https://docs.google.com/document/d/1aAPzvAe8WEEXgZECLsmml07TG4l3Fdy3AlJiaFSp6Iw/edit -// Context: UI / Insertion -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("an inserted formula that looks like plain text should be aligned with the same plane text on preview", function () { - // Type the text plane on the text editor - cy.typeInTextEditor(this.formulas["text-alignment"]); - - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-alignment"]); - - // // Click the update button - // cy.get('#btn_update').click(); - - // // Assert that the vertical align is -4px, which means that is aligner vertically (base) to the previous writen 2222 - // cy.getFormula(1).should('have.attr', 'style').and('contain', 'vertical-align: -4px'); -}); diff --git a/cypress/tests/smoke/STD-003.insertion.js b/cypress/tests/smoke/STD-003.insertion.js deleted file mode 100644 index d6818bc2a..000000000 --- a/cypress/tests/smoke/STD-003.insertion.js +++ /dev/null @@ -1,36 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-003 -// Title: Validate caret is placed after the inserted formula -// Document: https://docs.google.com/document/d/1YjSGL5yfvdMQOrFrqL48tQ2vUgfxD6YNSUgqsH65xI8/edit -// Context: UI / Insertion -// Issue: - -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("Validate Hand formulas open Hand directly when edited", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // User types the string ‘wiris’ on the HTML editor - cy.typeInTextEditor("wiris"); - - // The string wiris is written right after the formula - cy.getTextEditor() - .children() - .first() // First paragraph - .then(($p) => { - // Get the second node inside the paragraph - cy.wrap($p[0].childNodes[1].textContent); - }) - .should("eq", "wiris"); -}); diff --git a/cypress/tests/smoke/STD-004.images.js b/cypress/tests/smoke/STD-004.images.js deleted file mode 100644 index 648bdb82e..000000000 --- a/cypress/tests/smoke/STD-004.images.js +++ /dev/null @@ -1,28 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-004 -// Title: Validate wiris formulas contain class with value Wirisformula. -// Document: https://docs.google.com/document/d/1LCM0z-kmZKdwpSMnrosMsyRVmZ5Zg5TNw_-VEkYyZng/edit -// Context: Integration / Image -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("formula should have wirisformula class", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // Get the formula by it's alt text and assert it has the Wirisformula class - // We could find the formula by using getFormula, but internally, that looks for - // .Wirisformula, so it defeats the purpose. That's why we use the alt instead. - cy.get(`img[alt="${this.formulas["formula-general-alt-es"]}"]`).should("have.class", "Wirisformula"); -}); diff --git a/cypress/tests/smoke/STD-005.images.js b/cypress/tests/smoke/STD-005.images.js deleted file mode 100644 index d0673d1d4..000000000 --- a/cypress/tests/smoke/STD-005.images.js +++ /dev/null @@ -1,35 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-005 -// Title: Validate formula height and width is correct. -// Document: https://docs.google.com/document/d/167zTPA2JxtbPaxdCp8kBKIEHoRyjHZnIWYmOPLEEMY4/edit -// Context: UI / Image -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("The inserted formula should have the correct width and height", () => { - // Open the mathtype modal - cy.clickButtonToOpenModal(); - - // Write a mathtype formula: x/3 - cy.typeInModal("{ctrl}/").type("x").type("{downarrow}3"); - - // Insert the written formula by clicking the insert button on the modal - cy.clickModalButton("insert"); - - // Get the previous inserted formula - cy.getFormula(0).then(($formula) => { - const formula = $formula[0]; - - // Assert that the width and height are the ones writen in the test case for the inserted formula - expect(formula.width).to.equal(18); - expect(formula.height).to.equal(41); - }); -}); diff --git a/cypress/tests/smoke/STD-007.images.js b/cypress/tests/smoke/STD-007.images.js deleted file mode 100644 index d743c7340..000000000 --- a/cypress/tests/smoke/STD-007.images.js +++ /dev/null @@ -1,26 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-007 -// Title: Validate wiris formulas contain alt attribute. -// Document: https://docs.google.com/document/d/1Sa83zG7-sRpS1WIPQNTLtaeUFrwqZVSpdTbrtnkZHVI/edit -// Context: UI / Image -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("A wiris formula should have the alt attribute", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // Get the previous inserted formula - cy.getFormula(0).should("have.attr", "alt"); -}); diff --git a/cypress/tests/smoke/STD-010.images.js b/cypress/tests/smoke/STD-010.images.js deleted file mode 100644 index 12ee07397..000000000 --- a/cypress/tests/smoke/STD-010.images.js +++ /dev/null @@ -1,30 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-010 -// Title: Validate the formula is the same on editing mode and on preview . -// Document: https://docs.google.com/document/d/1bRxBBG_OLS_1HTGdOBRbHHIRJPZHboVJ2Zy68z80fyY/edit -// Context: UI / Images -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("an inserted formula should be the same on preview when this is updated", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"], true); - - // // Click the update button - // cy.get('#btn_update').click(); - - // // Assert that the vertical align is -4px, which means that is aligner vertically (base) to the previous writen 2222 - // cy.getFormula(0).isRendered().and('have.attr', 'alt', this.formulas['formula-general-alt-es']); - // cy.getFormula(1).isRendered().and('have.attr', 'alt', this.formulas['formula-general-alt-en']); -}); diff --git a/cypress/tests/smoke/STD-011.modal.js b/cypress/tests/smoke/STD-011.modal.js deleted file mode 100644 index 0f11b4449..000000000 --- a/cypress/tests/smoke/STD-011.modal.js +++ /dev/null @@ -1,20 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-011 -// Title: Check Hand icon is visible. -// Document: https://docs.google.com/document/d/12cxOZRwLVhE_Aby2Ckjjee2WWJcTuceOcXmuBgZBAlE/edit -// Context: UI / Modal -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Visit the page. - cy.visit("/"); -}); - -it("Hand icon should be visible on the mathtype modal", () => { - // Open the mathtype modal - cy.clickButtonToOpenModal(); - - // Check that the hand button is visible on mathtype modal - cy.get(".wrs_handWrapper > input").should("be.visible"); -}); diff --git a/cypress/tests/smoke/STD-012.modal.js b/cypress/tests/smoke/STD-012.modal.js deleted file mode 100644 index e8c73abc2..000000000 --- a/cypress/tests/smoke/STD-012.modal.js +++ /dev/null @@ -1,32 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-011 -// Title: Check Minimize, Maximize, and Close icons are visible in the modal. -// Document: https://docs.google.com/document/d/1soW156YvORb3TIumKmlIjhpRccme5c_YyQhVLypIh0s/edit -// Context: UI / Modal -// Issue: KB-13069 -// *********************************************************** -describe("Resize modal icons are visible", () => { - beforeEach(() => { - // Visit the page. - cy.visit("/"); - - // Open the mathtype modal - cy.clickButtonToOpenModal(); - }); - - it("minimize icon should be visible on mathtype modal", () => { - // Check that minimize button is visible on mathtype modal - cy.get(".wrs_modal_minimize_button").should("be.visible"); - }); - - it("maximize icon should be visible on mathtype modal", () => { - // Check that minimize button is visible on mathtype modal - cy.get(".wrs_modal_maximize_button").should("be.visible"); - }); - - it("close icon should be visible on mathtype modal", () => { - // Check that minimize button is visible on mathtype modal - cy.get(".wrs_modal_close_button").should("be.visible"); - }); -}); diff --git a/cypress/tests/smoke/STD-014.insertion.js b/cypress/tests/smoke/STD-014.insertion.js deleted file mode 100644 index 752ff3d32..000000000 --- a/cypress/tests/smoke/STD-014.insertion.js +++ /dev/null @@ -1,23 +0,0 @@ -/// - -beforeEach(() => { - // Load fixtures - cy.fixture("formulas.json").as("formulas"); - - // Visit page - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("User creates a new formula from scratch using MT", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // MT editor modal window is closed. - cy.get(".wrs_modal_dialogContainer").should("not.to.be.visible"); - - // The formula is inserted at the beginning of the HTML editor content and perfectly rendered - cy.getFormula(0).isRendered(); -}); diff --git a/cypress/tests/smoke/STD-016.insertion.js b/cypress/tests/smoke/STD-016.insertion.js deleted file mode 100644 index 807c9d38d..000000000 --- a/cypress/tests/smoke/STD-016.insertion.js +++ /dev/null @@ -1,46 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-016 -// Title: User edits a formula by Double-click and inserts it. -// Document: https://docs.google.com/document/d/1bIZOmDigkvhMCpAcTf81nz3Wp252aZpyPol9AxY0OXY/edit -// Context: E2E / Insertion -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("should be able to edit an existing formula", { retries: 3 }, function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // Double-click the previous inserted formula to start editing it - cy.getFormula(0).dblclick(); - - // Assert that the toolbar is visible so that we know the modal is fully loaded - cy.get(".wrs_toolbar").should("be.visible"); - - // Wait for the formula clocked to be loaded - cy.get(".wrs_container").invoke("text").should("contain", "y"); // .children().should('have.length.at.least', 9); - - // Modify the opened formula - cy.get(".wrs_focusElement").click().type(this.formulas["formula-addition"]); - // cy.typeInModal('{movetostart}{del}{del}{del}'); - - // Click the insert button on the mathtype modal to insert the previous edited formula - cy.clickModalButton("insert"); - - // Expect the formula to be edited propertly - cy.getFormula(0) - .should("have.attr", "alt") - .then((alt) => { - expect(alt).to.equal(this.formulas["formula-total-alt-es"]); - }); -}); diff --git a/cypress/tests/smoke/STD-017.insertion.js b/cypress/tests/smoke/STD-017.insertion.js deleted file mode 100644 index 769c3e2e3..000000000 --- a/cypress/tests/smoke/STD-017.insertion.js +++ /dev/null @@ -1,46 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-017 -// Title: User edits a formula and cancels the edition. -// Document: https://docs.google.com/document/d/1CqlEq9p0oVrRhpXjaguehtA4LBl9157qSZ_vg0pdswM/edit -// Context: E2E / Insertion -// Issue: KB-13069 -// *********************************************************** - -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("should be able to edit and existing formula and cancel the edition", function () { - // Insert a new MathType formula from scratch on the editor - cy.insertFormulaFromScratch(this.formulas["formula-general"]); - - // Double-click the previous inserted formula to start editing it - cy.getFormula(0).dblclick(); - - // Edit the opened formula by adding some other content (=y) - cy.typeInModal(this.formulas["formula-addition"]); - - // Click the cancel button after editing the formula on the mathtype modal - cy.clickModalButton("cancel"); - - // CLick the close button on the confirmation close mathtype modal the cancel all changes and close it - cy.clickModalButton("confirmationClose"); - - // Assert the formula has no changes - cy.getFormula(0) - .should("have.attr", "alt") - .then((alt) => { - expect(alt).to.equal(this.formulas["formula-general-alt-es"]); - }); - - // Verify the formula is propertly rendered - cy.getFormula(0).isRendered(); -}); diff --git a/cypress/tests/smoke/STD-019.insertion.js b/cypress/tests/smoke/STD-019.insertion.js deleted file mode 100644 index 9b43252c8..000000000 --- a/cypress/tests/smoke/STD-019.insertion.js +++ /dev/null @@ -1,33 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-019 -// Title: User edits a latex formula. -// Document: https://docs.google.com/document/d/1tkYS_g5ZZcjIiUT-nMPv4G2AGlcumw9siTY_B1bFtkE/edit -// Context: E2E / Insertion -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Load fixture data - cy.fixture("formulas.json").as("formulas"); - - // Visit the page. - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("should be able to edit an existing latex formula", function () { - // Write a latex formula on the text editor - cy.typeInTextEditor(this.formulas["latex-general"]); - - // Edit the first latex formula with mathtype - cy.editFormula(this.formulas["latex-addition"], { - chem: false, - latex: true, - formulaId: 0, - }); - - // Expect that the text editor contains the latex formula - cy.getTextEditor().invoke("text").should("contain", "$$\\cos^2(x)+\\sin^2(x)=\\log(e)$$"); -}); diff --git a/cypress/tests/smoke/STD-020.modal.js b/cypress/tests/smoke/STD-020.modal.js deleted file mode 100644 index 14b85859c..000000000 --- a/cypress/tests/smoke/STD-020.modal.js +++ /dev/null @@ -1,23 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-020 -// Title: User opens MT and closes it via ESC -// Document: https://docs.google.com/document/d/1v6NyWfvoFrgX7CWufN12_tCzyO9ITvX3HTAXTIYWCSQ/edit -// Context: E2E / Modal -// Issue: - -// *********************************************************** -beforeEach(() => { - // Visit page - cy.visit("/"); -}); - -it("User opens MT and closes it via ESC", () => { - // Click the MT button in the HTML editor toolbar - cy.clickButtonToOpenModal(); - - // Press the ESC key - cy.pressESCButton(); - - // MT editor modal window is closed - cy.get(".wrs_modal_dialogContainer").should("not.be.visible"); -}); diff --git a/cypress/tests/smoke/STD-021.modal.js b/cypress/tests/smoke/STD-021.modal.js deleted file mode 100644 index 02076ec3c..000000000 --- a/cypress/tests/smoke/STD-021.modal.js +++ /dev/null @@ -1,23 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-021 -// Title: Open and close the mathtype modal without adding any formula. -// Document: https://docs.google.com/document/d/1MloNEApADlavZHfODqScyGCNUrZyMgiGYrPx46c4waQ/edit -// Context: E2E / Modal -// Issue: KB-13069 -// *********************************************************** -beforeEach(() => { - // Visit the page. - cy.visit("/"); -}); - -it("should be able to edit and existing formula and cancel the edition", () => { - // Open the mathtype modal bu clicking the mathtype button - cy.clickButtonToOpenModal(); - - // Click the cancel button on the mathtype modal to close the modal - cy.clickModalButton("cancel"); - - // Verify the modal is closed - cy.get(".wrs_focusElement").should("not.be.visible"); -}); diff --git a/cypress/tests/smoke/STD-022.modal.js b/cypress/tests/smoke/STD-022.modal.js deleted file mode 100644 index 77a8e842e..000000000 --- a/cypress/tests/smoke/STD-022.modal.js +++ /dev/null @@ -1,40 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-022 -// Title: User opens MT, edits an equation and Cancels. Accepts the ‘are you sure you want to leave?’ dialog -// Document: https://docs.google.com/document/d/11R4j3ZW0a50Lp02frqihtfZPeBFAYfN_xtqrs3AejdM/edit -// Context: E2E / Modal -// Issue: - -// *********************************************************** -beforeEach(() => { - // Load fixtures - cy.fixture("formulas.json").as("formulas"); - - // Visit page - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("User opens MT, edits an equation and Cancels. Accepts the ‘are you sure you want to leave?’ dialog", function () { - // Click on the MT icon in the HTML editor toolbar - cy.clickButtonToOpenModal(); - - // Type the formula - cy.typeInModal(this.formulas["formula-general"]); - - // Click the Cancel button in the MT editor - cy.clickModalButton("cancel"); - - // Click the Close button from the ‘Are you sure you want to leave?’ dialog - cy.clickModalButton("confirmationClose"); - - // The MT editor modal window is closed and... - cy.get(".wrs_modal_dialogContainer").should("not.to.be.visible"); - - // ... no formula is inserted to the HTML editor - // We check for the 2nd formula, as currently the demos come with one formula by default - // (So one .Wirisformula in the editor and one .Wirisformula in the preview) - cy.get(".Wirisformula").eq(1).should("not.exist"); -}); diff --git a/cypress/tests/smoke/STD-023.modal.js b/cypress/tests/smoke/STD-023.modal.js deleted file mode 100644 index 583add900..000000000 --- a/cypress/tests/smoke/STD-023.modal.js +++ /dev/null @@ -1,40 +0,0 @@ -/// -// *********************************************************** -// Test case: INT-STD-023 -// Title: User opens MT, edits an equation and closes the modal via X button. Denies the ‘are you sure you want to leave?’ dialog and inserts the formula -// Document: https://docs.google.com/document/d/1EaC9zB9eIADTk06j3TyPouOwzIp3AHael5zV39kOMyM/edit -// Context: E2E / Modal -// Issue: - -// *********************************************************** -beforeEach(() => { - // Load fixtures - cy.fixture("formulas.json").as("formulas"); - - // Visit page - cy.visit("/"); - - // Clear the editor content in order to reduce noise - cy.getTextEditor().clear(); -}); - -it("User opens MT, edits an equation and closes the modal via X button. Denies the ‘are you sure you want to leave?’ dialog and inserts the formula", function () { - // Click on the MT icon in the HTML editor toolbar - cy.clickButtonToOpenModal(); - - // Type the formula - cy.typeInModal(this.formulas["formula-general"]); - - // Click the ‘X’ button of the MT modal window in order to close it - cy.clickModalButton("xClose"); - - // Click the Cancel button from the ‘Are you sure you want to leave?’ dialog - cy.clickModalButton("confirmationCancel"); - - // Click the Insert button in the MT modal window - cy.clickModalButton("insert"); - - // The formula is rendered in the HTML editor - // We check for the 3rd formula, as currently the demos come with one formula by default - // (So one .Wirisformula in the editor and one .Wirisformula in the preview) - cy.getFormula(0).should("be.visible"); -}); diff --git a/cypress/tests/ui/.gitkeep b/cypress/tests/ui/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/cypress/tests/validation/.gitkeep b/cypress/tests/validation/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/demos/html/ckeditor4/project.json b/demos/html/ckeditor4/project.json index 7810740a5..380718602 100644 --- a/demos/html/ckeditor4/project.json +++ b/demos/html/ckeditor4/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/ckeditor4/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/ckeditor4/", + "port": 8001, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/ckeditor5/project.json b/demos/html/ckeditor5/project.json index 689e722fa..5b41a0d58 100644 --- a/demos/html/ckeditor5/project.json +++ b/demos/html/ckeditor5/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/ckeditor5/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/ckeditor5/", + "port": 8002, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/froala/project.json b/demos/html/froala/project.json index 8aab2e250..4694ea35e 100644 --- a/demos/html/froala/project.json +++ b/demos/html/froala/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/froala/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/froala/", + "port": 8004, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/generic/project.json b/demos/html/generic/project.json index 0d4aabc02..0a24290a8 100644 --- a/demos/html/generic/project.json +++ b/demos/html/generic/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/generic/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/generic/", + "port": 8007, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/tinymce5/project.json b/demos/html/tinymce5/project.json index e52f261d8..c55e604eb 100644 --- a/demos/html/tinymce5/project.json +++ b/demos/html/tinymce5/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/tinymce5/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/tinymce5/", + "port": 8006, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/tinymce6/project.json b/demos/html/tinymce6/project.json index b64f662b1..0bbc86e0e 100644 --- a/demos/html/tinymce6/project.json +++ b/demos/html/tinymce6/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/tinymce6/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/tinymce6/", + "port": 8008, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/tinymce7/project.json b/demos/html/tinymce7/project.json index b6f405d2b..516a47b74 100644 --- a/demos/html/tinymce7/project.json +++ b/demos/html/tinymce7/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/tinymce7/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/tinymce7/", + "port": 8009, + "spa": false, + "watch": false + } } } } diff --git a/demos/html/tinymce8/project.json b/demos/html/tinymce8/project.json index 5667ad149..a7da5967a 100644 --- a/demos/html/tinymce8/project.json +++ b/demos/html/tinymce8/project.json @@ -51,6 +51,16 @@ "lintFilePatterns": ["demos/html/tinymce8/**/*.{ts,tsx,js,jsx}"] }, "outputs": ["{options.outputFile}"] + }, + "serve-static": { + "executor": "@nx/web:file-server", + "dependsOn": ["build"], + "options": { + "staticFilePath": "demos/html/tinymce8/", + "port": 8010, + "spa": false, + "watch": false + } } } } diff --git a/docs/development/cicd/README.md b/docs/development/cicd/README.md index 9cdb40d03..5b6296287 100644 --- a/docs/development/cicd/README.md +++ b/docs/development/cicd/README.md @@ -15,28 +15,27 @@ This project uses [GitHub actions](https://github.com/features/actions) for the This job uses JSDoc library to generate a static site as an artifact called `mathtype-html-integration-devkit-docs.zip`, from the comments on the library code. -### Run Cypress tests with npm packages +### Run E2E tests +This workflow runs end-to-end tests across all supported HTML editors using Playwright. The tests are executed in a matrix strategy to enable parallel execution for each editor. See [docs/testing/README.md](../testing/README.md) for further details. -**[Deprecated]** +**Supported editors:** +- Generic HTML +- CKEditor 4 & 5 +- Froala +- TinyMCE 5, 6, 7 & 8 -Builds the packages using the source code available at npmjs and runs all available Cypress tests. +**Key features:** +- **Parallel execution**: Each editor runs in its own job for faster feedback +- **Multi-browser testing**: Tests run on Chromium, Firefox, and WebKit +- **Timeout protection**: Each job has a 30-minute timeout to prevent hanging +- **Test reporting**: Results are published using JUnit format with detailed reports +- **Artifact collection**: Test reports are collected as downloadable artifacts -- **On schedule**: every Monday at 1AM. It sends the test data to [Cypress Dashboard][cypress-dashboard]. It can be run on any branch. +**Workflow triggers:** +- Push to master branch +- Pull requests +- Manual dispatch -- **On demand**: a manual trigger that allows the user to send data to [Cypress Dashboard][cypress-dashboard], optionally. +The workflow builds the necessary packages, starts static file servers for each editor demo, and runs the Playwright test suite against them. -## Actions secrets -Secrets are GitHub environment variables that are encrypted. Anyone with collaborator access to this repository can use these secrets for Actions. - -| Name | Description | -| ------------------ | ----------------------------------------------------------------------------------------------------------- | -| GH_CICD_TOKEN | A GitHub token to allow detecting a build vs a re-run build. [More][cypress-action] | -| CYPRESS_PROJECT_ID | A 6 character string unique identifier for the project. | -| CYPRESS_RECORD_KEY | Cypress record key is an authentication key that allows to send record tests data to the Dashboard Service. | - -[Visit Secrets page at GitHub][secrets]. - -[secrets]: https://github.com/wiris/html-integrations/settings/secrets -[cypress-dashboard]: (https://cypress.io/dashboard/) -[cypress-action]: https://github.com/cypress-io/github-action diff --git a/docs/development/testing/README.md b/docs/development/testing/README.md index 5a129f87e..ef2af6066 100644 --- a/docs/development/testing/README.md +++ b/docs/development/testing/README.md @@ -1,52 +1,190 @@ -# Testing +# E2E Testing Documentation -[MathType Web Integrations](../../../README.md) → [Documentation](../../README.md) → [Development guide](../README.md) → Testing +## Overview -This project uses [Cypress][Cypress] to run integration and validation tests in order to cover all published packages. +This project uses Playwright for end-to-end testing across multiple HTML editor integrations. The testing setup supports parallel execution across different editors with configurable environments. -[Cypress]: https://www.cypress.io/ +## Test Structure -## Table of contents +The E2E tests are located in `/tests/e2e/` with the following structure: -- [Run all tests at once](#run-all-tests-at-once) -- [Run all the tests for a specific demo](#run-all-the-tests-for-a-specific-demo) +``` +tests/e2e/ +├── .env.example # Environment configuration template +├── .env # (Optional) Local environment configuration; git-ignored +├── playwright.config.ts # Playwright configuration +├── enums/ # Shared enums for test logic +├── helpers/ # Utility/helper functions +├── interfaces/ # Shared TypeScript interfaces +├── page-objects/ # Page object models +│ └── base_editor.ts # Base editor class +│ └── html/ # Page object for each editor test page +└── tests/ # Test specifications + ├── edit/ # Formula editing tests + │ ├── edit_corner_cases.spec.ts + │ ├── edit_hand.spec.ts + │ ├── edit_via_doble_click.spec.ts + │ └── edit_via_selection.spec.ts + ├── editor/ # Editor functionality tests + │ ├── copy_cut_drop.spec.ts + │ └── editor.spec.ts + ├── insert/ # Formula insertion tests + │ ├── insert_corner_cases.spec.ts + │ ├── insert_hand.spec.ts + │ └── insert.spec.ts + ├── latex/ # LaTeX functionality tests + │ └── latex.spec.ts + ├── modal/ # Modal dialog tests + │ ├── confirmation_dialog.spec.ts + │ └── toolbar.spec.ts + └── telemetry/ # Analytics tests + └── telemetry.spec.ts +``` -## Before you begin +## Supported Editors and Packages -Linux users will need to install `net-tools` to use Cypress. +The testing framework supports the following HTML editors with their corresponding localhost ports: +| Editor | Port | Status | +|------------|------|--------| +| ckeditor4 | 8001 | ✅ Active | +| ckeditor5 | 8002 | ✅ Active | +| froala | 8004 | ✅ Active | +| tinymce5 | 8006 | ✅ Active | +| tinymce6 | 8008 | ✅ Active | +| tinymce7 | 8009 | ✅ Active | +| tinymce8 | 8010 | ✅ Active | +| generic | 8007 | ✅ Active | +| viewer | ? | 📋 TODO | -```bash -$ sudo apt install net-tools -``` -Also, you will need to allow non-local connections to control the X server on your computer. +## Environment Configuration + +### Local Setup +You can configure your environment using an optional `.env` file or by setting variables directly in the CLI command, as explained below. + +1. **Copy the environment template:** + ```bash + cp tests/e2e/.env.example tests/e2e/.env + ``` + +2. **Configure your environment:** + ```bash + # tests/e2e/.env + + # Select editors to test (pipe-separated) + HTML_EDITOR=generic|ckeditor4|ckeditor5 -Run this command: + # Environment selection + USE_STAGING=false + + # Branch for staging tests + TEST_BRANCH=master + + # API Keys for commercial editors. Required to deploy the test page. + CKEDITOR4_API_KEY= + FROALA_API_KEY= + ``` + +### Environment Variables + +| Variable | Description | Default | Example | Required | +|----------|-------------|---------|---------|----------| +| `HTML_EDITOR` | Pipe-separated list of editors to test | All editors | `generic\|ckeditor5` | Yes | +| `USE_STAGING` | Use staging environment vs localhost | `false` | `true\|false` | No | +| `TEST_BRANCH` | Git branch for staging tests | `master` | `feature-branch` | No | +| `CKEDITOR4_API_KEY` | API key for CKEditor 4 commercial features | None | `your-ckeditor4-key` | For all CKEditor 4 tests | +| `FROALA_API_KEY` | API key for Froala Editor commercial features | None | `your-froala-key` | For Froala licensed features only | + + +## Running Tests + +### Prerequisites ```bash -$ xhost local:root +# Install dependencies +yarn install + +# Install Playwright browsers +yarn playwright install --with-deps ``` -> This has to be executed once after each reboot +### Local Development +The `yarn test:e2e` script is defined in the main package.json and runs the E2E tests. -## Run all tests at once +Playwright is configured to pre-build and deploy both the package and test site (`demos` folder) for the configured +editors and deploy them in order to run the test. Don't pre-deploy the test page, Playwright will do it by itself. -Before running the tests you will need to build all package and start all demos. +```bash +# Run tests for specific editors +HTML_EDITOR=ckeditor5 yarn test:e2e -All tests can be run with the commands: +# Run tests for multiple editors +HTML_EDITOR=generic|froala yarn test:e2e -```sh -$ nx run-many --target=start --all --parallel -$ nx run-many --target=test --all --parallel -``` +# Run all tests for all editors. If no HTML_EDITOR variable is set, all editors are tested +yarn test:e2e -## Run all the tests for a specific demo +# Run with staging environment +USE_STAGING=true yarn test:e2e -You can run all tests for a specific demo with the `nx test ` command. +# Run specific browser +yarn test:e2e --project=webkit -Before running the tests you will need to build the package and start a demo. For example to run all tests on the `ckeditor5` demo run: +# Run in headed mode +yarn test:e2e --headed +# Run specific test file +yarn test:e2e tests/insert/insert.spec.ts ``` -$ nx start html-ckeditor5 -$ nx test ckeditor5 +[See the official Playwright CLI documentation](https://playwright.dev/docs/test-cli) for more details on available commands and options. + + +**Example workflow:** +```bash +# Build and test CKEditor5 +yarn +HTML_EDITOR=ckeditor5 yarn test:e2e ``` + +## Playwright Configuration +See ([`playwright.config.ts`](../../../tests/e2e/playwright.config.ts)). + + +## CI/CD Integration + +### GitHub Actions Workflow + +The E2E tests are automated via GitHub Actions ([`run-e2e-tests.yml`](../../../.github/workflows/cypress-Run-tests-with-npm-packages.yml)): + +- **When tests run**: On pushes to `main`, pull requests, and manual workflow dispatch +- **Parallelization**: Each editor runs in a separate job using matrix strategy for maximum parallel execution +- **Reports**: + - Github reports appear in the GitHub Actions **Checks** tab + - Failed tests create GitHub Actions annotations with direct links for quick debugging. + - A single HTML report is generated and attached to the workflow run. Contains results for all Editors. + +## Test Coverage + +| Test File | Category | Description | +|-----------|----------|-------------| +| `edit/edit_corner_cases.spec.ts` | Edit | Edge cases and error conditions in formula editing | +| `edit/edit_hand.spec.ts` | Edit | Manual formula modifications and handwriting input | +| `edit/edit_via_doble_click.spec.ts` | Edit | Editing formulas by double-clicking on existing formulas | +| `edit/edit_via_selection.spec.ts` | Edit | Editing formulas via text selection and context menu | +| `editor/copy_cut_drop.spec.ts` | Editor | Clipboard operations (copy/cut/paste) and drag-drop functionality | +| `editor/editor.spec.ts` | Editor | General editor behavior and integration tests | +| `insert/insert_corner_cases.spec.ts` | Insert | Edge cases and error conditions in formula insertion | +| `insert/insert_hand.spec.ts` | Insert | Manual formula creation via handwriting input | +| `insert/insert.spec.ts` | Insert | Standard formula insertion workflows and toolbar interactions | +| `latex/latex.spec.ts` | LaTeX | LaTeX rendering, parsing, and conversion functionality | +| `modal/confirmation_dialog.spec.ts` | Modal | Confirmation dialog interactions and user workflows | +| `modal/toolbar.spec.ts` | Modal | Toolbar modal functionality and behavior | +| `telemetry/telemetry.spec.ts` | Telemetry | Usage metrics, event tracking, and analytics validation | + + +# TODOs +This project previously used cypress for E2E testing. There might still be some reference to Cypress in the code (e.g.: see test section in the demos `project.json` files). These must be deleteded. +- Remove cypress refereces in the `project.json` files +- Remove cypress dashboard secrets in the repository +- Remove old documentation cypress references. + diff --git a/package.json b/package.json index c2a3b8f2c..87eb9274f 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,7 @@ "preinstall": "node packages/res/git-data.mjs", "postinstall": "rm -rf ~/.config/yarn/link/* && for d in packages/*/ ; do (cd $d && yarn link); done", "test-old": "node scripts/services/executeTests.js", - "test": "nx run-many --target=test --all --parallel", - "test:ci": "docker run -v $PWD:/cypress --net=host -w /cypress -e CYPRESS_PROJECT_ID --entrypoint=cypress cypress/included:7.5.0 run --project .", + "test:e2e": "playwright test --config=tests/e2e/playwright.config.ts", "build": "cd demos/html/generic && npm install && npm start &", "lint": "prettier --write . --ignore-path .gitignore --ignore-path .prettierignore --ignore-path .eslintignore && nx run-many --target=lint --all --parallel --fix" }, @@ -18,22 +17,23 @@ "@babel/eslint-parser": "^7.24.1", "@nrwl/js": "18.2.2", "@nrwl/tao": "18.2.2", - "@nx/cypress": "18.2.2", "@nx/eslint-plugin": "18.2.2", "@nx/linter": "18.2.2", "@nx/web": "18.2.2", "@nx/webpack": "18.2.2", "@nx/workspace": "18.2.2", + "@playwright/test": "^1.40.0", "@types/node": "20.12.4", "clean-webpack-plugin": "^4.0.0", + "dotenv": "^16.3.1", "eslint": "^8.57.0", "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-prettier": "^10.0.1", "eslint-plugin-import": "^2.29.0", "eslint-plugin-jsdoc": "^48.2.3", + "eslint-plugin-prettier": "^5.2.3", "html-validate": "^8.18.1", "nx": "18.2.2", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.3", "prettier": "3.5.2", "typescript": "~5.4.4" }, @@ -43,5 +43,8 @@ "packages/**", "demos/**" ], - "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610" + "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610", + "dependencies": { + "serve": "^14.2.5" + } } diff --git a/tests/e2e/.env.example b/tests/e2e/.env.example new file mode 100644 index 000000000..6fbf41fd5 --- /dev/null +++ b/tests/e2e/.env.example @@ -0,0 +1,16 @@ +# Environment configuration for HTML Editors E2E Tests +# File must be named .env in the root of the project + +# HTML Editor selection - pipe separated list of editors to test +# Available options: generic|ckeditor4|ckeditor5|froala|tinymce5|tinymce6|tinymce7|tinymce8 +HTML_EDITOR=generic|ckeditor4|ckeditor5|froala|tinymce5|tinymce6|tinymce7|tinymce8 + +# Whether to use the staging environment or use localhost +USE_STAGING=false + +# Branch to test. Only applies when USE_STAGING=true +TEST_BRANCH=master + +# API Keys for commercial editors. Required to deploy the test page. +CKEDITOR4_API_KEY= +FROALA_API_KEY= diff --git a/tests/e2e/.gitignore b/tests/e2e/.gitignore new file mode 100644 index 000000000..2ee681b85 --- /dev/null +++ b/tests/e2e/.gitignore @@ -0,0 +1,9 @@ +# Ignore node modules and environment files +node_modules +.env +.tmp + +# Ignore Playwright test reports and results +playwright-report +test-results +screenshots diff --git a/tests/e2e/enums/equation_entry_mode.ts b/tests/e2e/enums/equation_entry_mode.ts new file mode 100644 index 000000000..a719d6890 --- /dev/null +++ b/tests/e2e/enums/equation_entry_mode.ts @@ -0,0 +1,6 @@ +enum EquationEntryMode { + MATHML, + LATEX, +} + +export default EquationEntryMode \ No newline at end of file diff --git a/tests/e2e/enums/equations.ts b/tests/e2e/enums/equations.ts new file mode 100644 index 000000000..71c68c796 --- /dev/null +++ b/tests/e2e/enums/equations.ts @@ -0,0 +1,36 @@ +import type Equation from '../interfaces/equation' + +const Equations: Record = { + singleNumber: { + altText: '1', + mathml: '1' + }, + styledSingleNumber: { + altText: 'bold italic 1', + mathml: '1' + }, + squareRootY: { + altText: 'square root of y', + mathml: 'y', + latex: '\\sqrt{y}' + }, + squareRootYPlusFive: { + altText: 'square root of y plus 5', + mathml: 'y5', + latex: '\\sqrt y+5' + }, + OnePlusOne: { + altText: '1 plus 1', + mathml: '1+1' + }, + styledOnePlusOne: { + altText: 'bold italic 1 bold italic plus bold italic 1', + mathml: '1+1' + }, + specialCharacters: { + altText: '« less than » greater than § & ¨ " apostrophe apostrophe', + mathml: '«<»>§&¨"\'\'' + } +} + +export default Equations diff --git a/tests/e2e/enums/toolbar.ts b/tests/e2e/enums/toolbar.ts new file mode 100644 index 000000000..5ed6fad4d --- /dev/null +++ b/tests/e2e/enums/toolbar.ts @@ -0,0 +1,6 @@ +enum Toolbar { + MATH = 'MathType', + CHEMISTRY = 'ChemType', +} + +export default Toolbar \ No newline at end of file diff --git a/tests/e2e/enums/typing_mode.ts b/tests/e2e/enums/typing_mode.ts new file mode 100644 index 000000000..3eaa5bd5b --- /dev/null +++ b/tests/e2e/enums/typing_mode.ts @@ -0,0 +1,7 @@ +enum TypingMode { + KEYBOARD = 'KEY', + HAND = 'HAND', + UNKNOWN = 'UNKNOWN', +} + +export default TypingMode \ No newline at end of file diff --git a/tests/e2e/helpers/network.ts b/tests/e2e/helpers/network.ts new file mode 100644 index 000000000..be0d463d5 --- /dev/null +++ b/tests/e2e/helpers/network.ts @@ -0,0 +1,20 @@ +import { Page } from '@playwright/test' + +export const captureTelemetryRequests = async (page: Page, foundEvents: string[]): Promise => { + // Enable request interception and handle requests + page.on('request', (request) => { + if (request.method() === 'POST' && request.url().includes('telemetry')) { + const requestData = request.postData() + if (requestData) { + const eventCaptured = getTelemetryEventCaptured(requestData) + foundEvents.push(eventCaptured) + } + } + }) +} + +export const getTelemetryEventCaptured = (requestData: string): string => { + const requestDataJSON = JSON.parse(requestData) + const eventCaptured: string = requestDataJSON.evs[0].typ + return eventCaptured +} \ No newline at end of file diff --git a/tests/e2e/helpers/test-setup.ts b/tests/e2e/helpers/test-setup.ts new file mode 100644 index 000000000..0acaa1936 --- /dev/null +++ b/tests/e2e/helpers/test-setup.ts @@ -0,0 +1,30 @@ +import { Page } from '@playwright/test' +import EditorManager from '../page-objects/editor_manager' +import WirisEditor from '../page-objects/wiris_editor' +import BaseEditor from '../page-objects/base_editor' + +export interface TestSetup { + editor: BaseEditor + wirisEditor: WirisEditor +} + +export async function setupEditor(page: Page, editorName: string): Promise { + const editorManager = new EditorManager() + const availableEditors = editorManager.getEditors(page) + const editor = availableEditors.find(e => e.getName() === editorName) + + if (!editor) { + throw new Error(`Editor ${editorName} not found`) + } + + const wirisEditor = new WirisEditor(page) + + return { editor, wirisEditor } +} + +export function getEditorsFromEnv(): string[] { + if (!process.env.HTML_EDITOR) { + throw new Error('Environment variable HTML_EDITOR is not set') + } + return process.env.HTML_EDITOR.split('|') +} diff --git a/tests/e2e/interfaces/equation.ts b/tests/e2e/interfaces/equation.ts new file mode 100644 index 000000000..48c4d85f9 --- /dev/null +++ b/tests/e2e/interfaces/equation.ts @@ -0,0 +1,5 @@ +export default interface Equation { + altText: string + mathml: string + latex?: string +} \ No newline at end of file diff --git a/tests/e2e/page-objects/base_editor.ts b/tests/e2e/page-objects/base_editor.ts new file mode 100644 index 000000000..40c852663 --- /dev/null +++ b/tests/e2e/page-objects/base_editor.ts @@ -0,0 +1,480 @@ +import { Page, Locator, expect, FrameLocator } from '@playwright/test' +import Toolbar from '../enums/toolbar' +import type Equation from '../interfaces/equation' +import BasePage from './page' +const path = require('path') + +/** + * Abstract class used in each of the HTML editors which includes the methods for all the editors, and specifies the properties each editor needs. + */ +export default abstract class BaseEditor extends BasePage { + protected readonly abstract wirisEditorButtonMathType: string + protected readonly abstract wirisEditorButtonChemType: string + protected readonly abstract name: string + protected readonly abstract editField: string + protected readonly iframe?: string + + constructor(page: Page) { + super(page) + } + + public getName(): string { + return this.name + } + + public getIframe(): string | undefined { + return this.iframe + } + + /** + * Constructs the URL for the specific editor and opens it in the browser. + * @returns {Promise} The URL of the opened editor. **/ + public async open(): Promise { + const isStaging = process.env.USE_STAGING === 'true' + + let url: string + + // Determine the URL based on the environment (staging or local) and the html editor name + if (isStaging) { + url = `${process.env.TEST_BRANCH}/html/${this.getName()}/` + } else { + // Use localhost with each editor's corresponding port + const editorPortMap = { + 'ckeditor4': 8001, + 'ckeditor5': 8002, + 'froala': 8004, + 'tinymce5': 8006, + 'tinymce6': 8008, + 'tinymce7': 8009, + 'tinymce8': 8010, + 'generic': 8007, + } + + const port = editorPortMap[this.getName() as keyof typeof editorPortMap] + if (!port) { + throw new Error(`No port mapping found for editor: ${this.getName()}`) + } + + url = `http://localhost:${port}/` + } + + await this.page.goto(url) + await this.page.waitForLoadState('domcontentloaded') + return this.page.url() + } + + /** + * Opens the Wiris editor based on a provided toolbar type. + * @param {Toolbar} toolbar - The type of the toolbar to open, either Math or Chemistry. + */ + public async openWirisEditor(toolbar: Toolbar): Promise { + switch (toolbar) { + case Toolbar.CHEMISTRY: + await this.page.locator(this.wirisEditorButtonChemType).waitFor({ state: 'visible' }) + await this.page.locator(this.wirisEditorButtonChemType).hover() + await this.page.locator(this.wirisEditorButtonChemType).click() + break + default: + + await this.page.locator(this.wirisEditorButtonMathType).waitFor({ state: 'visible' }) + await this.page.locator(this.wirisEditorButtonMathType).hover() + await this.page.locator(this.wirisEditorButtonMathType).click() + break + } + } + + /** + * Opens the source code editor + */ + public async clickSourceCodeEditor(): Promise { + const sourceCodeButton = this.getSourceCodeEditorButton?.() + if (sourceCodeButton) { + await this.page.locator(sourceCodeButton).waitFor({ state: 'visible' }) + await this.page.locator(sourceCodeButton).click() + } + } + + public async typeSourceText(text: string): Promise { + const sourceCodeEditField = this.getSourceCodeEditField?.() + if (!sourceCodeEditField) { + throw new Error('Source code edit field selector is not defined.') + } + await this.page.locator(sourceCodeEditField).waitFor({ state: 'visible' }) + await this.page.locator(sourceCodeEditField).click() + await this.pause(500) + await this.page.keyboard.type(text) + } + + /** + * Retrieves all equations from the editor using the alt text and data-mathml DOM attributes. + * @returns {Promise} Array of equation interface. + */ + public async getEquations(): Promise { + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + await this.page.waitForTimeout(500) + + const equationsInEditor = await frameOrPage.locator(`${this.editField} img[alt][data-mathml]`) + const count = await equationsInEditor.count() + const equations: Equation[] = [] + + for (let i = 0; i < count; i++) { + const equation = equationsInEditor.nth(i) + const altText = await equation.getAttribute('alt') || '' + const mathml = await equation.getAttribute('data-mathml') || '' + equations.push({ altText, mathml }) + } + + return equations + } + + /** + * Waits for a specific equation to appear in the editor. + * @param {Equation} equation - The equation to wait for. + */ + public async waitForEquation(equation: Equation): Promise { + await expect(async () => { + const equations = await this.getEquations() + expect(equations.some((eq) => eq.altText === equation.altText)).toBeTruthy() + }).toPass({ timeout: 10000 }) + } + + /** + * Gets a locator for the equation element within the DOM. + * @param {Equation} equation - The equation to find in the DOM. + * @returns {Locator} The Playwright locator representing the equation. + */ + public getEquationElement(equation: Equation): Locator { + if (this.iframe) { + return this.page.frameLocator(this.iframe).locator(`${this.editField} img[alt="${equation.altText}"]`) + } + + return this.page.locator(`${this.editField} img[alt="${equation.altText}"]`) + } + + /** + * Clicks on an element for a specified number of times. The reason for this function is to handle the iframe switching. Used for elements belonging to the editor. + * @param {Locator} elementToClick - The element to click on. + * @param {number} [numberOfTimes=1] - The number of times to click on the element. + */ + public async clickElement(elementToClick: Locator, numberOfTimes: number = 1): Promise { + switch (numberOfTimes) { + case 1: + await elementToClick.click() + break + case 2: + await elementToClick.dblclick() + break + default: + for (let i = 0; i < numberOfTimes; i++) { + await elementToClick.click() + await this.pause(500) + } + break + } + } + + /** + * Focuses the editing field within the editor. + */ + public async focus(): Promise { + let editFieldLocator: Locator + + if (this.iframe) { + editFieldLocator = this.page.frameLocator(this.iframe).locator(this.editField) + } else { + editFieldLocator = this.page.locator(this.editField) + } + await editFieldLocator.click() + await this.pause(1000) + } + + /** + * Appends text at the bottom of the editor field. This uses the keyboard to go to the end of the edit field and append. + * @param {string} textToInsert - The text to append. + */ + public async appendText(textToInsert: string): Promise { + await this.focus() + + await this.page.keyboard.press('Control+End') + await this.pause(500) + await this.page.keyboard.type(textToInsert) + } + + /** + * Open the wiris Editor to edit the last item inserted + * Uses selectItemAtCursor, but that's not compatible with froala, so in that case does a click in the contextual toolbar + * @param {Toolbar} toolbar - toolbar of the test + */ + public async openWirisEditorForLastInsertedFormula(toolbar: Toolbar, equation: Equation): Promise { + const isFroala = this.getName() === 'froala' + + if (isFroala) { + const equationElement = this.getEquationElement(equation) + await equationElement.click() + + const mathTypeButton = this.getContextualToolbarMathTypeButton?.() + if (mathTypeButton) { + await this.page.locator(mathTypeButton).click() + } + } else { + await this.selectItemAtCursor() + await this.openWirisEditor(toolbar) + } + } + + /** + * Selects the item at the current cursor position within the editor. This uses shift + the left arrow key to select. + */ + public async selectItemAtCursor(): Promise { + await this.page.keyboard.press('Shift+ArrowLeft') + } + + /** + * This gets all the text in the editor field + * @returns boolean indicating if text appears after equation + */ + public async isTextAfterEquation(typedText: string, altTextEquation: string): Promise { + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + const html = await frameOrPage.locator(this.editField).innerHTML() + const indexText = html.indexOf(typedText) + const indexEquation = html.indexOf(altTextEquation) + + return indexEquation < indexText + } + + /** + * This gets all the latex equations $$ expression $$ from the edit field + * It then trims whitespaces at beginning and end, + * and replaces instances of $$ for blank text so as to get only the latex. + * @returns an array of strings containing latex equations or undefined if there are none + */ + public async getLatexEquationsInEditField(): Promise { + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + const textContents = await frameOrPage.locator(this.editField).textContent() + + if (!textContents) { + return undefined + } + + const expressions = textContents.match(/\$\$.*?\$\$/g)?.map((latexEquation) => latexEquation.trim().replaceAll('$$', '')) + + return expressions + } + + public async waitForLatexExpression(latexExpression: string): Promise { + await expect(async () => { + const latexEquations = await this.getLatexEquationsInEditField() + expect(latexEquations?.some((eq: string) => eq === latexExpression)).toBeTruthy() + }).toPass({ timeout: 10000 }) + } + + public async copyAllEditorContent(): Promise { + await this.focus() + await this.page.keyboard.press('Control+a') + await this.setClipboardText('') + await this.pause(500) + await this.page.keyboard.press('Control+c') + } + + public async cutAllEditorContent(): Promise { + await this.focus() + await this.page.keyboard.press('Control+a') + await this.setClipboardText('') + await this.pause(500) + await this.page.keyboard.press('Control+x') + } + + async setClipboardText(text: string): Promise { + await this.page.evaluate(async (t) => { + await (globalThis as any).navigator.clipboard.writeText(t); + }, text); + } + + public async dragDropLastFormula(equation: Equation): Promise { + await this.focus() + + const equationElement = this.getEquationElement(equation) + let editDivElement: Locator + + if (this.iframe) { + editDivElement = this.page.frameLocator(this.iframe).locator(this.editField) + } else { + editDivElement = this.page.locator(this.editField) + } + + const equationBox = await equationElement.boundingBox() + const editDivBox = await editDivElement.boundingBox() + + if (equationBox && editDivBox) { + await this.page.mouse.move(equationBox.x + equationBox.width / 2, equationBox.y + equationBox.height / 2) + //await this.page.mouse.click(equationBox.x + equationBox.width / 2, equationBox.y + equationBox.height / 2) + await this.pause(500) + await this.page.mouse.down() + await this.pause(500) + await this.page.mouse.move(editDivBox.x, editDivBox.y) + await this.pause(500) + await this.page.mouse.up() + } + } + + public async paste(): Promise { + await this.focus() + await this.page.keyboard.press('Control+v') + } + + public async undo(): Promise { + await this.focus() + await this.page.keyboard.press('Control+z') + } + + public async redo(): Promise { + await this.focus() + await this.page.keyboard.press('Control+Shift+z') + } + + public async clear(): Promise { + await this.focus() + if (this.iframe) { await this.focus() } // avoids failing to clear in ckeditor4 if not focused + await this.page.keyboard.press('Control+a') + await this.pause(500) + await this.page.keyboard.press('Delete') + } + + public async isEditorCleared(): Promise { + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + await this.pause(1000) + + const element = frameOrPage.locator(this.editField) + const rawText = (await element.textContent()) ?? '' + const normalized = rawText.replace(/[\s\uFEFF\xA0]+/g, '') + const noTextInEditor = normalized === '' + const equationElements = frameOrPage.locator(`${this.editField} img`) + const noEquationsInEditor = (await equationElements.count()) === 0 + + return noEquationsInEditor && noTextInEditor + } + + public async getImageSize(equation: Equation): Promise<{ width: number; height: number } | null> { + await this.focus() + + const equationElement = this.getEquationElement(equation) + return await equationElement.boundingBox() + } + + public async resizeImageEquation(equation: Equation): Promise { + await this.focus() + + const equationElement = this.getEquationElement(equation) + await equationElement.click() + + const box = await equationElement.boundingBox() + if (box) { + await this.page.mouse.move(box.x + box.width / 2, box.y + box.height / 2) + await this.pause(500) + await this.page.mouse.down() + await this.pause(500) + await this.page.mouse.move(box.x - 10, box.y - 10) + await this.pause(500) + await this.page.mouse.up() + } + } + + public async applyStyle(): Promise { + await this.focus() + await this.page.keyboard.press('Control+b') // Bold + await this.pause(500) + await this.page.keyboard.press('Control+i') // Italic + } + + public async isTextBoldAndItalic(text: string): Promise { + await this.focus() + + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + const isCkeditor5 = this.getName() === 'ckeditor5' + if (isCkeditor5) { + await this.page.keyboard.press('Enter') + await this.pause(500) + await this.page.keyboard.press('Backspace') + } + + const elements = frameOrPage.locator(`${this.editField} >> text="${text}"`) + const count = await elements.count() + + for (let i = 0; i < count; i++) { + const element = elements.nth(i) + const fontWeight = await element.evaluate((el) => (globalThis as any).getComputedStyle(el).fontWeight) + const fontStyle = await element.evaluate((el) => (globalThis as any).getComputedStyle(el).fontStyle) + + const isBold = parseInt(fontWeight) >= 700 + const isItalic = fontStyle === 'italic' + + if (isBold && isItalic) { + return true + } + } + + return false + } + + public async moveCaret(): Promise { + await this.focus() + for (let i = 0; i < 8; i++) { + await this.page.keyboard.press('ArrowLeft') + } + } + + public async checkElementAlignment(): Promise { + await this.focus() + + let editContent: Locator + + if (this.iframe) { + editContent = this.page.frameLocator(this.iframe).locator(this.editField) + } else { + editContent = this.page.locator(this.editField) + } + + // Take screenshot for visual comparison + await editContent.screenshot({ + path: path.resolve(__dirname, '../screenshots', `${this.getName()}_alignment.png`) + }) + } + + public getContextualToolbarMathTypeButton?(): string + + public getContextualToolbarChemTypeButton?(): string + + public getSourceCodeEditorButton?(): string + + public getSourceCodeEditField?(): string +} diff --git a/tests/e2e/page-objects/editor_manager.ts b/tests/e2e/page-objects/editor_manager.ts new file mode 100644 index 000000000..7208b5731 --- /dev/null +++ b/tests/e2e/page-objects/editor_manager.ts @@ -0,0 +1,42 @@ +import { Page } from '@playwright/test' +import Generic from './html/generic' +import CKEditor5 from './html/ckeditor5' +import CKEditor4 from './html/ckeditor4' +import Froala from './html/froala' +import TinyMCE5 from './html/tinymce5' +import TinyMCE6 from './html/tinymce6' +import TinyMCE7 from './html/tinymce7' +import TinyMCE8 from './html/tinymce8' + +import type BaseEditor from './base_editor' + +class EditorManager { + private editorsInConfiguration: string[] | undefined + + public getEditors(page: Page): BaseEditor[] { + + const availableEditors: BaseEditor[] = [ + new Generic(page), + new CKEditor5(page), + new CKEditor4(page), + new Froala(page), + new TinyMCE5(page), + new TinyMCE6(page), + new TinyMCE7(page), + new TinyMCE8(page), + ] + + this.editorsInConfiguration = process.env.HTML_EDITOR?.split('|') + const editorsToUse = availableEditors.filter((editor) => + ((this.editorsInConfiguration?.includes(editor.getName())) ?? false) + ) + + if (editorsToUse.length === 0) { + throw new Error(`No valid editors found in current configuration: ${process.env.HTML_EDITOR}`) + } + + return editorsToUse + } +} + +export default EditorManager \ No newline at end of file diff --git a/tests/e2e/page-objects/equation_entry_form.ts b/tests/e2e/page-objects/equation_entry_form.ts new file mode 100644 index 000000000..1d719fc3a --- /dev/null +++ b/tests/e2e/page-objects/equation_entry_form.ts @@ -0,0 +1,46 @@ +import { Page, Locator, expect } from '@playwright/test' +import BasePage from './page' + +class EquationEntryForm extends BasePage { + constructor(page: Page) { + super(page) + } + + get editField(): Locator { + return this.page.locator('textarea') + } + + get submitButton(): Locator { + return this.page.locator('input[type="submit"]') + } + + public async isOpen(): Promise { + const context = this.page.context() + const pages = context.pages() + if (pages.length !== 2) return false; + const editAreaVisible = await this.editField.isVisible() + const submitButtonVisible = await this.submitButton.isVisible() + return submitButtonVisible && editAreaVisible + } + + public async setEquation(text: string): Promise { + await this.editField.fill(text) + const closePromise = this.page.waitForEvent('close') + await this.submitButton.click({ force: true }).catch(() => {}) // Ignore any errors from closing the popup + await closePromise + } + + public async getText(): Promise { + await expect(async () => { + const text = await this.editField.inputValue() + expect(text).not.toBe('') + }).toPass({ timeout: 5000 }) + + const text = await this.editField.inputValue() + await this.submitButton.click() + + return text + } +} + +export default EquationEntryForm \ No newline at end of file diff --git a/tests/e2e/page-objects/html/ckeditor4.ts b/tests/e2e/page-objects/html/ckeditor4.ts new file mode 100644 index 000000000..a5d9a65e6 --- /dev/null +++ b/tests/e2e/page-objects/html/ckeditor4.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class CKEditor4 extends BaseEditor { + protected readonly wirisEditorButtonMathType = "[title='Insert a math equation - MathType']" + protected readonly wirisEditorButtonChemType = "[title='Insert a chemistry formula - ChemType']" + protected readonly editField = 'body' + protected readonly iframe = "iframe[title='Editor, editor']" + protected readonly name = 'ckeditor4' + + constructor(page: Page) { + super(page) + } +} + +export default CKEditor4 \ No newline at end of file diff --git a/tests/e2e/page-objects/html/ckeditor5.ts b/tests/e2e/page-objects/html/ckeditor5.ts new file mode 100644 index 000000000..a098a3164 --- /dev/null +++ b/tests/e2e/page-objects/html/ckeditor5.ts @@ -0,0 +1,25 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class CKEditor5 extends BaseEditor { + protected readonly wirisEditorButtonMathType = "[data-cke-tooltip-text='Insert a math equation - MathType']" + protected readonly wirisEditorButtonChemType = "[data-cke-tooltip-text='Insert a chemistry formula - ChemType']" + protected readonly sourceCodeEditorButton = "[data-cke-tooltip-text='Source']" + protected readonly sourceCodeEditField = '.ck-source-editing-area' + protected readonly editField = '.ck-editor__editable' + protected readonly name = 'ckeditor5' + + constructor(page: Page) { + super(page) + } + + public getSourceCodeEditorButton(): string { + return this.sourceCodeEditorButton + } + + public getSourceCodeEditField(): string { + return this.sourceCodeEditField + } +} + +export default CKEditor5 \ No newline at end of file diff --git a/tests/e2e/page-objects/html/froala.ts b/tests/e2e/page-objects/html/froala.ts new file mode 100644 index 000000000..fffca1ad5 --- /dev/null +++ b/tests/e2e/page-objects/html/froala.ts @@ -0,0 +1,23 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class Froala extends BaseEditor { + protected readonly wirisEditorButtonMathType = '.fr-btn-grp.fr-float-left >> #wirisEditor-1' + protected readonly wirisEditorButtonChemType = '.fr-btn-grp.fr-float-left >> #wirisChemistry-1' + protected readonly editField = '.fr-element' + protected readonly name = 'froala' + + constructor(page: Page) { + super(page) + } + + public getContextualToolbarMathTypeButton(): string { + return '.fr-buttons #wirisEditor-1' + } + + public getContextualToolbarChemTypeButton(): string { + return '.fr-buttons #wirisChemistry-1' + } +} + +export default Froala \ No newline at end of file diff --git a/tests/e2e/page-objects/html/generic.ts b/tests/e2e/page-objects/html/generic.ts new file mode 100644 index 000000000..d8c72f686 --- /dev/null +++ b/tests/e2e/page-objects/html/generic.ts @@ -0,0 +1,15 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class Generic extends BaseEditor { + protected readonly wirisEditorButtonChemType = '#chemistryIcon' + protected readonly wirisEditorButtonMathType = '#editorIcon' + protected readonly editField = '#editable' + protected readonly name = 'generic' + + constructor(page: Page) { + super(page) + } +} + +export default Generic \ No newline at end of file diff --git a/tests/e2e/page-objects/html/tinymce5.ts b/tests/e2e/page-objects/html/tinymce5.ts new file mode 100644 index 000000000..0359f183a --- /dev/null +++ b/tests/e2e/page-objects/html/tinymce5.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class TinyMCE5 extends BaseEditor { + protected readonly wirisEditorButtonChemType = "[aria-label='Insert a chemistry formula - ChemType']" + protected readonly wirisEditorButtonMathType = "[aria-label='Insert a math equation - MathType']" + protected readonly editField = 'body' + protected readonly iframe = "iframe[id='editor_ifr']" + protected readonly name = 'tinymce5' + + constructor(page: Page) { + super(page) + } +} + +export default TinyMCE5 \ No newline at end of file diff --git a/tests/e2e/page-objects/html/tinymce6.ts b/tests/e2e/page-objects/html/tinymce6.ts new file mode 100644 index 000000000..6d3d21259 --- /dev/null +++ b/tests/e2e/page-objects/html/tinymce6.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class TinyMCE6 extends BaseEditor { + protected readonly wirisEditorButtonChemType = "[aria-label='Insert a chemistry formula - ChemType']" + protected readonly wirisEditorButtonMathType = "[aria-label='Insert a math equation - MathType']" + protected readonly editField = 'body' + protected readonly iframe = "iframe[id='editor_ifr']" + protected readonly name = 'tinymce6' + + constructor(page: Page) { + super(page) + } +} + +export default TinyMCE6 \ No newline at end of file diff --git a/tests/e2e/page-objects/html/tinymce7.ts b/tests/e2e/page-objects/html/tinymce7.ts new file mode 100644 index 000000000..5cc845559 --- /dev/null +++ b/tests/e2e/page-objects/html/tinymce7.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class TinyMCE7 extends BaseEditor { + protected readonly wirisEditorButtonChemType = "[aria-label='Insert a chemistry formula - ChemType']" + protected readonly wirisEditorButtonMathType = "[aria-label='Insert a math equation - MathType']" + protected readonly editField = 'body' + protected readonly iframe = "iframe[id='editor_ifr']" + protected readonly name = 'tinymce7' + + constructor(page: Page) { + super(page) + } +} + +export default TinyMCE7 \ No newline at end of file diff --git a/tests/e2e/page-objects/html/tinymce8.ts b/tests/e2e/page-objects/html/tinymce8.ts new file mode 100644 index 000000000..a2e41d938 --- /dev/null +++ b/tests/e2e/page-objects/html/tinymce8.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' +import BaseEditor from '../base_editor' + +class TinyMCE8 extends BaseEditor { + protected readonly wirisEditorButtonChemType = "[aria-label='Insert a chemistry formula - ChemType']" + protected readonly wirisEditorButtonMathType = "[aria-label='Insert a math equation - MathType']" + protected readonly editField = 'body' + protected readonly iframe = "iframe[id='editor_ifr']" + protected readonly name = 'tinymce8' + + constructor(page: Page) { + super(page) + } +} + +export default TinyMCE8 \ No newline at end of file diff --git a/tests/e2e/page-objects/page.ts b/tests/e2e/page-objects/page.ts new file mode 100644 index 000000000..563b3bba2 --- /dev/null +++ b/tests/e2e/page-objects/page.ts @@ -0,0 +1,16 @@ +import { Page } from '@playwright/test' + +export default class BasePage { + protected page: Page + + constructor(page: Page) { + this.page = page + } + + /** + * Wait for a specific amount of time + */ + async pause(milliseconds: number): Promise { + await this.page.waitForTimeout(milliseconds) + } +} diff --git a/tests/e2e/page-objects/wiris_editor.ts b/tests/e2e/page-objects/wiris_editor.ts new file mode 100644 index 000000000..436f0e60e --- /dev/null +++ b/tests/e2e/page-objects/wiris_editor.ts @@ -0,0 +1,213 @@ +import { Page, Locator, expect } from '@playwright/test' +import BasePage from './page' +import EquationEntryMode from '../enums/equation_entry_mode' +import TypingMode from '../enums/typing_mode' +import EquationEntryForm from './equation_entry_form' + +class WirisEditor extends BasePage { + private equationEntryForm: EquationEntryForm + + constructor(page: Page) { + super(page) + this.equationEntryForm = new EquationEntryForm(page) + } + + get modalTitle(): Locator { + return this.page.locator('.wrs_modal_title') + } + + get wirisEditorWindow(): Locator { + return this.page.locator('.wrs_content_container') + } + + get insertButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-insert-button']") + } + + get cancelButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-cancel-button']") + } + + get handModeButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-key2hand-button']") + } + + get closeButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-close-button']") + } + + get fullScreenButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-fullscreen-enable-button']") + } + + get exitFullScreenButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-minimize-button']") + } + + get modalOverlay(): Locator { + return this.page.locator('[id*=wrs_modal_overlay]') + } + + get minimizeButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-fullscreen-disable-button']") + } + + get mathInputField(): Locator { + return this.page.locator('input[aria-label="Math input"]') + } + + get confirmationDialog(): Locator { + return this.page.locator('#wrs_popupmessage') + } + + get confirmationDialogCancelButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-cd-cancel-button']") + } + + get confirmationDialogCloseButton(): Locator { + return this.page.locator("[data-testid='mtcteditor-cd-close-button']") + } + + get handCanvas(): Locator { + return this.page.locator('canvas.wrs_canvas') + } + + /** + * Checks if the wiris editor modal is open by checking for the presence of the modal window, cancel and insert buttons. + */ + public async isOpen(): Promise { + return (await this.insertButton.isVisible()) && (await this.closeButton.isVisible() && (await this.wirisEditorWindow.isVisible())) + } + + /** + * This waits for the wiris editor modal to be open and for the cancel button to be displayed + */ + public async waitUntilLoaded(typeMode?: TypingMode): Promise { + typeMode = typeMode ?? TypingMode.KEYBOARD + await this.wirisEditorWindow.waitFor({ state: 'visible' }) + await this.insertButton.waitFor({ state: 'visible' }) + await this.handModeButton.waitFor({ state: 'visible' }) + await this.cancelButton.waitFor({ state: 'visible' }) + if (typeMode === TypingMode.KEYBOARD) { + await this.mathInputField.waitFor({ state: 'visible' }) + } else { + await this.handCanvas.waitFor({ state: 'visible' }) + } + } + + /** + * This waits for the wiris editor modal to be closed + */ + public async waitUntilClosed(): Promise { + await this.wirisEditorWindow.waitFor({ state: 'hidden' }) + } + + /** + * This performs select all and delete using Playwright keyboard, cross platform + */ + public async deleteContents(): Promise { + await this.page.keyboard.press('Control+a') + await this.page.keyboard.press('Delete') + } + + /** + * This types an equation into the edit field + * @param keysToType This parameter specifies which keys will be typed in the editor. + */ + public async typeEquationViaKeyboard(keysToType: string): Promise { + await this.mathInputField.click() + await this.pause(500) // This wait is needed in order to simulate real typing + await this.page.keyboard.type(keysToType) + await this.pause(500) // If we don't wait, it crashes. This is typical also with a user that would type, wait a few seconds, then insert equation. + } + + /** + * The same as typeEquation, but this inserts the equation + */ + public async insertEquationViaKeyboard(keysToType: string): Promise { + await this.typeEquationViaKeyboard(keysToType) + await this.insertButton.click() + await this.waitUntilClosed() + } + + /** + * @param entryMode (EquationEntryMode): This parameter specifies which mode the equation entry form will be opened in. + * This presses ctrl shift X for MathML and L for latex to show the equation entry form. + */ + public async showEquationEntryForm(entryMode: EquationEntryMode): Promise { + const popupPromise = this.page.waitForEvent('popup'); + switch (entryMode) { + case EquationEntryMode.MATHML: + await this.page.keyboard.press('Control+Shift+KeyX') + break + case EquationEntryMode.LATEX: + await this.page.keyboard.press('Control+Shift+KeyL') + break + } + const popup = await popupPromise; + this.equationEntryForm = new EquationEntryForm(popup); + expect(await this.equationEntryForm.isOpen()).toBeTruthy() + } + + /** + * This allows insertion of an equation by typing text into equation entry form to insert the equation. and automatically hit the insert button + * @param text the text to type into the form + * If the equation entry form is not open, it will open by default using MathML mode. + */ + public async insertEquationUsingEntryForm(text: string): Promise { + await this.typeEquationUsingEntryForm(text) + await this.pause(500) // TODO: Used to avoid click insert without formula submit, should be investigated further + await this.insertButton.click() + await this.waitUntilClosed() + } + + /** + * This allows insertion of an equation by typing text into equation entry form to insert the equation. It does not hit the insert button. + * @param text the text to type into the form + * If the equation entry form is not open, it will open by default using MathML mode. + */ + public async typeEquationUsingEntryForm(text: string): Promise { + const entryFormVisible = await this.equationEntryForm.isOpen() + + if (!entryFormVisible) { + await this.showEquationEntryForm(EquationEntryMode.MATHML) + } + + await this.equationEntryForm.setEquation(text) + } + + /** + * This uses the equation entry form to get the MathML currently being used in the editor. + * @returns a string with the MathML currently used in the rendered equation. + */ + public async getMathML(): Promise { + const entryFormVisible = await this.equationEntryForm.isOpen() + + if (!entryFormVisible) { + await this.showEquationEntryForm(EquationEntryMode.MATHML) + } + + return await this.equationEntryForm.getText() + } + + /** + * Appends text at the bottom of the math input field. This uses the keyboard to go to the end of the edit field and append. + * @param {string} textToInsert - The text to append. + */ + public async appendText(textToInsert: string): Promise { + await this.mathInputField.click() + await this.pause(500) + await this.page.keyboard.press('End') + await this.pause(500) + await this.page.keyboard.type(textToInsert) + } + + public async getMode(): Promise { + const title = await this.handModeButton.getAttribute('title') + return title === 'Go to handwritten mode' ? TypingMode.KEYBOARD : + title === 'Use keyboard' ? TypingMode.HAND : + TypingMode.UNKNOWN + } +} + +export default WirisEditor \ No newline at end of file diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts new file mode 100644 index 000000000..04c386927 --- /dev/null +++ b/tests/e2e/playwright.config.ts @@ -0,0 +1,84 @@ +import { defineConfig, devices } from '@playwright/test' +import dotenv from 'dotenv' +import path from 'path' + +dotenv.config({path: path.resolve(__dirname, '.env')}) + +const isCI = !!process.env.CI; + +const enabledEditors = (process.env.HTML_EDITOR || '').split('|').filter(Boolean) + +const createWebServer = (editor: string, port: number) => ({ + command: `yarn nx serve-static html-${editor}`, + port, + reuseExistingServer: true, + setTimeout: 30_000 +}) + +// Map of editors to their ports, defined in their corresponding demo's webpack.config.js file +const editorPortMap = { + 'ckeditor4': 8001, + 'ckeditor5': 8002, + 'froala': 8004, + 'tinymce5': 8006, + 'tinymce6': 8008, + 'tinymce7': 8009, + 'tinymce8': 8010, + 'generic': 8007, +} + +// Creates web servers only for enabled editors in the HTML_EDITOR env variable +const webServers = enabledEditors + .filter(editor => editorPortMap[editor as keyof typeof editorPortMap]) + .map(editor => createWebServer(editor, editorPortMap[editor as keyof typeof editorPortMap])) + +export default defineConfig({ + testDir: './tests', + fullyParallel: true, + forbidOnly: isCI, + retries: isCI ? 1 : 0, + workers: isCI ? '90%' : undefined, + reporter: [ + ['html', { open: isCI ? 'never' : 'on-failure', outputFolder: 'playwright-report/html' }], + ['junit', { outputFile: 'test-results/results.xml' }], + isCI ? ['blob']: ['null'], + isCI ? ['github'] : ['list'], + ], + use: { + baseURL: process.env.USE_STAGING === 'true' ? 'https://integrations.wiris.kitchen' : '', + trace: isCI ? 'retain-on-failure' : 'on-first-retry', + screenshot: 'only-on-failure', + video: isCI ? 'off' : 'on-first-retry', + }, + webServer: process.env.USE_STAGING === 'true' ? undefined : webServers, + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + viewport: { width: 1920, height: 1080 }, + permissions: ['clipboard-read', 'clipboard-write'] + } + }, + { + name: 'firefox', + use: { + ...devices['Desktop Firefox'], + viewport: { width: 1920, height: 1080 } + } + }, + { + name: 'webkit', + use: { + ...devices['Desktop Safari'], + viewport: { width: 1920, height: 1080 } + } + } + ], + outputDir: 'test-results', + timeout: 60_000, + expect: { + timeout: 10_000 + }, + +}) diff --git a/tests/e2e/tests/edit/edit_corner_cases.spec.ts b/tests/e2e/tests/edit/edit_corner_cases.spec.ts new file mode 100644 index 000000000..9ef90344a --- /dev/null +++ b/tests/e2e/tests/edit/edit_corner_cases.spec.ts @@ -0,0 +1,96 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`Edit equation (corner cases) - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-81 Edit styled equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.styledSingleNumber.mathml) + await editor.waitForEquation(Equations.styledSingleNumber) + + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.styledSingleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`MTHTML-85 User edits a formula and continues typing text: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationViaKeyboard('+1') + + const textToType = 'I can keep typing in the Editor' + await editor.pause(500) + await page.keyboard.type(textToType) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + + const isTextAfterEquation = await editor.isTextAfterEquation(textToType, Equations.OnePlusOne.altText) + expect(isTextAfterEquation).toBeTruthy() + }) + + test(`MTHTML-100 User edits a formula deleted during edition: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await editor.clear() // Delete the formula in the background + + // We continue with the insert in the wiris editor + await wirisEditor.insertEquationViaKeyboard('+1') + + // No error should be visible, and the editor should be blank + expect(await editor.isEditorCleared()).toBeTruthy() + + // Again, we do an insert + edit so we assure everything works as expected + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.pause(1000) + await wirisEditor.insertEquationViaKeyboard('+1') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/edit/edit_hand.spec.ts b/tests/e2e/tests/edit/edit_hand.spec.ts new file mode 100644 index 000000000..f88c6234e --- /dev/null +++ b/tests/e2e/tests/edit/edit_hand.spec.ts @@ -0,0 +1,38 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import TypingMode from '../../enums/typing_mode' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + test.describe(`Edit equation by hand - ${editorName} editor`,{ + tag: [`@${editorName}`, '@regression'], + }, () => { + for (const toolbar of toolbars) { + test(`@smoke MTHTML-8 Edit Hand equation with ${toolbar}: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.pause(1000) // Wait for the equation to be processed + await wirisEditor.handModeButton.click() + await wirisEditor.pause(500) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded(TypingMode.HAND) + + const typingMode = await wirisEditor.getMode() + expect(typingMode).toBe(TypingMode.HAND) + }) + } + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/edit/edit_via_doble_click.spec.ts b/tests/e2e/tests/edit/edit_via_doble_click.spec.ts new file mode 100644 index 000000000..e36b803d6 --- /dev/null +++ b/tests/e2e/tests/edit/edit_via_doble_click.spec.ts @@ -0,0 +1,56 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`Edit equation via double click - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + // Skip test for Froala as double click is not available + test.skip(editorName === 'froala', `Double click not available in ${editorName}`) + + test(`@smoke MTHTML-2 Edit Math equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + const equationInDOM = editor.getEquationElement(Equations.singleNumber) + await editor.clickElement(equationInDOM, 2) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationViaKeyboard('+1') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`@smoke MTHTML-2 Edit Chemistry equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.CHEMISTRY) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + const equationInDOM = editor.getEquationElement(Equations.singleNumber) + await editor.clickElement(equationInDOM, 2) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationViaKeyboard('+1') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/edit/edit_via_selection.spec.ts b/tests/e2e/tests/edit/edit_via_selection.spec.ts new file mode 100644 index 000000000..2d8913cc2 --- /dev/null +++ b/tests/e2e/tests/edit/edit_via_selection.spec.ts @@ -0,0 +1,56 @@ +import { test, expect } from '@playwright/test' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import { getEditorsFromEnv } from '../../helpers/test-setup' +import { setupEditor } from '../../helpers/test-setup' +import Equation from '../../interfaces/equation' + +// Configure which editors to test via environment variables +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + test.describe(`Edit equation via selection - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + for (const toolbar of toolbars) { + test(`@smoke MTHTML-8 Edit Math equation with ${toolbar}: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationViaKeyboard('+1') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`@smoke MTHTML-8 Edit Chemistry equation with ${toolbar}: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.CHEMISTRY) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationViaKeyboard('+1') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + } + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/editor/copy_cut_drop.spec.ts b/tests/e2e/tests/editor/copy_cut_drop.spec.ts new file mode 100644 index 000000000..293e06cf9 --- /dev/null +++ b/tests/e2e/tests/editor/copy_cut_drop.spec.ts @@ -0,0 +1,78 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { // TODO: review some flaky tests + test.describe(`Copy/Cut/Paste/Drag&Drop - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-95 Copy-paste math formula with ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + await page.keyboard.type('___') // Sending some text to force the copy/paste. Issue in Tiny + + await editor.copyAllEditorContent() + await editor.clear() + await editor.paste() + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationCopied = equationsInHTMLEditor.every((equation: Equation) => equation.altText === Equations.singleNumber.altText) && (equationsInHTMLEditor.length === 1) + expect(isEquationCopied).toBeTruthy() + }) + + test(`MTHTML-96 Cut-paste math formula with ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + await page.keyboard.type('___') // Sending some text to force the copy/paste. Issue in Tiny + + await editor.cutAllEditorContent() + await editor.paste() + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationCut = equationsInHTMLEditor.every((equation: Equation) => equation.altText === Equations.singleNumber.altText) && (equationsInHTMLEditor.length === 1) + expect(isEquationCut).toBeTruthy() + }) + + test(`MTHTML-86 Drag-drop math formula with ${editorName} editor`, async ({ page }) => { + test.fixme((editorName === 'ckeditor5' || editorName === 'generic') && test.info().project.name === 'firefox', `Drag and drop not working for ${editorName} in Firefox`) // TODO: fix drag and drop in Firefox for ckeditor5 and generic editor + + const unsupportedEditors = ['ckeditor4', 'tinymce5', 'tinymce6', 'tinymce7', 'tinymce8'] // WIP + + // Skip test for unsupported editors + test.skip(unsupportedEditors.includes(editorName), `Drag and drop not supported for ${editorName}`) + + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + const textToType = 'The equation will be relocated from after this text to before it' + await editor.appendText(textToType) + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.dragDropLastFormula(Equations.OnePlusOne) + await editor.waitForEquation(Equations.OnePlusOne) + + const isTextAfterEquation = await editor.isTextAfterEquation(textToType, Equations.OnePlusOne.altText) + expect(isTextAfterEquation).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/editor/editor.spec.ts b/tests/e2e/tests/editor/editor.spec.ts new file mode 100644 index 000000000..d8020c934 --- /dev/null +++ b/tests/e2e/tests/editor/editor.spec.ts @@ -0,0 +1,125 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`Editor functionality - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test.describe('Undo and Redo', () => { + const isKnownIssue = editorName === 'generic'; + test(`MTHTML-78 Undo and redo math formula with ${editorName} editor`, { tag: isKnownIssue ? ['@knownissue'] : [] } , async ({ page }) => { + test.fail(isKnownIssue, 'Known issue: generic editors fails to undo equation'); + + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.undo() + if ((await editor.getEquations()).length === 0) { + await editor.redo() + } + const isEquationRedone = ((await editor.getEquations()).length === 1) + expect(isEquationRedone).toBeTruthy() + }) + }) + + test.describe('Resize', () => { + test(`MTHTML-22 Formulas cannot be resized ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await editor.waitForEquation(Equations.OnePlusOne) + + const sizeBefore = await editor.getImageSize(Equations.OnePlusOne) + await editor.resizeImageEquation(Equations.OnePlusOne) + const sizeAfter = await editor.getImageSize(Equations.OnePlusOne) + + const sameSize = sizeBefore?.height === sizeAfter?.height && sizeBefore?.width === sizeAfter?.width + expect(sameSize).toBeTruthy() + }) + }) + + test.describe('Source code', () => { + test(`MTHTML-87 Edit source code of a math formula with ${editorName} editor`, async ({ page }) => { + const { editor } = await setupEditor(page, editorName) + + // Skip test if editor doesn't support source code editing + const hasSourceCodeButton = editor.getSourceCodeEditorButton !== undefined + test.skip(!hasSourceCodeButton, `Source code editing not supported for ${editorName}`) + + await editor.open() + await editor.clear() + //await editor.openWirisEditor(Toolbar.MATH) TODO: review if we want to open the wiris editor first, fails tests in some editors + await editor.clickSourceCodeEditor() + await editor.typeSourceText('1+1') + await editor.clickSourceCodeEditor() + const sourceCodeEquation = await editor.getEquations() + expect(sourceCodeEquation[0].altText).toBe('1 plus 1') + }) + }) + + test.describe('Styled text', () => { + test(`MTHTML-79 Validate formula insertion after typing text that contains styles: ${editorName} editor`, async ({ page }) => { + test.fixme((editorName === 'generic') && test.info().project.name === 'firefox', `Ctrl+B and Ctrl+I not working for generic editor on Firefox`) + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + const textBeginning = 'Text_Beginning' + const textEnd = 'Text_End' // The text with spaces brings some errors since the keys are sent without spaces + + await editor.applyStyle() // TODO: not applying style in generic editor on firefox, ctrl+B opens bookmarks menu and ctrl+I opens page info + await page.keyboard.type(textBeginning) + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await editor.waitForEquation(Equations.OnePlusOne) + + await page.keyboard.type(textEnd) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + + const isTextBeginningBoldAndItalic = await editor.isTextBoldAndItalic(textBeginning) + expect(isTextBeginningBoldAndItalic).toBeTruthy() + + const isTextEndBoldAndItalic = await editor.isTextBoldAndItalic(textEnd) + expect(isTextEndBoldAndItalic).toBeTruthy() + }) + }) + + test.describe('Text Alignment', () => { + test(`MTHTML-23 Validate formula alignment: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await page.keyboard.type('___') + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await editor.waitForEquation(Equations.OnePlusOne) + await page.keyboard.type('___') + + await editor.checkElementAlignment() + // Note: Playwright doesn't have a direct equivalent to visual comparison + // TODO: This would need to be implemented using screenshot comparison libraries + }) + }) + }) +} diff --git a/tests/e2e/tests/insert/insert.spec.ts b/tests/e2e/tests/insert/insert.spec.ts new file mode 100644 index 000000000..ef2d25ca9 --- /dev/null +++ b/tests/e2e/tests/insert/insert.spec.ts @@ -0,0 +1,68 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Insert equation - ${editorName} editor - ${toolbar}`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`@smoke MTHTML-1 Insert equation with ${toolbar} via keyboard: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationViaKeyboard('1') + await wirisEditor.pause(500) // Wait for the equation to be processed + await editor.waitForEquation(Equations.singleNumber) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`Insert equation with ${toolbar} using MathML: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) + } + + test.describe(`ALT Attribute - ${editorName} editor`, () => { + test(`MTHTML-19 Formula - ALT attribute: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationViaKeyboard('1') + await wirisEditor.pause(500) // Wait for the equation to be processed + await editor.waitForEquation(Equations.singleNumber) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/insert/insert_corner_cases.spec.ts b/tests/e2e/tests/insert/insert_corner_cases.spec.ts new file mode 100644 index 000000000..47e15595e --- /dev/null +++ b/tests/e2e/tests/insert/insert_corner_cases.spec.ts @@ -0,0 +1,66 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Insert equation (corner cases) - ${editorName} editor - ${toolbar}`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-80 Insert styled equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await editor.waitForEquation(Equations.styledOnePlusOne) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`MTHTML-68 Insert equation with special characters: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationUsingEntryForm(Equations.specialCharacters.mathml) + await editor.waitForEquation(Equations.specialCharacters) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.specialCharacters.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`MTHTML-90 User inserts a formula when the editor input doesn't have focus: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + // Insert a formula using only the keyboard (click MT button > type > tab to insert > enter) and keep writing + await editor.open() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.typeEquationViaKeyboard('1+1') + await page.keyboard.press('Tab') + await wirisEditor.pause(500) + await page.keyboard.press('Enter') + + await editor.waitForEquation(Equations.OnePlusOne) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) + } +} \ No newline at end of file diff --git a/tests/e2e/tests/insert/insert_hand.spec.ts b/tests/e2e/tests/insert/insert_hand.spec.ts new file mode 100644 index 000000000..89a1f5779 --- /dev/null +++ b/tests/e2e/tests/insert/insert_hand.spec.ts @@ -0,0 +1,37 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import EquationEntryMode from '../../enums/equation_entry_mode' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Insert equation via Hand - ${editorName} editor - ${toolbar}`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`@smoke MTHTML-20 Insert a handwritten equation using ${toolbar}: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.showEquationEntryForm(EquationEntryMode.MATHML) + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.pause(500) // Wait for the equation to be processed + await wirisEditor.handModeButton.click() + await wirisEditor.pause(500) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) + } +} \ No newline at end of file diff --git a/tests/e2e/tests/latex/latex.spec.ts b/tests/e2e/tests/latex/latex.spec.ts new file mode 100644 index 000000000..7b9140b78 --- /dev/null +++ b/tests/e2e/tests/latex/latex.spec.ts @@ -0,0 +1,87 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import EquationEntryMode from '../../enums/equation_entry_mode' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`LaTeX - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`Validate LaTeX formula detection: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.appendText('$$ ' + Equations.squareRootY.latex + '$$') + + await editor.selectItemAtCursor() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertButton.click() + await editor.waitForLatexExpression('\\sqrt y') + + const latexEquations = await editor.getLatexEquationsInEditField() + expect(latexEquations).toContain('\\sqrt y') + }) + + test(`Insert formula using LaTeX equation entry form: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.showEquationEntryForm(EquationEntryMode.LATEX) + await wirisEditor.insertEquationUsingEntryForm(Equations.squareRootY.latex ?? (() => { throw new Error('LaTeX equation is undefined') })()) + await wirisEditor.pause(500) // Wait for the equation to be processed + await editor.waitForEquation(Equations.squareRootY) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.squareRootY.altText) + expect(isEquationPresent).toBeTruthy() + }) + + test(`@smoke MTHTML-10 Edit LaTeX equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.appendText('$$ ' + Equations.squareRootY.latex + '$$') + await editor.selectItemAtCursor() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.appendText('+5') + await wirisEditor.pause(500) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.waitForLatexExpression(Equations.squareRootYPlusFive.latex ?? (() => { throw new Error('LaTeX equation is undefined') })()) + const latexEquations = await editor.getLatexEquationsInEditField() + expect(latexEquations).toContain(Equations.squareRootYPlusFive.latex ?? (() => { throw new Error('LaTeX equation is undefined') })()) + }) + + test(`Edit empty LaTeX equation: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const INPUT_FORMULA = 'sin x' + + await editor.open() + await editor.clear() + await editor.appendText('$$$$') + await editor.selectItemAtCursor() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.insertEquationViaKeyboard(INPUT_FORMULA) + + await editor.waitForLatexExpression('\\sin\\;x') + const latexEquations = await editor.getLatexEquationsInEditField() + expect(latexEquations).toContain('\\sin\\;x') + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/modal/confirmation_dialog.spec.ts b/tests/e2e/tests/modal/confirmation_dialog.spec.ts new file mode 100644 index 000000000..b2fff3823 --- /dev/null +++ b/tests/e2e/tests/modal/confirmation_dialog.spec.ts @@ -0,0 +1,108 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Toolbar from '../../enums/toolbar' +import Equations from '../../enums/equations' +import Equation from '../../interfaces/equation' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`Confirmation dialog - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-11 When wiris editor contains no changes and user clicks the Cancel button, modal closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.cancelButton.click() + + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + + test(`MTHTML-3 When wiris editor contains changes and user clicks the Cancel button, modal displays confirmation dialog: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const EQUATION_TO_TYPE_VIA_KEYBOARD = '111' + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard(EQUATION_TO_TYPE_VIA_KEYBOARD) + + await wirisEditor.cancelButton.click() // confirmation dialog should be displayed after this click! + + await expect(wirisEditor.wirisEditorWindow).toBeVisible() + await expect(wirisEditor.confirmationDialog).toBeVisible() + }) + + test(`When confirmation dialog is displayed and user clicks cancel, confirmation dialog closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const EQUATION_TO_TYPE_VIA_KEYBOARD = '221221' + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard(EQUATION_TO_TYPE_VIA_KEYBOARD) + await wirisEditor.cancelButton.click() // confirmation dialog should be displayed after this click! + + await wirisEditor.confirmationDialogCancelButton.click() + + await expect(wirisEditor.confirmationDialog).not.toBeVisible() + await expect(wirisEditor.wirisEditorWindow).toBeVisible() + }) + + test(`MTHTML-12 When confirmation dialog is displayed and user clicks the Close button, wiris editor closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const EQUATION_TO_TYPE_VIA_KEYBOARD = '3' + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard(EQUATION_TO_TYPE_VIA_KEYBOARD) + await wirisEditor.closeButton.click() // confirmation dialog should be displayed after this click! + + await wirisEditor.confirmationDialogCloseButton.click() + + await expect(wirisEditor.confirmationDialog).not.toBeVisible() + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + + test(`MTHTML-14 When confirmation dialog is displayed and user press the ESC key, wiris editor closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const EQUATION_TO_TYPE_VIA_KEYBOARD = '3' + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard(EQUATION_TO_TYPE_VIA_KEYBOARD) + await page.keyboard.press('Escape') // confirmation dialog should be displayed after this! + + await wirisEditor.confirmationDialogCloseButton.click() + + await expect(wirisEditor.confirmationDialog).not.toBeVisible() + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + + test(`MTHTML-29 Insert an equation after aborting the cancel: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + const EQUATION_TO_INSERT_VIA_KEYBOARD = '1' + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard(EQUATION_TO_INSERT_VIA_KEYBOARD) + + await wirisEditor.cancelButton.click() // confirmation dialog should be displayed after this click! + await wirisEditor.confirmationDialogCancelButton.click() + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.waitForEquation(Equations.singleNumber) + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/modal/toolbar.spec.ts b/tests/e2e/tests/modal/toolbar.spec.ts new file mode 100644 index 000000000..82db1d164 --- /dev/null +++ b/tests/e2e/tests/modal/toolbar.spec.ts @@ -0,0 +1,102 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Toolbar from '../../enums/toolbar' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe(`Toolbar functions - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-13 When the modal is displayed and close button is clicked, wiris modal closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.closeButton.click() + await wirisEditor.waitUntilClosed() + + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + + test(`When the modal is displayed and enable full screen button is clicked, display changes to full-screen: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.fullScreenButton.click() + + await expect(wirisEditor.modalOverlay).toBeVisible() + }) + + test(`When the modal is displayed in full screen mode and disable full-screen button is clicked, display changes to normal: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.fullScreenButton.click() + + await wirisEditor.exitFullScreenButton.click() + + await expect(wirisEditor.modalOverlay).not.toBeVisible() + }) + + // WIP + test.fixme(`When the modal is displayed and minimize button is clicked, modal is minimized: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await wirisEditor.minimizeButton.click() + await editor.pause(1000) + + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + + // WIP + test.fixme(`When the modal is minimized and user double clicks the banner, modal opens: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.minimizeButton.click() + await wirisEditor.waitUntilClosed() + + await wirisEditor.modalTitle.click() + + await expect(wirisEditor.wirisEditorWindow).toBeVisible() + }) + + test.fixme(`When the modal is minimized from full-screen mode and user double clicks the banner, modal opens in full-screen mode: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.fullScreenButton.click() + + await wirisEditor.minimizeButton.click() + // TODO: This test seems incomplete in the original WebDriverIO version + }) + + test(`MTHTML-15 When the modal is displayed and ESC key is pressed, wiris modal closes: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + + await page.keyboard.press('Escape') + await wirisEditor.waitUntilClosed() + + await expect(wirisEditor.wirisEditorWindow).not.toBeVisible() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tests/telemetry/telemetry.spec.ts b/tests/e2e/tests/telemetry/telemetry.spec.ts new file mode 100644 index 000000000..ca9abf388 --- /dev/null +++ b/tests/e2e/tests/telemetry/telemetry.spec.ts @@ -0,0 +1,45 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import { captureTelemetryRequests } from '../../helpers/network' +import Toolbar from '../../enums/toolbar' +import Equations from '../../enums/equations' + +const editors = getEditorsFromEnv() + +for (const editorName of editors) { + test.describe('Telemetry', { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-59 MathType all events testing: ${editorName} editor`, async ({ page, browserName }) => { + // Skip Firefox as mentioned in original test + test.skip(browserName === 'firefox', 'Telemetry tests are skipped on Firefox') + + const { editor, wirisEditor } = await setupEditor(page, editorName) + + // Enable Network Listener and capture all telemetry requests + const foundEvents: string[] = [] + await captureTelemetryRequests(page, foundEvents) + + // Perform the actions that will trigger the telemetry events + await editor.open() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.cancelButton.click() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.pause(1500) // This pause is needed to wait for the last event + + // Check that all events have been sent are the ones we expect, in the same order + const expectEvents = ['STARTED_TELEMETRY_SESSION', 'CLOSED_MTCT_EDITOR', 'OPENED_MTCT_EDITOR', 'INSERTED_FORMULA', 'CLOSED_MTCT_EDITOR', 'OPENED_MTCT_EDITOR', 'INSERTED_FORMULA', 'CLOSED_MTCT_EDITOR'] + expect(JSON.stringify(expectEvents) === JSON.stringify(foundEvents)).toBeTruthy() + }) + }) +} \ No newline at end of file diff --git a/tests/e2e/tsconfig.json b/tests/e2e/tsconfig.json new file mode 100644 index 000000000..37aa9dd70 --- /dev/null +++ b/tests/e2e/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022"], + "module": "commonjs", + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": false, + "outDir": "./dist", + "rootDir": ".", + "types": ["node", "@playwright/test"] + }, + "include": [ + "tests/**/*", + "page-objects/**/*", + "helpers/**/*", + "enums/**/*", + "interfaces/**/*", + "playwright.config.ts" + ], + "exclude": ["node_modules", "dist", "test-results"] +} \ No newline at end of file From 8634d7811a7b57107b80eb4b483a1db5b9a3f485 Mon Sep 17 00:00:00 2001 From: Carla Lara Date: Wed, 25 Mar 2026 16:31:26 +0100 Subject: [PATCH 2/6] fix: Devkit version --- packages/devkit/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/devkit/package.json b/packages/devkit/package.json index 8a3a4a676..75add8ac3 100644 --- a/packages/devkit/package.json +++ b/packages/devkit/package.json @@ -1,6 +1,6 @@ { "name": "@wiris/mathtype-html-integration-devkit", - "version": "1.17.14", + "version": "1.17.15", "description": "Allows to integrate MathType Web into any JavaScript HTML WYSIWYG rich text editor.", "keywords": [ "chem", From 02efea9ac69ae7601bb142df6ea0e5af7c5cd46b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20Bar=C3=B3n?= Date: Mon, 27 Apr 2026 11:44:06 +0200 Subject: [PATCH 3/6] Test/refactor e2e (#1145) * ci: update codeowners * test: refactor details of e2e tests * test: add tests for track changes * test: add latex test cases for track changes * test: address edit suggestions * test: fix hand edit test case * test: Include CK5_LICENSE_KEY in e2e test workflow Add CK5_LICENSE_KEY to environment variables for tests --------- Co-authored-by: Xinyu Jiang <125269853+xjiang-at-wiris@users.noreply.github.com> Co-authored-by: David Adalid <159769517+dadalid-at-wiris@users.noreply.github.com> --- .github/CODEOWNERS | 2 +- .github/workflows/run-e2e-tests.yml | 1 + tests/e2e/enums/equations.ts | 4 + tests/e2e/enums/track_changes_options.ts | 9 + tests/e2e/enums/typing_mode.ts | 2 +- tests/e2e/page-objects/base_editor.ts | 211 +++++++++++- tests/e2e/page-objects/html/ckeditor5.ts | 18 +- tests/e2e/page-objects/page.ts | 11 + tests/e2e/page-objects/wiris_editor.ts | 51 ++- tests/e2e/playwright.config.ts | 4 +- tests/e2e/tests/edit/edit_hand.spec.ts | 34 +- tests/e2e/tests/editor/editor.spec.ts | 10 +- .../tests/insert/insert_corner_cases.spec.ts | 13 +- .../track-changes/equations_changes.spec.ts | 91 +++++ .../tests/track-changes/latex_changes.spec.ts | 67 ++++ .../track-changes/toolbar_changes.spec.ts | 315 ++++++++++++++++++ 16 files changed, 809 insertions(+), 34 deletions(-) create mode 100644 tests/e2e/enums/track_changes_options.ts create mode 100644 tests/e2e/tests/track-changes/equations_changes.spec.ts create mode 100644 tests/e2e/tests/track-changes/latex_changes.spec.ts create mode 100644 tests/e2e/tests/track-changes/toolbar_changes.spec.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8635d58e2..9e1ad368e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,2 +1,2 @@ # WIRIS INTEGRATIONS TEAM -* @carla-at-wiris @jgonzalez-at-wiris @usantos-at-wiris @xjiang-at-wiris @ncornaglia-at-wiris +* @carla-at-wiris @jgonzalez-at-wiris @xjiang-at-wiris @ncornaglia-at-wiris diff --git a/.github/workflows/run-e2e-tests.yml b/.github/workflows/run-e2e-tests.yml index fd739cff2..8f4a6850e 100644 --- a/.github/workflows/run-e2e-tests.yml +++ b/.github/workflows/run-e2e-tests.yml @@ -60,6 +60,7 @@ jobs: env: CKEDITOR4_API_KEY: ${{ secrets.CKEDITOR4_API_KEY }} FROALA_API_KEY: ${{ secrets.FROALA_API_KEY }} + CK5_LICENSE_KEY: ${{ secrets.CK5_LICENSE_KEY }} - name: Publish test results for ${{ matrix.editor }} uses: dorny/test-reporter@d61b558e8df85cb60d09ca3e5b09653b4477cea7 # v2.0.0 diff --git a/tests/e2e/enums/equations.ts b/tests/e2e/enums/equations.ts index 71c68c796..3210e5b98 100644 --- a/tests/e2e/enums/equations.ts +++ b/tests/e2e/enums/equations.ts @@ -5,6 +5,10 @@ const Equations: Record = { altText: '1', mathml: '1' }, + onePlus: { + altText: '1 plus', + mathml: '1+' + }, styledSingleNumber: { altText: 'bold italic 1', mathml: '1' diff --git a/tests/e2e/enums/track_changes_options.ts b/tests/e2e/enums/track_changes_options.ts new file mode 100644 index 000000000..8402774fb --- /dev/null +++ b/tests/e2e/enums/track_changes_options.ts @@ -0,0 +1,9 @@ +enum TrackChangesOptions { + ACCEPT_ALL = 'Accept all suggestions', + ACCEPT_SELECTED = 'Accept all selected suggestions', + DISCARD_ALL = 'Discard all suggestions', + DISCARD_SELECTED = 'Discard all selected suggestions', + PREVIEW_FINAL = 'Preview final content' +} + +export default TrackChangesOptions diff --git a/tests/e2e/enums/typing_mode.ts b/tests/e2e/enums/typing_mode.ts index 3eaa5bd5b..0369cbb59 100644 --- a/tests/e2e/enums/typing_mode.ts +++ b/tests/e2e/enums/typing_mode.ts @@ -4,4 +4,4 @@ enum TypingMode { UNKNOWN = 'UNKNOWN', } -export default TypingMode \ No newline at end of file +export default TypingMode diff --git a/tests/e2e/page-objects/base_editor.ts b/tests/e2e/page-objects/base_editor.ts index 40c852663..b10da0411 100644 --- a/tests/e2e/page-objects/base_editor.ts +++ b/tests/e2e/page-objects/base_editor.ts @@ -1,6 +1,7 @@ import { Page, Locator, expect, FrameLocator } from '@playwright/test' import Toolbar from '../enums/toolbar' import type Equation from '../interfaces/equation' +import TrackChangesOptions from '../enums/track_changes_options' import BasePage from './page' const path = require('path') @@ -105,6 +106,150 @@ export default abstract class BaseEditor extends BasePage { await this.page.keyboard.type(text) } + public async getSourceCodeEditFieldValue(): Promise { + const sourceCodeEditField = this.getSourceCodeEditField?.() + if (!sourceCodeEditField) { + throw new Error('Source code edit field selector is not defined.') + } + await this.page.locator(sourceCodeEditField).waitFor({ state: 'visible' }) + return await this.page.locator(sourceCodeEditField).inputValue() + } + + public async clickTrackChanges(): Promise { + const trackChangesButton = this.getTrackChangesButton?.() + if (trackChangesButton) { + await this.page.locator(trackChangesButton).first().waitFor({ state: 'visible' }) + await this.page.locator(trackChangesButton).first().click() + } + } + + /** + * Retrieves all track change suggestion markers from the editor area. + * Each item includes its type (insertion or deletion), the equation data, and the suggestion ID. + * @returns {Promise>} + */ + public async getTrackChangesItems(): Promise< + Array<{ + type: 'insertion' | 'deletion' + altText: string + mathml: string + suggestionId: string + authorId: string + }> + > { + let frameOrPage: Page | FrameLocator + if (this.iframe) { + frameOrPage = this.page.frameLocator(this.iframe) + } else { + frameOrPage = this.page + } + + await this.page.waitForTimeout(500) + + const suggestionMarkers = frameOrPage.locator( + `${this.editField} span.ck-suggestion-marker` + ) + const count = await suggestionMarkers.count() + const items: Array<{ + type: 'insertion' | 'deletion' + altText: string + mathml: string + suggestionId: string + authorId: string + }> = [] + + for (let i = 0; i < count; i++) { + const marker = suggestionMarkers.nth(i) + const classList = await marker.getAttribute('class') || '' + const suggestionId = await marker.getAttribute('data-suggestion') || '' + const authorId = await marker.getAttribute('data-author-id') || '' + + let type: 'insertion' | 'deletion' + if (classList.includes('ck-suggestion-marker-deletion')) { + type = 'deletion' + } else if (classList.includes('ck-suggestion-marker-insertion')) { + type = 'insertion' + } else { + // Default to insertion if neither specific class is found + type = 'insertion' + } + + // Get equation data from the img inside the marker + const img = marker.locator('img.Wirisformula') + const imgCount = await img.count() + + if (imgCount > 0) { + const altText = await img.first().getAttribute('alt') || '' + const mathml = await img.first().getAttribute('data-mathml') || '' + items.push({ type, altText, mathml, suggestionId, authorId }) + } else { + // Marker exists but has no equation image (could be text-only change) + const textContent = await marker.textContent() || '' + items.push({ type, altText: textContent, mathml: '', suggestionId, authorId }) + } + } + + return items + } + + /** + * Gets only the track change insertions from the editor. + */ + public async getTrackChangeInsertions() { + const items = await this.getTrackChangesItems() + return items.filter((item) => item.type === 'insertion') + } + + /** + * Gets only the track change deletions from the editor. + */ + public async getTrackChangeDeletions() { + const items = await this.getTrackChangesItems() + return items.filter((item) => item.type === 'deletion') + } + + /** + * Retrieves all equations from the track changes preview container. + * @returns {Promise} Array of equations found in the preview. + */ + public async getTrackChangesPreviewEquations(): Promise { + const previewContainer = this.getTrackChangesPreviewContainer?.() + if (!previewContainer) { + throw new Error('Track changes preview container selector is not defined.') + } + + await this.page.locator(previewContainer).waitFor({ state: 'visible' }) + + const images = this.page.locator(`${previewContainer} img.Wirisformula`) + const count = await images.count() + const equations: Equation[] = [] + + for (let i = 0; i < count; i++) { + const img = images.nth(i) + const altText = await img.getAttribute('alt') || '' + const mathml = await img.getAttribute('data-mathml') || '' + equations.push({ altText, mathml }) + } + + return equations + } + + /** + * Clicks on a specific track change option in the editor. + * @param option - The track change option to click, such as accepting or discarding suggestions. + */ + public async clickTrackChangeOption(option: TrackChangesOptions): Promise { + const trackChangesDropdown = this.getTrackChangesDropdown?.() + if (trackChangesDropdown) { + await this.page.locator(trackChangesDropdown).click() + } + + const trackChangeOptionButton = this.page.getByRole('menuitem', { name: option }) + if (trackChangeOptionButton) { + await trackChangeOptionButton.click() + } + } + /** * Retrieves all equations from the editor using the alt text and data-mathml DOM attributes. * @returns {Promise} Array of equation interface. @@ -154,7 +299,17 @@ export default abstract class BaseEditor extends BasePage { return this.page.frameLocator(this.iframe).locator(`${this.editField} img[alt="${equation.altText}"]`) } - return this.page.locator(`${this.editField} img[alt="${equation.altText}"]`) + return this.page.locator(`${this.editField} img[alt="${equation.altText}"]`).first() + } + + /** + * Deletes a specific equation from the editor. + * @param {Equation} equation - The equation to delete. + */ + public async deleteEquation(equation: Equation): Promise { + const equationElement = this.getEquationElement(equation) + await equationElement.click() + await this.page.keyboard.press('Delete') } /** @@ -203,7 +358,7 @@ export default abstract class BaseEditor extends BasePage { await this.page.keyboard.press('Control+End') await this.pause(500) - await this.page.keyboard.type(textToInsert) + await this.type(textToInsert) } /** @@ -211,23 +366,51 @@ export default abstract class BaseEditor extends BasePage { * Uses selectItemAtCursor, but that's not compatible with froala, so in that case does a click in the contextual toolbar * @param {Toolbar} toolbar - toolbar of the test */ - public async openWirisEditorForLastInsertedFormula(toolbar: Toolbar, equation: Equation): Promise { + public async openWirisEditorForLastInsertedFormula(toolbar: Toolbar, equation?: Equation): Promise { const isFroala = this.getName() === 'froala' + if (isFroala) { + if (!equation) { + throw new Error('Equation must be provided for Froala editor') + } + + await this.openWirisEditorForFormula(toolbar, equation) + } else { + await this.selectItemAtCursor() + await this.openWirisEditor(toolbar) + } + } + /** + * Open the wiris Editor to edit a specific formula by clicking on it and opening the wiris editor. + * @param {Toolbar} toolbar - toolbar of the test + * @param {Equation} equation - The equation to edit + */ + public async openWirisEditorForFormula(toolbar: Toolbar, equation: Equation): Promise { + const isFroala = this.getName() === 'froala' + const equationElement = this.getEquationElement(equation) if (isFroala) { - const equationElement = this.getEquationElement(equation) await equationElement.click() - - const mathTypeButton = this.getContextualToolbarMathTypeButton?.() - if (mathTypeButton) { - await this.page.locator(mathTypeButton).click() + const buttonSelector = toolbar === Toolbar.MATH + ? this.getContextualToolbarMathTypeButton?.() + : this.getContextualToolbarChemTypeButton?.() + if (buttonSelector) { + await this.page.locator(buttonSelector).click() } } else { - await this.selectItemAtCursor() + await equationElement.click() await this.openWirisEditor(toolbar) } } + /** + * Selects a formula in the editor by clicking on it. + * @param equation - The equation to select. + */ + public async selectFormula(equation: Equation): Promise { + const equationElement = this.getEquationElement(equation) + await equationElement.click() + } + /** * Selects the item at the current cursor position within the editor. This uses shift + the left arrow key to select. */ @@ -268,7 +451,7 @@ export default abstract class BaseEditor extends BasePage { frameOrPage = this.page } - const textContents = await frameOrPage.locator(this.editField).textContent() + const textContents = await frameOrPage.locator(this.editField).first().textContent() if (!textContents) { return undefined @@ -400,8 +583,8 @@ export default abstract class BaseEditor extends BasePage { await this.page.mouse.move(box.x - 10, box.y - 10) await this.pause(500) await this.page.mouse.up() - } } + } public async applyStyle(): Promise { await this.focus() @@ -477,4 +660,10 @@ export default abstract class BaseEditor extends BasePage { public getSourceCodeEditorButton?(): string public getSourceCodeEditField?(): string + + public getTrackChangesButton?(): string + + public getTrackChangesDropdown?(): string + + public getTrackChangesPreviewContainer?(): string } diff --git a/tests/e2e/page-objects/html/ckeditor5.ts b/tests/e2e/page-objects/html/ckeditor5.ts index a098a3164..6373007e8 100644 --- a/tests/e2e/page-objects/html/ckeditor5.ts +++ b/tests/e2e/page-objects/html/ckeditor5.ts @@ -1,11 +1,15 @@ import { Page } from '@playwright/test' import BaseEditor from '../base_editor' +import TrackChangesOptions from '../../enums/track_changes_options' class CKEditor5 extends BaseEditor { protected readonly wirisEditorButtonMathType = "[data-cke-tooltip-text='Insert a math equation - MathType']" protected readonly wirisEditorButtonChemType = "[data-cke-tooltip-text='Insert a chemistry formula - ChemType']" protected readonly sourceCodeEditorButton = "[data-cke-tooltip-text='Source']" protected readonly sourceCodeEditField = '.ck-source-editing-area' + protected readonly trackChangesButton = "[data-cke-tooltip-text='Track changes']" + protected readonly trackChangesDropdown = '.ck-splitbutton__arrow'; + protected readonly trackChangesPreviewContainer = '.ck-track-changes-preview__root-container'; protected readonly editField = '.ck-editor__editable' protected readonly name = 'ckeditor5' @@ -20,6 +24,18 @@ class CKEditor5 extends BaseEditor { public getSourceCodeEditField(): string { return this.sourceCodeEditField } + + public getTrackChangesButton(): string { + return this.trackChangesButton + } + + public getTrackChangesDropdown(): string { + return this.trackChangesDropdown + } + + public getTrackChangesPreviewContainer(): string { + return this.trackChangesPreviewContainer + } } -export default CKEditor5 \ No newline at end of file +export default CKEditor5 diff --git a/tests/e2e/page-objects/page.ts b/tests/e2e/page-objects/page.ts index 563b3bba2..49ce25bc1 100644 --- a/tests/e2e/page-objects/page.ts +++ b/tests/e2e/page-objects/page.ts @@ -13,4 +13,15 @@ export default class BasePage { async pause(milliseconds: number): Promise { await this.page.waitForTimeout(milliseconds) } + + public async press(key: string, options?: { times?: number }): Promise { + const times = options?.times || 1 + for (let i = 0; i < times; i++) { + await this.page.keyboard.press(key) + } + } + + public async type(text: string): Promise { + await this.page.keyboard.type(text) + } } diff --git a/tests/e2e/page-objects/wiris_editor.ts b/tests/e2e/page-objects/wiris_editor.ts index 436f0e60e..7cd4f613d 100644 --- a/tests/e2e/page-objects/wiris_editor.ts +++ b/tests/e2e/page-objects/wiris_editor.ts @@ -72,6 +72,10 @@ class WirisEditor extends BasePage { return this.page.locator('canvas.wrs_canvas') } + get handPreview(): Locator { + return this.page.locator('.wrs_previewImage') + } + /** * Checks if the wiris editor modal is open by checking for the presence of the modal window, cancel and insert buttons. */ @@ -204,10 +208,51 @@ class WirisEditor extends BasePage { public async getMode(): Promise { const title = await this.handModeButton.getAttribute('title') - return title === 'Go to handwritten mode' ? TypingMode.KEYBOARD : - title === 'Use keyboard' ? TypingMode.HAND : + return title === 'Go to handwritten mode' ? TypingMode.KEYBOARD : + title === 'Use keyboard' ? TypingMode.HAND : TypingMode.UNKNOWN } + + /** + * Draws a stroke on the hand canvas by simulating mouse movements. + * @param {Array<{x: number, y: number}>} points - Array of points to draw through (relative to canvas top-left corner) + */ + public async drawStroke(points: Array<{x: number, y: number}>): Promise { + if (points.length < 2) { + throw new Error('Need at least 2 points to draw a stroke') + } + + const canvas = this.handCanvas + const box = await canvas.boundingBox() + + if (!box) { + throw new Error('Canvas not found or not visible') + } + + // Move to first point and start drawing + await this.page.mouse.move(box.x + points[0].x, box.y + points[0].y) + await this.page.mouse.down() + + // Draw through each point + for (let i = 1; i < points.length; i++) { + await this.page.mouse.move(box.x + points[i].x, box.y + points[i].y) + await this.pause(10) // Small pause for smoother drawing + } + + // Release mouse + await this.page.mouse.up() + } + + /** + * Waits for the handwriting recognition to process the input by waiting for the hand preview image to be visible and have a src attribute that starts with 'blob:' + */ + public async waitForHandwritingRecognition(): Promise { + await this.handPreview.waitFor({ state: 'visible' }) + await this.page.waitForFunction( + (el) => el?.getAttribute('src')?.startsWith('blob:') ?? false, + await this.handPreview.elementHandle(), + ) + } } -export default WirisEditor \ No newline at end of file +export default WirisEditor diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts index 04c386927..ee07fcc21 100644 --- a/tests/e2e/playwright.config.ts +++ b/tests/e2e/playwright.config.ts @@ -46,9 +46,9 @@ export default defineConfig({ ], use: { baseURL: process.env.USE_STAGING === 'true' ? 'https://integrations.wiris.kitchen' : '', - trace: isCI ? 'retain-on-failure' : 'on-first-retry', + trace: 'retain-on-failure', screenshot: 'only-on-failure', - video: isCI ? 'off' : 'on-first-retry', + video: isCI ? 'off' : 'retain-on-failure', }, webServer: process.env.USE_STAGING === 'true' ? undefined : webServers, projects: [ diff --git a/tests/e2e/tests/edit/edit_hand.spec.ts b/tests/e2e/tests/edit/edit_hand.spec.ts index f88c6234e..77f5324fa 100644 --- a/tests/e2e/tests/edit/edit_hand.spec.ts +++ b/tests/e2e/tests/edit/edit_hand.spec.ts @@ -14,20 +14,44 @@ for (const editorName of editors) { for (const toolbar of toolbars) { test(`@smoke MTHTML-8 Edit Hand equation with ${toolbar}: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(toolbar) await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) await wirisEditor.pause(1000) // Wait for the equation to be processed await wirisEditor.handModeButton.click() - await wirisEditor.pause(500) + await wirisEditor.pause(500) // Wait for the mode to switch + await wirisEditor.drawStroke([ + { x: 300, y: 135 }, + { x: 350, y: 135 }, + ]); + await wirisEditor.pause(100) + await wirisEditor.drawStroke([ + { x: 325, y: 110 }, + { x: 325, y: 160 }, + ]); + await wirisEditor.waitForHandwritingRecognition() + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.onePlus) + + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.onePlus) + await wirisEditor.waitUntilLoaded(TypingMode.HAND) + await wirisEditor.pause(500) // Wait for the editor to be fully ready for input + await wirisEditor.drawStroke([ + { x: 380, y: 60 }, + { x: 380, y: 185 }, + ]); + await wirisEditor.pause(500) // Wait for the model to start processing the input + await wirisEditor.waitForHandwritingRecognition() await wirisEditor.insertButton.click() await wirisEditor.waitUntilClosed() - await editor.waitForEquation(Equations.singleNumber) + await editor.waitForEquation(Equations.OnePlusOne) - await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.singleNumber) + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.OnePlusOne) await wirisEditor.waitUntilLoaded(TypingMode.HAND) const typingMode = await wirisEditor.getMode() @@ -35,4 +59,4 @@ for (const editorName of editors) { }) } }) -} \ No newline at end of file +} diff --git a/tests/e2e/tests/editor/editor.spec.ts b/tests/e2e/tests/editor/editor.spec.ts index d8020c934..2452f2c7e 100644 --- a/tests/e2e/tests/editor/editor.spec.ts +++ b/tests/e2e/tests/editor/editor.spec.ts @@ -11,9 +11,9 @@ for (const editorName of editors) { tag: [`@${editorName}`, '@regression'], }, () => { test.describe('Undo and Redo', () => { - const isKnownIssue = editorName === 'generic'; - test(`MTHTML-78 Undo and redo math formula with ${editorName} editor`, { tag: isKnownIssue ? ['@knownissue'] : [] } , async ({ page }) => { - test.fail(isKnownIssue, 'Known issue: generic editors fails to undo equation'); + const isGeneric = editorName === 'generic'; + test(`MTHTML-78 Undo and redo math formula with ${editorName} editor`, { tag: isGeneric ? ['@knownissue'] : [] } , async ({ page }) => { + test.fail(isGeneric, 'Known issue: generic editors fails to undo equation'); const { editor, wirisEditor } = await setupEditor(page, editorName) @@ -35,6 +35,8 @@ for (const editorName of editors) { test.describe('Resize', () => { test(`MTHTML-22 Formulas cannot be resized ${editorName} editor`, async ({ page }) => { + test.skip(editorName === 'generic', 'Known case: generic editor does not allow resizing formulas'); + const { editor, wirisEditor } = await setupEditor(page, editorName) await editor.open() @@ -104,7 +106,7 @@ for (const editorName of editors) { }) test.describe('Text Alignment', () => { - test(`MTHTML-23 Validate formula alignment: ${editorName} editor`, async ({ page }) => { + test.skip(`MTHTML-23 Validate formula alignment: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) await editor.open() diff --git a/tests/e2e/tests/insert/insert_corner_cases.spec.ts b/tests/e2e/tests/insert/insert_corner_cases.spec.ts index 47e15595e..7cb55089c 100644 --- a/tests/e2e/tests/insert/insert_corner_cases.spec.ts +++ b/tests/e2e/tests/insert/insert_corner_cases.spec.ts @@ -14,7 +14,7 @@ for (const editorName of editors) { }, () => { test(`MTHTML-80 Insert styled equation: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.openWirisEditor(toolbar) await wirisEditor.waitUntilLoaded() @@ -29,7 +29,7 @@ for (const editorName of editors) { test(`MTHTML-68 Insert equation with special characters: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.openWirisEditor(toolbar) await wirisEditor.waitUntilLoaded() @@ -44,16 +44,17 @@ for (const editorName of editors) { test(`MTHTML-90 User inserts a formula when the editor input doesn't have focus: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + // Insert a formula using only the keyboard (click MT button > type > tab to insert > enter) and keep writing await editor.open() await editor.openWirisEditor(toolbar) await wirisEditor.waitUntilLoaded() await wirisEditor.typeEquationViaKeyboard('1+1') - await page.keyboard.press('Tab') + await editor.clickElement(await page.getByText('UPDATE')) // Click the update button to move the focus away from the editor await wirisEditor.pause(500) - await page.keyboard.press('Enter') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() await editor.waitForEquation(Equations.OnePlusOne) @@ -63,4 +64,4 @@ for (const editorName of editors) { }) }) } -} \ No newline at end of file +} diff --git a/tests/e2e/tests/track-changes/equations_changes.spec.ts b/tests/e2e/tests/track-changes/equations_changes.spec.ts new file mode 100644 index 000000000..3c3faac8b --- /dev/null +++ b/tests/e2e/tests/track-changes/equations_changes.spec.ts @@ -0,0 +1,91 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Track Changes - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-113 Insert equation - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.clickTrackChanges() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.getTrackChangesItems().then(items => { + const hasInsertedEquationInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.singleNumber.altText); + expect(hasInsertedEquationInTrackChanges).toBeTruthy() + }) + }) + + test(`MTHTML-115 Delete equation - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.clickTrackChanges() + await editor.deleteEquation(Equations.singleNumber) + + await editor.getTrackChangesItems().then(items => { + const hasDeletedEquationInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.singleNumber.altText); + expect(hasDeletedEquationInTrackChanges).toBeTruthy() + }) + }) + + test(`MTHTML-114 Edit equation - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.clickTrackChanges() + await editor.openWirisEditorForLastInsertedFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.getTrackChangesItems().then(items => { + const hasEditedEquationInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.OnePlusOne.altText); + const hasDeletedEquationInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.singleNumber.altText); + expect(hasEditedEquationInTrackChanges).toBeTruthy() + expect(hasDeletedEquationInTrackChanges).toBeTruthy() + }) + }) + }) + } +} diff --git a/tests/e2e/tests/track-changes/latex_changes.spec.ts b/tests/e2e/tests/track-changes/latex_changes.spec.ts new file mode 100644 index 000000000..96be29b19 --- /dev/null +++ b/tests/e2e/tests/track-changes/latex_changes.spec.ts @@ -0,0 +1,67 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Track Changes Latex - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-119 Edit existing latex equation via MT/CT - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.appendText('$$ ' + Equations.squareRootY.latex + ' $$') + + await editor.clickTrackChanges() + + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.type('+5') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.getLatexEquationsInEditField().then((latexEquations) => { + let hasEditedEquationInTrackChanges = false; + + if (latexEquations) { + hasEditedEquationInTrackChanges = latexEquations.some((latex) => latex.includes(Equations.squareRootYPlusFive.latex!)); + } + expect(hasEditedEquationInTrackChanges).toBeTruthy() + }) + }) + + test(`MTHTML-120 Edit existing latex equation manually and via MT/CT - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.appendText('$$' + Equations.squareRootY.latex + '$$') + + await editor.clickTrackChanges() + + await editor.press('ArrowLeft', { times: 2 }) + await editor.type('+') + + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.type('5') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.waitForLatexExpression(Equations.squareRootYPlusFive.latex!) + }); + }); + } +} diff --git a/tests/e2e/tests/track-changes/toolbar_changes.spec.ts b/tests/e2e/tests/track-changes/toolbar_changes.spec.ts new file mode 100644 index 000000000..7ef40aaee --- /dev/null +++ b/tests/e2e/tests/track-changes/toolbar_changes.spec.ts @@ -0,0 +1,315 @@ +import { test, expect } from '@playwright/test' +import { setupEditor, getEditorsFromEnv } from '../../helpers/test-setup' +import Equations from '../../enums/equations' +import Toolbar from '../../enums/toolbar' +import Equation from '../../interfaces/equation' +import TrackChangesOptions from '../../enums/track_changes_options' + +const editors = getEditorsFromEnv() +const toolbars = Object.values(Toolbar) + +for (const editorName of editors) { + for (const toolbar of toolbars) { + test.describe(`Track Changes Options - ${editorName} editor`, { + tag: [`@${editorName}`, '@regression'], + }, () => { + test(`MTHTML-117 Accept all suggestions - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.clickTrackChanges() + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.deleteEquation(Equations.OnePlusOne) + + await editor.openWirisEditorForFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.clickTrackChangeOption(TrackChangesOptions.ACCEPT_ALL) + + await editor.getEquations().then((equations: Equation[]) => { + const hasSingleNumber = equations.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + const hasOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const hasStyledOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(hasSingleNumber).toBeFalsy() + expect(hasOnePlusOne).toBeTruthy() + expect(hasStyledOnePlusOne).toBeTruthy() + expect(equations.length).toBe(2) + }) + expect(await editor.getTrackChangesItems()).toEqual([]) + }) + + test(`MTHTML-118 Discard all suggestions - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.clickTrackChanges() + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.deleteEquation(Equations.OnePlusOne) + + await editor.openWirisEditorForFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.clickTrackChangeOption(TrackChangesOptions.DISCARD_ALL) + + await editor.getEquations().then((equations: Equation[]) => { + const hasSingleNumber = equations.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + const hasOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const hasStyledOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(hasSingleNumber).toBeTruthy() + expect(hasOnePlusOne).toBeTruthy() + expect(hasStyledOnePlusOne).toBeFalsy() + expect(equations.length).toBe(2) + }) + expect(await editor.getTrackChangesItems()).toEqual([]) + }) + + test(`Accept all selected suggestions - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.clickTrackChanges() + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.deleteEquation(Equations.OnePlusOne) + + await editor.openWirisEditorForFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.clickTrackChangeOption(TrackChangesOptions.ACCEPT_SELECTED) + + await editor.getEquations().then((equations: Equation[]) => { + const hasSingleNumber = equations.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + const hasOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const hasStyledOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(hasSingleNumber).toBeFalsy() + expect(hasOnePlusOne).toBeTruthy() + expect(hasStyledOnePlusOne).toBeTruthy() + expect(equations.length).toBe(3) + }) + await editor.getTrackChangesItems().then(items => { + const hasDeletedSingleNumberInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.singleNumber.altText); + const hasInsertedOnePlusOneInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.OnePlusOne.altText); + const hasDeletedOnePlusOneInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.OnePlusOne.altText); + const hasInsertedStyledOnePlusOneInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.styledOnePlusOne.altText); + expect(hasDeletedSingleNumberInTrackChanges).toBeFalsy() + expect(hasInsertedOnePlusOneInTrackChanges).toBeFalsy() + expect(hasDeletedOnePlusOneInTrackChanges).toBeTruthy() + expect(hasInsertedStyledOnePlusOneInTrackChanges).toBeTruthy() + expect(items.length).toBe(2) + }) + }) + + test(`Discard all selected suggestions - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.clickTrackChanges() + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.deleteEquation(Equations.OnePlusOne) + + await editor.openWirisEditorForFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.clickTrackChangeOption(TrackChangesOptions.DISCARD_SELECTED) + + await editor.getEquations().then((equations: Equation[]) => { + const hasSingleNumber = equations.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + const hasOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const hasStyledOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(hasSingleNumber).toBeTruthy() + expect(hasOnePlusOne).toBeTruthy() + expect(hasStyledOnePlusOne).toBeTruthy() + expect(equations.length).toBe(3) + }) + await editor.getTrackChangesItems().then(items => { + const hasDeletedSingleNumberInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.singleNumber.altText); + const hasInsertedOnePlusOneInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.OnePlusOne.altText); + const hasDeletedOnePlusOneInTrackChanges = items.some((item) => item.type === 'deletion' && item.altText === Equations.OnePlusOne.altText); + const hasInsertedStyledOnePlusOneInTrackChanges = items.some((item) => item.type === 'insertion' && item.altText === Equations.styledOnePlusOne.altText); + expect(hasDeletedSingleNumberInTrackChanges).toBeFalsy() + expect(hasInsertedOnePlusOneInTrackChanges).toBeFalsy() + expect(hasDeletedOnePlusOneInTrackChanges).toBeTruthy() + expect(hasInsertedStyledOnePlusOneInTrackChanges).toBeTruthy() + expect(items.length).toBe(2) + }) + }) + + test(`MTHTML-116 Preview final result - ${toolbar} toolbar`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName); + + const hasTrackChanges = editor.getTrackChangesButton !== undefined; + test.skip(!hasTrackChanges, `Track changes button not available in ${editorName} editor`); + + await editor.open() + await editor.clear() + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.singleNumber.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.singleNumber) + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.OnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + await editor.clickTrackChanges() + + await editor.press('Enter') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationUsingEntryForm(Equations.styledOnePlusOne.mathml) + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.deleteEquation(Equations.OnePlusOne) + + await editor.openWirisEditorForFormula(toolbar, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + await editor.clickTrackChangeOption(TrackChangesOptions.PREVIEW_FINAL) + + await editor.getEquations().then((equations: Equation[]) => { + const hasSingleNumber = equations.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + const hasOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const hasStyledOnePlusOne = equations.some((equation: Equation) => equation.altText === Equations.styledOnePlusOne.altText) + expect(hasSingleNumber).toBeTruthy() + expect(hasOnePlusOne).toBeTruthy() + expect(hasStyledOnePlusOne).toBeTruthy() + expect(equations.length).toBe(6) + }) + await editor.getTrackChangesPreviewEquations().then(items => { + const hasSingleNumberInPreviewTrackChanges = items.some((item) => item.altText === Equations.singleNumber.altText); + const hasOnePlusOneInPreviewTrackChanges = items.some((item) => item.altText === Equations.OnePlusOne.altText); + const hasStyledOnePlusOneInPreviewTrackChanges = items.some((item) => item.altText === Equations.styledOnePlusOne.altText); + expect(hasSingleNumberInPreviewTrackChanges).toBeFalsy() + expect(hasOnePlusOneInPreviewTrackChanges).toBeTruthy() + expect(hasStyledOnePlusOneInPreviewTrackChanges).toBeTruthy() + expect(items.length).toBe(2) + }) + }) + }) + } +} From e80a6d1421fd78676307e92c29c5223457329226 Mon Sep 17 00:00:00 2001 From: Carla Lara <60604864+carla-at-wiris@users.noreply.github.com> Date: Wed, 29 Apr 2026 13:37:03 +0200 Subject: [PATCH 4/6] chore: Update ck5 deps to use latest version (#1143) --- packages/ckeditor5/dist/browser/index.css.map | 2 +- packages/ckeditor5/dist/browser/index.js | 27 +++++++++++++------ packages/ckeditor5/dist/browser/index.js.map | 2 +- packages/ckeditor5/dist/browser/index.umd.js | 27 +++++++++++++------ .../ckeditor5/dist/browser/index.umd.js.map | 2 +- packages/ckeditor5/dist/index.js | 8 +++--- packages/ckeditor5/dist/index.js.map | 2 +- 7 files changed, 46 insertions(+), 24 deletions(-) diff --git a/packages/ckeditor5/dist/browser/index.css.map b/packages/ckeditor5/dist/browser/index.css.map index 405bbbbb5..dc4759a7c 100644 --- a/packages/ckeditor5/dist/browser/index.css.map +++ b/packages/ckeditor5/dist/browser/index.css.map @@ -1 +1 @@ -{"version":3,"sources":["../../../devkit/styles/styles.css","../../theme/styles.css"],"names":[],"mappings":"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","file":"index.css","sourcesContent":[".wrs_modal_overlay {\n position: fixed;\n font-family: arial, sans-serif;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 999998;\n opacity: 0.65;\n pointer-events: auto;\n}\n\n.wrs_modal_overlay.wrs_modal_ios {\n visibility: hidden;\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_android {\n visibility: hidden;\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_ios.moodle {\n position: fixed;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_stack {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_maximized {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_minimized {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_closed {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_title {\n color: #fff;\n padding: 5px 0 5px 10px;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n text-align: left;\n}\n\n.wrs_modal_close_button {\n float: right;\n cursor: pointer;\n color: #fff;\n padding: 5px 10px 5px 0;\n margin: 10px 7px 0 0;\n background-repeat: no-repeat;\n}\n\n.wrs_modal_minimize_button {\n float: right;\n cursor: pointer;\n color: #fff;\n padding: 5px 10px 5px 0;\n top: inherit;\n margin: 10px 7px 0 0;\n}\n\n.wrs_modal_stack_button {\n float: right;\n cursor: pointer;\n color: #fff;\n margin: 10px 7px 0 0;\n padding: 5px 10px 5px 0;\n top: inherit;\n}\n\n.wrs_modal_stack_button.wrs_stack {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_stack_button.wrs_minimized {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_maximize_button {\n float: right;\n cursor: pointer;\n color: #fff;\n margin: 10px 7px 0 0;\n padding: 5px 10px 5px 0;\n top: inherit;\n}\n\n.wrs_modal_maximize_button.wrs_maximized {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_title_bar {\n display: block;\n background-color: #778e9a;\n}\n\n.wrs_modal_dialogContainer {\n border: none;\n background: #fafafa;\n z-index: 999999;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop {\n font-size: 14px;\n display: flex;\n flex-flow: column;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_maximized {\n position: fixed;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_minimized {\n position: fixed;\n top: inherit;\n margin: 0;\n margin-right: 10px;\n}\n\n.wrs_modal_dialogContainer.wrs_closed {\n visibility: hidden;\n display: none;\n opacity: 0;\n}\n\n/* Class that exists but hasn't got css properties defined\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_minimized.wrs_drag {} */\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_stack {\n position: fixed;\n bottom: 0;\n right: 0;\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_drag {\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_drag {\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_ios,\n.wrs_modal_dialogContainer.wrs_modal_android {\n margin: 0px;\n position: fixed;\n height: auto;\n overflow: hidden;\n top: calc(env(safe-area-inset-top));\n right: calc(env(safe-area-inset-right));\n left: calc(env(safe-area-inset-left));\n bottom: 0px;\n transform: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n/* Class that exists but hasn't got css properties defined\n.wrs_content_container.wrs_maximized {} */\n\n.wrs_content_container.wrs_minimized {\n display: none;\n}\n\n/* .wrs_editor {\n flex-grow: 1;\n} */\n\n.wrs_content_container.wrs_modal_desktop > div:first-child {\n flex-grow: 1;\n}\n\n.wrs_modal_wrapper.wrs_modal_android,\n.wrs_modal_wrapper.wrs_modal_ios {\n margin: 0.5rem !important;\n flex-grow: 0.98;\n display: flex;\n}\n\n.wrs_content_container.wrs_modal_ios,\n.wrs_content_container.wrs_modal_android {\n flex-grow: 0.98;\n display: flex;\n}\n\n.wrs_content_container.wrs_modal_desktop {\n width: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n height: auto !important;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_badStock {\n width: 100%;\n height: 280px;\n margin: 0 auto;\n border-width: 0;\n}\n\n.wrs_modal_wrapper.wrs_modal_badStock {\n width: 100%;\n height: 280px;\n margin: 0 auto;\n border-width: 0;\n}\n\n.wrs_noselect {\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.wrs_bottom_right_resizer {\n width: 10px;\n height: 10px;\n color: #778e9a;\n position: absolute;\n right: 4px;\n bottom: 8px;\n cursor: se-resize;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.wrs_bottom_left_resizer {\n width: 15px;\n height: 15px;\n color: #778e9a;\n position: absolute;\n left: 0;\n top: 0;\n cursor: se-resize;\n}\n\n.wrs_modal_controls {\n height: 42px;\n line-height: normal;\n}\n\n.wrs_modal_links {\n margin: 10px auto;\n margin-bottom: 0;\n font-family: arial, sans-serif;\n padding: 6px;\n display: inline;\n float: right;\n text-align: right;\n}\n\n.wrs_modal_links > a {\n text-decoration: none;\n color: #778e9a;\n font-size: 16px;\n}\n\n.wrs_modal_button_cancel,\n.wrs_modal_button_cancel:hover,\n.wrs_modal_button_cancel:visited,\n.wrs_modal_button_cancel:active,\n.wrs_modal_button_cancel:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-left: 5px;\n margin-bottom: 0;\n cursor: pointer;\n font-family: arial, sans-serif;\n background-color: #ddd;\n height: 32px;\n}\n\n.wrs_modal_button_accept,\n.wrs_modal_button_accept:hover,\n.wrs_modal_button_accept:visited,\n.wrs_modal_button_accept:active,\n.wrs_modal_button_accept:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-right: 5px;\n margin-bottom: 0;\n color: #fff;\n background: #778e9a;\n cursor: pointer;\n font-family: arial, sans-serif;\n height: 32px;\n}\n\n.wrs_editor_vertical_bar {\n height: 20px;\n float: right;\n background: none;\n width: 20px;\n cursor: pointer;\n}\n\n.wrs_modal_buttons_container {\n display: inline;\n float: left;\n}\n\n.wrs_modal_buttons_container.wrs_modalDesktop {\n padding-left: 0;\n}\n\n.wrs_modal_buttons_container > button {\n line-height: normal;\n background-image: none;\n}\n\n.wrs_modal_wrapper {\n margin: 6px;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n\n.wrs_modal_wrapper.wrs_modal_desktop.wrs_minimized {\n display: none;\n}\n\n.wrs_popupmessage_overlay_envolture {\n display: none;\n width: 100%;\n}\n\n.wrs_popupmessage_overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 4;\n cursor: pointer;\n}\n\n.wrs_popupmessage_panel {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: absolute;\n background: white;\n max-width: 500px;\n width: 75%;\n border-radius: 2px;\n padding: 20px;\n font-family: sans-serif;\n font-size: 15px;\n text-align: left;\n color: #2e2e2e;\n z-index: 5;\n max-height: 75%;\n overflow: auto;\n}\n\n.wrs_popupmessage_button_area {\n margin: 10px 0 0 0;\n}\n\n.wrs_panelContainer * {\n border: 0;\n}\n\n.wrs_button_cancel,\n.wrs_button_cancel:hover,\n.wrs_button_cancel:visited,\n.wrs_button_cancel:active,\n.wrs_button_cancel:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-left: 5px;\n margin-bottom: 0;\n cursor: pointer;\n font-family: arial, sans-serif;\n background-color: #ddd;\n background-image: none;\n height: 32px;\n}\n\n.wrs_button_accept,\n.wrs_button_accept:hover,\n.wrs_button_accept:visited,\n.wrs_button_accept:active,\n.wrs_button_accept:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-right: 5px;\n margin-bottom: 0;\n color: #fff;\n background: #778e9a;\n cursor: pointer;\n font-family: arial, sans-serif;\n height: 32px;\n}\n\n.wrs_editor button {\n box-shadow: none;\n}\n\n.wrs_editor .wrs_header button {\n border-bottom: none;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_stack.wrs_overlay_active {\n display: block;\n}\n\n/* Fix selection in drupal style */\n.wrs_toolbar tr:focus {\n background: none;\n}\n\n.wrs_toolbar tr:hover {\n background: none;\n}\n\n/* End of fix drupal */\n.wrs_modal_rtl .wrs_modal_button_cancel {\n margin-right: 5px;\n margin-left: 0;\n}\n\n.wrs_modal_rtl .wrs_modal_button_accept {\n margin-right: 0;\n margin-left: 5px;\n}\n\n.wrs_modal_rtl .wrs_button_cancel {\n margin-right: 5px;\n margin-left: 0;\n}\n\n.wrs_modal_rtl .wrs_button_accept {\n margin-right: 0;\n margin-left: 5px;\n}\n\n/* The Offline Modal (background) */\n.wrs_modal_offline {\n display: none;\n /* Hidden by default */\n position: fixed;\n /* Stay in place */\n z-index: 2;\n /* Sit on top */\n padding-top: 150px;\n /* Location of the box */\n left: 0;\n top: 0;\n width: 100%;\n /* Full width */\n height: 100%;\n /* Full height */\n overflow: auto;\n /* Enable scroll if needed */\n background-color: rgb(0, 0, 0);\n /* Fallback color */\n background-color: rgba(0, 0, 0, 0.4);\n /* Black w/ opacity */\n margin: auto;\n}\n\n/* Modal Content */\n.wrs_modal_content_offline {\n margin: auto;\n padding: 16px;\n background: #fff7ed;\n border-radius: 6px;\n width: 517px;\n height: 100px;\n position: relative;\n}\n\n/* The Close Button */\n.wrs_modal_offline_close {\n color: #c2410c;\n font-size: 24px;\n font-weight: bold;\n left: 95.7%;\n right: 2.08%;\n top: 7.6%;\n bottom: 75%;\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 400;\n position: absolute;\n}\n\n/* The Warn Icon */\n.wrs_modal_offline_warn {\n position: absolute;\n left: 2.08%;\n right: 94%;\n top: 11.6%;\n bottom: 75%;\n font-size: 24px;\n color: #fb923c;\n background-repeat: no-repeat;\n}\n\n.wrs_modal_offline_text_container {\n position: absolute;\n left: 6.8%;\n right: 6.08%;\n top: 10.4%;\n bottom: 2%;\n}\n\n.wrs_modal_offline_text {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n color: #c2410c;\n}\n\n.wrs_modal_offline_text_warn {\n height: 25px;\n font-family: \"Inter\";\n font-style: normal;\n font-size: 14px;\n line-height: 20px;\n font-weight: bold;\n color: #c2410c;\n}\n\n.wrs_modal_offline_close:hover,\n.wrs_modal_offline_close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n}\n","/* Replace the default suggestion marker border because it's doesn't span the entire widget. */\n.ck-widget.ck-math-widget.ck-suggestion-marker {\n border: none;\n\n &.ck-suggestion-marker-insertion {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-insertion-border);\n }\n\n &.ck-suggestion-marker--active {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-insertion-border-active);\n }\n }\n }\n\n &.ck-suggestion-marker-deletion {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-deletion-border);\n }\n\n &.ck-suggestion-marker--active {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-deletion-border-active);\n }\n }\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../node_modules/@wiris/mathtype-html-integration-devkit/styles/styles.css","../../theme/styles.css"],"names":[],"mappings":"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","file":"index.css","sourcesContent":[".wrs_modal_overlay {\n position: fixed;\n font-family: arial, sans-serif;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n z-index: 999998;\n opacity: 0.65;\n pointer-events: auto;\n}\n\n.wrs_modal_overlay.wrs_modal_ios {\n visibility: hidden;\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_android {\n visibility: hidden;\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_ios.moodle {\n position: fixed;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_stack {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_maximized {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_minimized {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_closed {\n background: rgba(0, 0, 0, 0);\n display: none;\n}\n\n.wrs_modal_title {\n color: #fff;\n padding: 5px 0 5px 10px;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n text-align: left;\n}\n\n.wrs_modal_close_button {\n float: right;\n cursor: pointer;\n color: #fff;\n padding: 5px 10px 5px 0;\n margin: 10px 7px 0 0;\n background-repeat: no-repeat;\n}\n\n.wrs_modal_minimize_button {\n float: right;\n cursor: pointer;\n color: #fff;\n padding: 5px 10px 5px 0;\n top: inherit;\n margin: 10px 7px 0 0;\n}\n\n.wrs_modal_stack_button {\n float: right;\n cursor: pointer;\n color: #fff;\n margin: 10px 7px 0 0;\n padding: 5px 10px 5px 0;\n top: inherit;\n}\n\n.wrs_modal_stack_button.wrs_stack {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_stack_button.wrs_minimized {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_maximize_button {\n float: right;\n cursor: pointer;\n color: #fff;\n margin: 10px 7px 0 0;\n padding: 5px 10px 5px 0;\n top: inherit;\n}\n\n.wrs_modal_maximize_button.wrs_maximized {\n visibility: hidden;\n margin: 0;\n padding: 0;\n}\n\n.wrs_modal_title_bar {\n display: block;\n background-color: #778e9a;\n}\n\n.wrs_modal_dialogContainer {\n border: none;\n background: #fafafa;\n z-index: 999999;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop {\n font-size: 14px;\n display: flex;\n flex-flow: column;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_maximized {\n position: fixed;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_minimized {\n position: fixed;\n top: inherit;\n margin: 0;\n margin-right: 10px;\n}\n\n.wrs_modal_dialogContainer.wrs_closed {\n visibility: hidden;\n display: none;\n opacity: 0;\n}\n\n/* Class that exists but hasn't got css properties defined\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_minimized.wrs_drag {} */\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_stack {\n position: fixed;\n bottom: 0;\n right: 0;\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_drag {\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_desktop.wrs_drag {\n box-shadow: rgba(0, 0, 0, 0.5) 0 2px 8px;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_ios,\n.wrs_modal_dialogContainer.wrs_modal_android {\n margin: 0px;\n position: fixed;\n height: auto;\n overflow: hidden;\n top: calc(env(safe-area-inset-top));\n right: calc(env(safe-area-inset-right));\n left: calc(env(safe-area-inset-left));\n bottom: 0px;\n transform: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n}\n\n/* Class that exists but hasn't got css properties defined\n.wrs_content_container.wrs_maximized {} */\n\n.wrs_content_container.wrs_minimized {\n display: none;\n}\n\n/* .wrs_editor {\n flex-grow: 1;\n} */\n\n.wrs_content_container.wrs_modal_desktop > div:first-child {\n flex-grow: 1;\n}\n\n.wrs_modal_wrapper.wrs_modal_android,\n.wrs_modal_wrapper.wrs_modal_ios {\n margin: 0.5rem !important;\n flex-grow: 0.98;\n display: flex;\n}\n\n.wrs_content_container.wrs_modal_ios,\n.wrs_content_container.wrs_modal_android {\n flex-grow: 0.98;\n display: flex;\n}\n\n.wrs_content_container.wrs_modal_desktop {\n width: 100%;\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n height: auto !important;\n}\n\n.wrs_modal_dialogContainer.wrs_modal_badStock {\n width: 100%;\n height: 280px;\n margin: 0 auto;\n border-width: 0;\n}\n\n.wrs_modal_wrapper.wrs_modal_badStock {\n width: 100%;\n height: 280px;\n margin: 0 auto;\n border-width: 0;\n}\n\n.wrs_noselect {\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.wrs_bottom_right_resizer {\n width: 10px;\n height: 10px;\n color: #778e9a;\n position: absolute;\n right: 4px;\n bottom: 8px;\n cursor: se-resize;\n -moz-user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.wrs_bottom_left_resizer {\n width: 15px;\n height: 15px;\n color: #778e9a;\n position: absolute;\n left: 0;\n top: 0;\n cursor: se-resize;\n}\n\n.wrs_modal_controls {\n height: 42px;\n line-height: normal;\n}\n\n.wrs_modal_links {\n margin: 10px auto;\n margin-bottom: 0;\n font-family: arial, sans-serif;\n padding: 6px;\n display: inline;\n float: right;\n text-align: right;\n}\n\n.wrs_modal_links > a {\n text-decoration: none;\n color: #778e9a;\n font-size: 16px;\n}\n\n.wrs_modal_button_cancel,\n.wrs_modal_button_cancel:hover,\n.wrs_modal_button_cancel:visited,\n.wrs_modal_button_cancel:active,\n.wrs_modal_button_cancel:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-left: 5px;\n margin-bottom: 0;\n cursor: pointer;\n font-family: arial, sans-serif;\n background-color: #ddd;\n height: 32px;\n}\n\n.wrs_modal_button_accept,\n.wrs_modal_button_accept:hover,\n.wrs_modal_button_accept:visited,\n.wrs_modal_button_accept:active,\n.wrs_modal_button_accept:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-right: 5px;\n margin-bottom: 0;\n color: #fff;\n background: #778e9a;\n cursor: pointer;\n font-family: arial, sans-serif;\n height: 32px;\n}\n\n.wrs_editor_vertical_bar {\n height: 20px;\n float: right;\n background: none;\n width: 20px;\n cursor: pointer;\n}\n\n.wrs_modal_buttons_container {\n display: inline;\n float: left;\n}\n\n.wrs_modal_buttons_container.wrs_modalDesktop {\n padding-left: 0;\n}\n\n.wrs_modal_buttons_container > button {\n line-height: normal;\n background-image: none;\n}\n\n.wrs_modal_wrapper {\n margin: 6px;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n}\n\n.wrs_modal_wrapper.wrs_modal_desktop.wrs_minimized {\n display: none;\n}\n\n.wrs_popupmessage_overlay_envolture {\n display: none;\n width: 100%;\n}\n\n.wrs_popupmessage_overlay {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n z-index: 4;\n cursor: pointer;\n}\n\n.wrs_popupmessage_panel {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n position: absolute;\n background: white;\n max-width: 500px;\n width: 75%;\n border-radius: 2px;\n padding: 20px;\n font-family: sans-serif;\n font-size: 15px;\n text-align: left;\n color: #2e2e2e;\n z-index: 5;\n max-height: 75%;\n overflow: auto;\n}\n\n.wrs_popupmessage_button_area {\n margin: 10px 0 0 0;\n}\n\n.wrs_panelContainer * {\n border: 0;\n}\n\n.wrs_button_cancel,\n.wrs_button_cancel:hover,\n.wrs_button_cancel:visited,\n.wrs_button_cancel:active,\n.wrs_button_cancel:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-left: 5px;\n margin-bottom: 0;\n cursor: pointer;\n font-family: arial, sans-serif;\n background-color: #ddd;\n background-image: none;\n height: 32px;\n}\n\n.wrs_button_accept,\n.wrs_button_accept:hover,\n.wrs_button_accept:visited,\n.wrs_button_accept:active,\n.wrs_button_accept:focus {\n min-width: 80px;\n font-size: 14px;\n border-radius: 3px;\n border: 1px solid #778e9a;\n padding: 6px 8px;\n margin: 10px auto;\n margin-right: 5px;\n margin-bottom: 0;\n color: #fff;\n background: #778e9a;\n cursor: pointer;\n font-family: arial, sans-serif;\n height: 32px;\n}\n\n.wrs_editor button {\n box-shadow: none;\n}\n\n.wrs_editor .wrs_header button {\n border-bottom: none;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.wrs_modal_overlay.wrs_modal_desktop.wrs_stack.wrs_overlay_active {\n display: block;\n}\n\n/* Fix selection in drupal style */\n.wrs_toolbar tr:focus {\n background: none;\n}\n\n.wrs_toolbar tr:hover {\n background: none;\n}\n\n/* End of fix drupal */\n.wrs_modal_rtl .wrs_modal_button_cancel {\n margin-right: 5px;\n margin-left: 0;\n}\n\n.wrs_modal_rtl .wrs_modal_button_accept {\n margin-right: 0;\n margin-left: 5px;\n}\n\n.wrs_modal_rtl .wrs_button_cancel {\n margin-right: 5px;\n margin-left: 0;\n}\n\n.wrs_modal_rtl .wrs_button_accept {\n margin-right: 0;\n margin-left: 5px;\n}\n\n/* The Offline Modal (background) */\n.wrs_modal_offline {\n display: none;\n /* Hidden by default */\n position: fixed;\n /* Stay in place */\n z-index: 2;\n /* Sit on top */\n padding-top: 150px;\n /* Location of the box */\n left: 0;\n top: 0;\n width: 100%;\n /* Full width */\n height: 100%;\n /* Full height */\n overflow: auto;\n /* Enable scroll if needed */\n background-color: rgb(0, 0, 0);\n /* Fallback color */\n background-color: rgba(0, 0, 0, 0.4);\n /* Black w/ opacity */\n margin: auto;\n}\n\n/* Modal Content */\n.wrs_modal_content_offline {\n margin: auto;\n padding: 16px;\n background: #fff7ed;\n border-radius: 6px;\n width: 517px;\n height: 100px;\n position: relative;\n}\n\n/* The Close Button */\n.wrs_modal_offline_close {\n color: #c2410c;\n font-size: 24px;\n font-weight: bold;\n left: 95.7%;\n right: 2.08%;\n top: 7.6%;\n bottom: 75%;\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 400;\n position: absolute;\n}\n\n/* The Warn Icon */\n.wrs_modal_offline_warn {\n position: absolute;\n left: 2.08%;\n right: 94%;\n top: 11.6%;\n bottom: 75%;\n font-size: 24px;\n color: #fb923c;\n background-repeat: no-repeat;\n}\n\n.wrs_modal_offline_text_container {\n position: absolute;\n left: 6.8%;\n right: 6.08%;\n top: 10.4%;\n bottom: 2%;\n}\n\n.wrs_modal_offline_text {\n font-family: \"Inter\";\n font-style: normal;\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n color: #c2410c;\n}\n\n.wrs_modal_offline_text_warn {\n height: 25px;\n font-family: \"Inter\";\n font-style: normal;\n font-size: 14px;\n line-height: 20px;\n font-weight: bold;\n color: #c2410c;\n}\n\n.wrs_modal_offline_close:hover,\n.wrs_modal_offline_close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n}\n","/* Replace the default suggestion marker border because it's doesn't span the entire widget. */\n.ck-widget.ck-math-widget.ck-suggestion-marker {\n border: none;\n\n &.ck-suggestion-marker-insertion {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-insertion-border);\n }\n\n &.ck-suggestion-marker--active {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-insertion-border-active);\n }\n }\n }\n\n &.ck-suggestion-marker-deletion {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-deletion-border);\n }\n\n &.ck-suggestion-marker--active {\n & .Wirisformula {\n border: 3px solid var(--ck-color-suggestion-marker-deletion-border-active);\n }\n }\n }\n}\n"]} \ No newline at end of file diff --git a/packages/ckeditor5/dist/browser/index.js b/packages/ckeditor5/dist/browser/index.js index c2383bfed..25ce83d20 100644 --- a/packages/ckeditor5/dist/browser/index.js +++ b/packages/ckeditor5/dist/browser/index.js @@ -3,7 +3,7 @@ import { ButtonView } from 'ckeditor5'; import { ClickObserver, XmlDataProcessor, ViewUpcastWriter, HtmlDataProcessor } from 'ckeditor5'; import { Widget, viewToModelPositionOutsideModelElement, toWidget } from 'ckeditor5'; -/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */ +/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */ const { entries, @@ -301,7 +301,7 @@ const _createHooksMap = function _createHooksMap() { function createDOMPurify() { let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); const DOMPurify = root => createDOMPurify(root); - DOMPurify.version = '3.3.1'; + DOMPurify.version = '3.3.3'; DOMPurify.removed = []; if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) { // Not running in a browser, provide a factory function @@ -596,7 +596,7 @@ function createDOMPurify() { /* Parse profile info */ if (USE_PROFILES) { ALLOWED_TAGS = addToSet({}, text); - ALLOWED_ATTR = []; + ALLOWED_ATTR = create(null); if (USE_PROFILES.html === true) { addToSet(ALLOWED_TAGS, html$1); addToSet(ALLOWED_ATTR, html); @@ -617,6 +617,13 @@ function createDOMPurify() { addToSet(ALLOWED_ATTR, xml); } } + /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */ + if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) { + EXTRA_ELEMENT_HANDLING.tagCheck = null; + } + if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) { + EXTRA_ELEMENT_HANDLING.attributeCheck = null; + } /* Merge configuration parameters */ if (cfg.ADD_TAGS) { if (typeof cfg.ADD_TAGS === 'function') { @@ -1014,6 +1021,10 @@ function createDOMPurify() { */ // eslint-disable-next-line complexity const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */ + if (FORBID_ATTR[lcName]) { + return false; + } /* Make sure attribute cannot clobber */ if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { return false; @@ -1106,7 +1117,7 @@ function createDOMPurify() { value = SANITIZE_NAMED_PROPS_PREFIX + value; } /* Work around a security issue with comments inside attributes */ - if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) { + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) { _removeAttribute(name, currentNode); continue; } @@ -11608,13 +11619,14 @@ delete Array.prototype.__class__; // @codingStandardsIgnoreEnd const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition); const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition); // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility). - // Use explicit undefined check to allow empty LaTeX strings. + // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX. const latex = acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex ? acceptedLatex : standardResult?.latex; + // Do not continue if no LaTeX found by either method. + // This is necessary since both parameters can be independently undefined in some edge cases. if (latex === undefined && acceptedLatex === undefined) { return; } // Verify caret is inside LaTeX block for track changes edge cases. - // Use explicit undefined check to allow empty LaTeX strings. if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) { return; } @@ -11624,7 +11636,6 @@ delete Array.prototype.__class__; // @codingStandardsIgnoreEnd } isCaretInsideLatexBlock(textNode, caretPosition = 0) { // If LaTeX is found, the caret is inside one. - // Use explicit undefined check to allow empty LaTeX strings. return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined; } /** @@ -11793,7 +11804,7 @@ var mathIcon = "\n\n\n\n\n\n"; -var version = "8.15.1"; +var version = "8.15.2"; var packageInfo = { version: version}; diff --git a/packages/ckeditor5/dist/browser/index.js.map b/packages/ckeditor5/dist/browser/index.js.map index 18f0b5961..40cb2e792 100644 --- a/packages/ckeditor5/dist/browser/index.js.map +++ b/packages/ckeditor5/dist/browser/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../../devkit/src/constants.js","../../../devkit/src/mathml.js","../../../devkit/src/configuration.js","../../../devkit/src/textcache.js","../../../devkit/src/listeners.js","../../../devkit/src/serviceprovider.js","../../../devkit/src/latex.js","../../../devkit/src/stringmanager.js","../../../devkit/src/util.js","../../../devkit/src/image.js","../../../devkit/src/accessibility.js","../../../devkit/src/parser.js","../../../devkit/src/editorlistener.js","../../../devkit/telemeter-wasm/telemeter_wasm.js","../../../devkit/src/telemeter.js","../../../devkit/src/contentmanager.js","../../../devkit/src/customeditors.js","../../../devkit/src/jsvariables.js","../../../devkit/src/event.js","../../../devkit/src/popupmessage.js","../../../devkit/src/focusprotection.js","../../../devkit/src/modal.js","../../../devkit/src/polyfills.js","../../../devkit/src/core.src.js","../../../devkit/src/integrationmodel.js","../../../devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"«\",\n tagCloser: \"»\",\n doubleQuote: \"¨\",\n realDoubleQuote: \""\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}${content}${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}>${content}`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}${mathmlContent}${content}`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = ``;\n const closeAnnotationTag = \"\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"\\s*?()?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '' or ''.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape or ''.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // .\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"\").join(\"\").split(\"\").join(\"\");\n\n objectCode = objectCode\n .split(\"\").join(\"
\").split(\"\").join(\"
\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += ``;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\").split('\"').join(\""\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /\\/;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n // Readd old annotation content.\n return html.replace(annotationRegex, annotation);\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/( 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = ``;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n *

\n   * MathML code: Image containing the corresponding MathML formulas.\n   * MathML code with LaTeX annotation : LaTeX string.\n   * 
\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType.
\n * By default this method converts the formula images and LaTeX strings in MathML.
\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `[]`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = ``;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"×\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType.

Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Use explicit undefined check to allow empty LaTeX strings.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n // Use explicit undefined check to allow empty LaTeX strings.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n // Use explicit undefined check to allow empty LaTeX strings.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","fromEntries","getAttributes","modelElementNew","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","createPositionAfter","setSelection","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","_focusElement","_wirisProperties","handleLatexInsertion","handleMathmlInsertion","replaceLatexWithNodes","replaceLatexUsingModelSearch","toViewElement","viewToDom","getCleanSelectionAttributes","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","latexBoundaries","convertAcceptedOffsetsToModelRange","acceptedTextOffset","isDeleted","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","part","finalEndIndex","finalEndOffset","startPart","endPart","createPositionAt","Node","TEXT_NODE","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","standardResult","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","parentTag","findLatexContainerElement","MAX_DEPTH","openDelim","caretPositionInNode","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","nextSearchIndex","closeDelim","child","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","renderUnsafeAttributes","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../node_modules/@wiris/mathtype-html-integration-devkit/src/constants.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/mathml.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/configuration.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/textcache.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/listeners.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/serviceprovider.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/latex.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/stringmanager.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/util.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/image.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/accessibility.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/parser.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/editorlistener.js","../../node_modules/@wiris/mathtype-html-integration-devkit/telemeter-wasm/telemeter_wasm.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/telemeter.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/contentmanager.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/customeditors.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/jsvariables.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/event.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/popupmessage.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/focusprotection.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/modal.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/polyfills.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/core.src.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/integrationmodel.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */\n if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n }\n if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"«\",\n tagCloser: \"»\",\n doubleQuote: \"¨\",\n realDoubleQuote: \""\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}${content}${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}>${content}`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}${mathmlContent}${content}`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = ``;\n const closeAnnotationTag = \"\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"\\s*?()?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '' or ''.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape or ''.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // .\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"\").join(\"\").split(\"\").join(\"\");\n\n objectCode = objectCode\n .split(\"\").join(\"
\").split(\"\").join(\"
\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += ``;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\").split('\"').join(\""\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /\\/;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n // Readd old annotation content.\n return html.replace(annotationRegex, annotation);\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/( 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = ``;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n *
\n   * MathML code: Image containing the corresponding MathML formulas.\n   * MathML code with LaTeX annotation : LaTeX string.\n   * 
\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType.
\n * By default this method converts the formula images and LaTeX strings in MathML.
\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `[]`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = ``;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"×\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType.

Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n // Do not continue if no LaTeX found by either method.\n // This is necessary since both parameters can be independently undefined in some edge cases.\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","fromEntries","getAttributes","modelElementNew","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","createPositionAfter","setSelection","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","_focusElement","_wirisProperties","handleLatexInsertion","handleMathmlInsertion","replaceLatexWithNodes","replaceLatexUsingModelSearch","toViewElement","viewToDom","getCleanSelectionAttributes","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","latexBoundaries","convertAcceptedOffsetsToModelRange","acceptedTextOffset","isDeleted","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","part","finalEndIndex","finalEndOffset","startPart","endPart","createPositionAt","Node","TEXT_NODE","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","standardResult","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","parentTag","findLatexContainerElement","MAX_DEPTH","openDelim","caretPositionInNode","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","nextSearchIndex","closeDelim","child","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","renderUnsafeAttributes","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]} \ No newline at end of file diff --git a/packages/ckeditor5/dist/browser/index.umd.js b/packages/ckeditor5/dist/browser/index.umd.js index 82061d639..da3119df0 100644 --- a/packages/ckeditor5/dist/browser/index.umd.js +++ b/packages/ckeditor5/dist/browser/index.umd.js @@ -5,7 +5,7 @@ })(this, (function (exports, ckeditor5) { 'use strict'; var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null; - /*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */ + /*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */ const { entries, @@ -303,7 +303,7 @@ function createDOMPurify() { let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal(); const DOMPurify = root => createDOMPurify(root); - DOMPurify.version = '3.3.1'; + DOMPurify.version = '3.3.3'; DOMPurify.removed = []; if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) { // Not running in a browser, provide a factory function @@ -598,7 +598,7 @@ /* Parse profile info */ if (USE_PROFILES) { ALLOWED_TAGS = addToSet({}, text); - ALLOWED_ATTR = []; + ALLOWED_ATTR = create(null); if (USE_PROFILES.html === true) { addToSet(ALLOWED_TAGS, html$1); addToSet(ALLOWED_ATTR, html); @@ -619,6 +619,13 @@ addToSet(ALLOWED_ATTR, xml); } } + /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */ + if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) { + EXTRA_ELEMENT_HANDLING.tagCheck = null; + } + if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) { + EXTRA_ELEMENT_HANDLING.attributeCheck = null; + } /* Merge configuration parameters */ if (cfg.ADD_TAGS) { if (typeof cfg.ADD_TAGS === 'function') { @@ -1016,6 +1023,10 @@ */ // eslint-disable-next-line complexity const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) { + /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */ + if (FORBID_ATTR[lcName]) { + return false; + } /* Make sure attribute cannot clobber */ if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) { return false; @@ -1108,7 +1119,7 @@ value = SANITIZE_NAMED_PROPS_PREFIX + value; } /* Work around a security issue with comments inside attributes */ - if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, value)) { + if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) { _removeAttribute(name, currentNode); continue; } @@ -11610,13 +11621,14 @@ const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition); const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition); // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility). - // Use explicit undefined check to allow empty LaTeX strings. + // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX. const latex = acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex ? acceptedLatex : standardResult?.latex; + // Do not continue if no LaTeX found by either method. + // This is necessary since both parameters can be independently undefined in some edge cases. if (latex === undefined && acceptedLatex === undefined) { return; } // Verify caret is inside LaTeX block for track changes edge cases. - // Use explicit undefined check to allow empty LaTeX strings. if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) { return; } @@ -11626,7 +11638,6 @@ } isCaretInsideLatexBlock(textNode, caretPosition = 0) { // If LaTeX is found, the caret is inside one. - // Use explicit undefined check to allow empty LaTeX strings. return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined; } /** @@ -11795,7 +11806,7 @@ var chemIcon = "\n\n\n\n\n\n"; - var version = "8.15.1"; + var version = "8.15.2"; var packageInfo = { version: version}; diff --git a/packages/ckeditor5/dist/browser/index.umd.js.map b/packages/ckeditor5/dist/browser/index.umd.js.map index 2aa10de23..b7d00d664 100644 --- a/packages/ckeditor5/dist/browser/index.umd.js.map +++ b/packages/ckeditor5/dist/browser/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../../devkit/src/constants.js","../../../devkit/src/mathml.js","../../../devkit/src/configuration.js","../../../devkit/src/textcache.js","../../../devkit/src/listeners.js","../../../devkit/src/serviceprovider.js","../../../devkit/src/latex.js","../../../devkit/src/stringmanager.js","../../../devkit/src/util.js","../../../devkit/src/image.js","../../../devkit/src/accessibility.js","../../../devkit/src/parser.js","../../../devkit/src/editorlistener.js","../../../devkit/telemeter-wasm/telemeter_wasm.js","../../../devkit/src/telemeter.js","../../../devkit/src/contentmanager.js","../../../devkit/src/customeditors.js","../../../devkit/src/jsvariables.js","../../../devkit/src/event.js","../../../devkit/src/popupmessage.js","../../../devkit/src/focusprotection.js","../../../devkit/src/modal.js","../../../devkit/src/polyfills.js","../../../devkit/src/core.src.js","../../../devkit/src/integrationmodel.js","../../../devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"«\",\n tagCloser: \"»\",\n doubleQuote: \"¨\",\n realDoubleQuote: \""\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}${content}${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}>${content}`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}${mathmlContent}${content}`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = ``;\n const closeAnnotationTag = \"\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"\\s*?()?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '' or ''.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape or ''.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // .\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"\").join(\"\").split(\"\").join(\"\");\n\n objectCode = objectCode\n .split(\"\").join(\"
\").split(\"\").join(\"
\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += ``;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\").split('\"').join(\""\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /\\/;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n // Readd old annotation content.\n return html.replace(annotationRegex, annotation);\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/( 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = ``;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n *
\n   * MathML code: Image containing the corresponding MathML formulas.\n   * MathML code with LaTeX annotation : LaTeX string.\n   * 
\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType.
\n * By default this method converts the formula images and LaTeX strings in MathML.
\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `[]`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = ``;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"×\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType.

Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Use explicit undefined check to allow empty LaTeX strings.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n // Use explicit undefined check to allow empty LaTeX strings.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n // Use explicit undefined check to allow empty LaTeX strings.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","fromEntries","getAttributes","modelElementNew","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","createPositionAfter","setSelection","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","_focusElement","_wirisProperties","handleLatexInsertion","handleMathmlInsertion","replaceLatexWithNodes","replaceLatexUsingModelSearch","toViewElement","viewToDom","getCleanSelectionAttributes","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","latexBoundaries","convertAcceptedOffsetsToModelRange","acceptedTextOffset","isDeleted","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","part","finalEndIndex","finalEndOffset","startPart","endPart","createPositionAt","Node","TEXT_NODE","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","standardResult","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","parentTag","findLatexContainerElement","MAX_DEPTH","openDelim","caretPositionInNode","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","nextSearchIndex","closeDelim","child","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","renderUnsafeAttributes","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../node_modules/@wiris/mathtype-html-integration-devkit/src/constants.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/mathml.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/configuration.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/textcache.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/listeners.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/serviceprovider.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/latex.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/stringmanager.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/util.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/image.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/accessibility.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/parser.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/editorlistener.js","../../node_modules/@wiris/mathtype-html-integration-devkit/telemeter-wasm/telemeter_wasm.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/telemeter.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/contentmanager.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/customeditors.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/jsvariables.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/event.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/popupmessage.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/focusprotection.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/modal.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/polyfills.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/core.src.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/integrationmodel.js","../../node_modules/@wiris/mathtype-html-integration-devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.3.3 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.3/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.3';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Prevent function-based ADD_ATTR / ADD_TAGS from leaking across calls */\n if (!objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n }\n if (!objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"«\",\n tagCloser: \"»\",\n doubleQuote: \"¨\",\n realDoubleQuote: \""\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}${content}${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}>${content}`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}${mathmlContent}${content}`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = ``;\n const closeAnnotationTag = \"\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"\\s*?()?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '' or ''.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape or ''.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // .\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"\").join(\"\").split(\"\").join(\"\");\n\n objectCode = objectCode\n .split(\"\").join(\"
\").split(\"\").join(\"
\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += ``;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\").split('\"').join(\""\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /\\/;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n // Readd old annotation content.\n return html.replace(annotationRegex, annotation);\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/( 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = ``;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n *
\n   * MathML code: Image containing the corresponding MathML formulas.\n   * MathML code with LaTeX annotation : LaTeX string.\n   * 
\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType.
\n * By default this method converts the formula images and LaTeX strings in MathML.
\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `[]`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = ``;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"×\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType.

Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&\").split(\"<\").join(\"<\").split(\">\").join(\">\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"
\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n // Do not continue if no LaTeX found by either method.\n // This is necessary since both parameters can be independently undefined in some edge cases.\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","fromEntries","getAttributes","modelElementNew","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","createPositionAfter","setSelection","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","_focusElement","_wirisProperties","handleLatexInsertion","handleMathmlInsertion","replaceLatexWithNodes","replaceLatexUsingModelSearch","toViewElement","viewToDom","getCleanSelectionAttributes","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","latexBoundaries","convertAcceptedOffsetsToModelRange","acceptedTextOffset","isDeleted","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","part","finalEndIndex","finalEndOffset","startPart","endPart","createPositionAt","Node","TEXT_NODE","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","standardResult","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","parentTag","findLatexContainerElement","MAX_DEPTH","openDelim","caretPositionInNode","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","nextSearchIndex","closeDelim","child","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","renderUnsafeAttributes","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]} \ No newline at end of file diff --git a/packages/ckeditor5/dist/index.js b/packages/ckeditor5/dist/index.js index 4b76c5cfa..d60e3862f 100644 --- a/packages/ckeditor5/dist/index.js +++ b/packages/ckeditor5/dist/index.js @@ -445,13 +445,14 @@ import Telemeter from '@wiris/mathtype-html-integration-devkit/src/telemeter.js' const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition); const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition); // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility). - // Use explicit undefined check to allow empty LaTeX strings. + // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX. const latex = acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex ? acceptedLatex : standardResult?.latex; + // Do not continue if no LaTeX found by either method. + // This is necessary since both parameters can be independently undefined in some edge cases. if (latex === undefined && acceptedLatex === undefined) { return; } // Verify caret is inside LaTeX block for track changes edge cases. - // Use explicit undefined check to allow empty LaTeX strings. if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) { return; } @@ -461,7 +462,6 @@ import Telemeter from '@wiris/mathtype-html-integration-devkit/src/telemeter.js' } isCaretInsideLatexBlock(textNode, caretPosition = 0) { // If LaTeX is found, the caret is inside one. - // Use explicit undefined check to allow empty LaTeX strings. return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined; } /** @@ -630,7 +630,7 @@ var mathIcon = "\n\n\n\n\n\n"; -var version = "8.15.1"; +var version = "8.15.2"; var packageInfo = { version: version}; diff --git a/packages/ckeditor5/dist/index.js.map b/packages/ckeditor5/dist/index.js.map index 6f10084ce..c143f49ee 100644 --- a/packages/ckeditor5/dist/index.js.map +++ b/packages/ckeditor5/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../src/integration.js","../src/commands.js","../src/plugin.js"],"sourcesContent":["import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Use explicit undefined check to allow empty LaTeX strings.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n // Use explicit undefined check to allow empty LaTeX strings.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n // Use explicit undefined check to allow empty LaTeX strings.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["CKEditor5Integration","IntegrationModel","ckeditorIntegrationModelProperties","editor","editorObject","config","get","integrationParameters","integrationFolderName","getLanguage","editorParameters","language","e","languageObject","Object","prototype","hasOwnProperty","call","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","setTarget","addEvents","doubleClickHandler","element","event","core","editionProperties","dbclick","isReadOnly","nodeName","toLowerCase","Util","containsClass","Configuration","stopPropagation","returnValue","getCustomEditors","disable","customEditorAttr","getAttribute","enable","temporalImage","openExistingFormulaEditor","getCorePath","callbackFunction","openNewFormulaEditor","selection","editing","view","document","WirisPlugin","currentInstance","insertMathml","mathml","model","change","writer","isNewElement","getCore","attributes","fromEntries","getAttributes","modelElementNew","createElement","formula","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","position","createPositionAfter","setSelection","isCollapsed","range","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","parentElement","createRangeIn","descendants","Array","from","getItems","node","viewElementData","data","nodeType","replaceAll","String","fromCharCode","is","replace","textNode","insertFormula","_focusElement","windowTarget","_wirisProperties","returnObject","mathmlOrigin","editMode","handleLatexInsertion","handleMathmlInsertion","payload","MathML","safeXmlDecode","undefined","elapsed_time","Date","now","editionStartTime","toolbar","modalDialog","contentManager","size","length","mathml_origin","Telemeter","telemeter","track","error","console","latex","Latex","getLatexFromMathML","createTextNode","latexRange","startNode","startContainer","endNode","endContainer","replaceLatexWithNodes","replaceLatexUsingModelSearch","dataset","toViewElement","viewToDom","toString","includes","cancelAction","getCleanSelectionAttributes","key","value","startsWith","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","text","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","startIndex","indexOf","latexBoundaries","start","end","convertAcceptedOffsetsToModelRange","paragraph","acceptedTextOffset","item","isDeleted","push","startOffset","endOffset","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","i","part","finalEndIndex","finalEndOffset","startPart","endPart","createRange","createPositionAt","startPosition","endPosition","Node","TEXT_NODE","previousSibling","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","substring","getMathmlFromTextNode","caretPosition","standardResult","getLatexFromTextNode","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","getMathMLFromLatex","parentTag","tagName","latexResult","setStart","setEnd","findLatexContainerElement","MAX_DEPTH","textContent","openDelim","caretPositionInNode","container","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","classList","contains","nextSearchIndex","closeDelim","childNodes","map","child","join","notifyWindowClosed","focus","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","name","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","init","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","destroy","integrationProperties","environment","editorVersion","version","packageInfo","serviceProviderProperties","URI","server","target","scriptName","managesLanguage","listeners","fire","listenTo","evt","domEvent","detail","domTarget","stop","priority","commands","add","componentFactory","ButtonView","bind","to","set","label","StringManager","icon","mathIcon","tooltip","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","classes","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","test","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","htmlSanitize","modelNode","Parser","initParse","splitResult","splitToAllowedParent","modelCursor","insert","consume","parts","getSplitParts","cursorParent","getClassNames","next","attrName","className","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","class","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","lang","imgHtml","setAttribute","createEmptyElement","renderUnsafeAttributes","createDataString","clone","sourceNode","Exception","endParseSaveMode","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","localStorage","setItem","setTimeout","output","return","isGeneratingPreview","getItem","attributesToPreserve","previewOutput","match","trackChangesAttrs","forEach","prefix","regex","RegExp","attrMatch","exec","spanAttrs","removeSafeXMLSemantics","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","args","modifiedData","regexp","formulas","safexml","decodeXML","code","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","decodedLatex","htmlEntitiesDecode","removeAnnotation","window","Core","Image","Listeners","plugins","has","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../src/integration.js","../src/commands.js","../src/plugin.js"],"sourcesContent":["import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n // Do not continue if no LaTeX found by either method.\n // This is necessary since both parameters can be independently undefined in some edge cases.\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the wrapping the formula and then for the inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`${formula}`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"<\"').replaceAll('\">\"', '\">\"').replaceAll(\"><<\", \"><<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A element with a formula attribute set to the given formula, or\n - If the original had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(``);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: foo[]\n // after: foo[]\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"<\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element () to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `${match}`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(]*>)|()/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\" {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["CKEditor5Integration","IntegrationModel","ckeditorIntegrationModelProperties","editor","editorObject","config","get","integrationParameters","integrationFolderName","getLanguage","editorParameters","language","e","languageObject","Object","prototype","hasOwnProperty","call","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","setTarget","addEvents","doubleClickHandler","element","event","core","editionProperties","dbclick","isReadOnly","nodeName","toLowerCase","Util","containsClass","Configuration","stopPropagation","returnValue","getCustomEditors","disable","customEditorAttr","getAttribute","enable","temporalImage","openExistingFormulaEditor","getCorePath","callbackFunction","openNewFormulaEditor","selection","editing","view","document","WirisPlugin","currentInstance","insertMathml","mathml","model","change","writer","isNewElement","getCore","attributes","fromEntries","getAttributes","modelElementNew","createElement","formula","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","position","createPositionAfter","setSelection","isCollapsed","range","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","parentElement","createRangeIn","descendants","Array","from","getItems","node","viewElementData","data","nodeType","replaceAll","String","fromCharCode","is","replace","textNode","insertFormula","_focusElement","windowTarget","_wirisProperties","returnObject","mathmlOrigin","editMode","handleLatexInsertion","handleMathmlInsertion","payload","MathML","safeXmlDecode","undefined","elapsed_time","Date","now","editionStartTime","toolbar","modalDialog","contentManager","size","length","mathml_origin","Telemeter","telemeter","track","error","console","latex","Latex","getLatexFromMathML","createTextNode","latexRange","startNode","startContainer","endNode","endContainer","replaceLatexWithNodes","replaceLatexUsingModelSearch","dataset","toViewElement","viewToDom","toString","includes","cancelAction","getCleanSelectionAttributes","key","value","startsWith","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","text","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","startIndex","indexOf","latexBoundaries","start","end","convertAcceptedOffsetsToModelRange","paragraph","acceptedTextOffset","item","isDeleted","push","startOffset","endOffset","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","i","part","finalEndIndex","finalEndOffset","startPart","endPart","createRange","createPositionAt","startPosition","endPosition","Node","TEXT_NODE","previousSibling","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","substring","getMathmlFromTextNode","caretPosition","standardResult","getLatexFromTextNode","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","getMathMLFromLatex","parentTag","tagName","latexResult","setStart","setEnd","findLatexContainerElement","MAX_DEPTH","textContent","openDelim","caretPositionInNode","container","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","classList","contains","nextSearchIndex","closeDelim","childNodes","map","child","join","notifyWindowClosed","focus","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","name","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","init","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","destroy","integrationProperties","environment","editorVersion","version","packageInfo","serviceProviderProperties","URI","server","target","scriptName","managesLanguage","listeners","fire","listenTo","evt","domEvent","detail","domTarget","stop","priority","commands","add","componentFactory","ButtonView","bind","to","set","label","StringManager","icon","mathIcon","tooltip","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","classes","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","test","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","htmlSanitize","modelNode","Parser","initParse","splitResult","splitToAllowedParent","modelCursor","insert","consume","parts","getSplitParts","cursorParent","getClassNames","next","attrName","className","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","class","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","lang","imgHtml","setAttribute","createEmptyElement","renderUnsafeAttributes","createDataString","clone","sourceNode","Exception","endParseSaveMode","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","localStorage","setItem","setTimeout","output","return","isGeneratingPreview","getItem","attributesToPreserve","previewOutput","match","trackChangesAttrs","forEach","prefix","regex","RegExp","attrMatch","exec","spanAttrs","removeSafeXMLSemantics","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","args","modifiedData","regexp","formulas","safexml","decodeXML","code","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","decodedLatex","htmlEntitiesDecode","removeAnnotation","window","Core","Image","Listeners","plugins","has","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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"} \ No newline at end of file From 2981c06179febebe22b31683841166a317dde4f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20Bar=C3=B3n?= Date: Mon, 11 May 2026 16:25:31 +0200 Subject: [PATCH 5/6] Test/add test coverage (#1147) * test: add corner test cases for edit and insert * test: remove duplicated alignment test --- ...ment-ckeditor4-ChemType-chromium-linux.png | Bin 0 -> 620 bytes ...nment-ckeditor4-ChemType-firefox-linux.png | Bin 0 -> 850 bytes ...gnment-ckeditor4-ChemType-webkit-linux.png | Bin 0 -> 642 bytes ...ment-ckeditor4-MathType-chromium-linux.png | Bin 0 -> 620 bytes ...nment-ckeditor4-MathType-firefox-linux.png | Bin 0 -> 850 bytes ...gnment-ckeditor4-MathType-webkit-linux.png | Bin 0 -> 642 bytes ...ment-ckeditor5-ChemType-chromium-linux.png | Bin 0 -> 3363 bytes ...nment-ckeditor5-ChemType-firefox-linux.png | Bin 0 -> 6783 bytes ...gnment-ckeditor5-ChemType-webkit-linux.png | Bin 0 -> 4042 bytes ...ment-ckeditor5-MathType-chromium-linux.png | Bin 0 -> 3363 bytes ...nment-ckeditor5-MathType-firefox-linux.png | Bin 0 -> 6783 bytes ...gnment-ckeditor5-MathType-webkit-linux.png | Bin 0 -> 4042 bytes ...ignment-froala-ChemType-chromium-linux.png | Bin 0 -> 822 bytes ...lignment-froala-ChemType-firefox-linux.png | Bin 0 -> 1385 bytes ...alignment-froala-ChemType-webkit-linux.png | Bin 0 -> 681 bytes ...ignment-froala-MathType-chromium-linux.png | Bin 0 -> 822 bytes ...lignment-froala-MathType-firefox-linux.png | Bin 0 -> 1385 bytes ...alignment-froala-MathType-webkit-linux.png | Bin 0 -> 681 bytes ...gnment-generic-ChemType-chromium-linux.png | Bin 0 -> 676 bytes ...ignment-generic-ChemType-firefox-linux.png | Bin 0 -> 1411 bytes ...lignment-generic-ChemType-webkit-linux.png | Bin 0 -> 782 bytes ...gnment-generic-MathType-chromium-linux.png | Bin 0 -> 676 bytes ...ignment-generic-MathType-firefox-linux.png | Bin 0 -> 1411 bytes ...lignment-generic-MathType-webkit-linux.png | Bin 0 -> 782 bytes ...nment-tinymce5-ChemType-chromium-linux.png | Bin 0 -> 442 bytes ...gnment-tinymce5-ChemType-firefox-linux.png | Bin 0 -> 742 bytes ...ignment-tinymce5-ChemType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce5-MathType-chromium-linux.png | Bin 0 -> 442 bytes ...gnment-tinymce5-MathType-firefox-linux.png | Bin 0 -> 742 bytes ...ignment-tinymce5-MathType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce6-ChemType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce6-ChemType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce6-ChemType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce6-MathType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce6-MathType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce6-MathType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce7-ChemType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce7-ChemType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce7-ChemType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce7-MathType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce7-MathType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce7-MathType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce8-ChemType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce8-ChemType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce8-ChemType-webkit-linux.png | Bin 0 -> 489 bytes ...nment-tinymce8-MathType-chromium-linux.png | Bin 0 -> 444 bytes ...gnment-tinymce8-MathType-firefox-linux.png | Bin 0 -> 745 bytes ...ignment-tinymce8-MathType-webkit-linux.png | Bin 0 -> 489 bytes tests/e2e/page-objects/base_editor.ts | 11 ++++ tests/e2e/playwright.config.ts | 1 + .../e2e/tests/edit/edit_corner_cases.spec.ts | 60 ++++++++++++++++-- tests/e2e/tests/editor/editor.spec.ts | 19 ------ .../tests/insert/insert_corner_cases.spec.ts | 25 ++++++++ 53 files changed, 92 insertions(+), 24 deletions(-) create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-MathType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-ChemType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-ChemType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-ChemType-webkit-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-MathType-chromium-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-MathType-firefox-linux.png create mode 100644 tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-MathType-webkit-linux.png diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb241ceefada50670e5071e2004e01bba7efeea GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0y~yU^)h5i*YakNuSkcp8y3EJzX3_D(1YoYo8&UDADjy zU#Qr;LZBmIwyL>kJByNLhH>g8tCUU7w>0%iConH`y`-~OFI44VLd={!ntEbQk-Ip| zGiABh3s*$D^hhePJStf3Y;&<Y4>~~+j^S-@RWEn+uEojLpb zYxv)f88;+5NXSONL7F&&|uuzWZX;$rcgIBCA!ajQ>aa zTfCQg`l-)jX@=)3zc|Y#lk(xU|htBaxG*@`EN@b3I`*N>4v5^+@TlgUElYzm3p+>d!?&dYkjk;CUdmC*x=vFr%Jy)$ z76XIDU8lwU`dgN+y&k_e@XfEgOZoZd?XfM<+W6;6g!kO7@1E=B?y;<5e)(yy?dB=} zuB{Wxx2t}CR{3P~c72=rAD=dxTW#NPbH($=Kudk*3fP;oGcZhk91Bbu0t}PT9pZry qeqarB-~a#Ny#ba$1{)}`Ff+siwEul`y7VPbgu&C*&t;ucLK6UJrU1nN literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-ChemType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..96e25165c2efb1cea3f7055cad9fe0e6c7e8ba15 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0y~yU^)h5i*m35N!M5nSq27XNlzEYkczmscQnGhjc!N7O_G0DC$%0-+8~uGsJT$Z)hI&ar??2$WFyU)JYAbKRGU*aJg7adxl8^1 z?`yaB=6yf;JZF3K^FQaFSGMIZzr1(p_xtV^90Cds4GfG-EF6Cd8Ydb2duV;&tuRdJ z3Dcn)ZZM93Lcm&sy4u>_n>TMp#KiPmy?RwbUcTKMq8n(8f@Wjae2M#a?;ic|q2SK_ z`^T?d4b{=t=YG6oTSFoz%pRl0uEQ0nsj7bd{>jzV*0W~MPR`8ql(-$u0&~hq&YHH5 zXV3cj`1!eohligzb4DcZ$=kQO+qP{>DlRtu_U+rErAwcF{(bxQ?Tp;qv-ajDCVz~3 z`uqEn>+0;()YKO3-@m`0_xbbZGiJ~3e*OCOjhi<;`7RxRo1e-3B(bKTKmaIp@!~~6 zUtix=gSwiUo|i9QX5{4bEMC0$#@)NRErmbd{@3lpd*ddGRsJ|aR2rLcK6cZC`DV!92@&eSg zjayi`-b>`?K+F&Xk{ASVm z_k8zz>9aFo?qcD%;^!c7{oJjouoz}}6#*3Z_(-A`rfoqP)1e(@*VehfQd7Wjpg^Da r@eH_cwh9Xz+q$_-74CQ|u^+6N-sui~&kAJvbFxoC)KmS~84^e(w%Te9}@!K0Tp{^eNe zB@-iKUGjcS$qV-vaWY048jfD28m`)^El>EwSv=Rr&8pfv{r7)g&wJB9&)aN!STRh* zbt2HdhW|0IcAEnk41ahzKu&A8Cew4+K*Zb_$o`-oq_-Rov$Wp(N1&6!3s&*-zW zIxdJ?zx?oF=bh`MSKq&XfAz(T7k~cPoU8;naOx73m!Ccbg@=b59Xlem?DEQ4XP15Z z{(U-I{OxU_D?{vLgj^@e9KZPb_3E74eOK47Uw<`gYslKLa9ehu?g<`VlTJO|Stt>4s9z57sbHD$p?&)789jTF4c6MQF!=i8P-@SWvcQ^Ojw{O=Lf#OSH z;}jK9F4m=&UoPdHmbx-RM@{a_MXBiM=u=ONI@5s)7*;>B2ZtdfBvqOWLApF|dF(oH z_;9mWck7b*|E=cvsO{RjcdE)%FV)-}6*)$rlA4`IR&KqUxBB+meS5FJ{<{77@#F4K zKmS~!43uloPj?Lzsr{}7V!uBon+&8KSiq#vK?xvdf{OvjaVnnn3>>#6C539-j{|ZU NJYD@<);T3K0RYXv5e)zU literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb241ceefada50670e5071e2004e01bba7efeea GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0y~yU^)h5i*YakNuSkcp8y3EJzX3_D(1YoYo8&UDADjy zU#Qr;LZBmIwyL>kJByNLhH>g8tCUU7w>0%iConH`y`-~OFI44VLd={!ntEbQk-Ip| zGiABh3s*$D^hhePJStf3Y;&<Y4>~~+j^S-@RWEn+uEojLpb zYxv)f88;+5NXSONL7F&&|uuzWZX;$rcgIBCA!ajQ>aa zTfCQg`l-)jX@=)3zc|Y#lk(xU|htBaxG*@`EN@b3I`*N>4v5^+@TlgUElYzm3p+>d!?&dYkjk;CUdmC*x=vFr%Jy)$ z76XIDU8lwU`dgN+y&k_e@XfEgOZoZd?XfM<+W6;6g!kO7@1E=B?y;<5e)(yy?dB=} zuB{Wxx2t}CR{3P~c72=rAD=dxTW#NPbH($=Kudk*3fP;oGcZhk91Bbu0t}PT9pZry qeqarB-~a#Ny#ba$1{)}`Ff+siwEul`y7VPbgu&C*&t;ucLK6UJrU1nN literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor4-MathType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..96e25165c2efb1cea3f7055cad9fe0e6c7e8ba15 GIT binary patch literal 850 zcmeAS@N?(olHy`uVBq!ia0y~yU^)h5i*m35N!M5nSq27XNlzEYkczmscQnGhjc!N7O_G0DC$%0-+8~uGsJT$Z)hI&ar??2$WFyU)JYAbKRGU*aJg7adxl8^1 z?`yaB=6yf;JZF3K^FQaFSGMIZzr1(p_xtV^90Cds4GfG-EF6Cd8Ydb2duV;&tuRdJ z3Dcn)ZZM93Lcm&sy4u>_n>TMp#KiPmy?RwbUcTKMq8n(8f@Wjae2M#a?;ic|q2SK_ z`^T?d4b{=t=YG6oTSFoz%pRl0uEQ0nsj7bd{>jzV*0W~MPR`8ql(-$u0&~hq&YHH5 zXV3cj`1!eohligzb4DcZ$=kQO+qP{>DlRtu_U+rErAwcF{(bxQ?Tp;qv-ajDCVz~3 z`uqEn>+0;()YKO3-@m`0_xbbZGiJ~3e*OCOjhi<;`7RxRo1e-3B(bKTKmaIp@!~~6 zUtix=gSwiUo|i9QX5{4bEMC0$#@)NRErmbd{@3lpd*ddGRsJ|aR2rLcK6cZC`DV!92@&eSg zjayi`-b>`?K+F&Xk{ASVm z_k8zz>9aFo?qcD%;^!c7{oJjouoz}}6#*3Z_(-A`rfoqP)1e(@*VehfQd7Wjpg^Da r@eH_cwh9Xz+q$_-74CQ|u^+6N-sui~&kAJvbFxoC)KmS~84^e(w%Te9}@!K0Tp{^eNe zB@-iKUGjcS$qV-vaWY048jfD28m`)^El>EwSv=Rr&8pfv{r7)g&wJB9&)aN!STRh* zbt2HdhW|0IcAEnk41ahzKu&A8Cew4+K*Zb_$o`-oq_-Rov$Wp(N1&6!3s&*-zW zIxdJ?zx?oF=bh`MSKq&XfAz(T7k~cPoU8;naOx73m!Ccbg@=b59Xlem?DEQ4XP15Z z{(U-I{OxU_D?{vLgj^@e9KZPb_3E74eOK47Uw<`gYslKLa9ehu?g<`VlTJO|Stt>4s9z57sbHD$p?&)789jTF4c6MQF!=i8P-@SWvcQ^Ojw{O=Lf#OSH z;}jK9F4m=&UoPdHmbx-RM@{a_MXBiM=u=ONI@5s)7*;>B2ZtdfBvqOWLApF|dF(oH z_;9mWck7b*|E=cvsO{RjcdE)%FV)-}6*)$rlA4`IR&KqUxBB+meS5FJ{<{77@#F4K zKmS~!43uloPj?Lzsr{}7V!uBon+&8KSiq#vK?xvdf{OvjaVnnn3>>#6C539-j{|ZU NJYD@<);T3K0RYXv5e)zU literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4586c7907480e35536ec528cc4b34df3e4ad8fb2 GIT binary patch literal 3363 zcmeHKX;+ii7Jk)MYY}OkTLgM5h|E@$K$u!5j0kuc8m5TKB!;0jKoAHxp;xR@#fXqV zN)gf!c#%O8AP^^{5D+v#5;B1p0%QO}NXP&wz3Z;~sUQ3SemQHevxl|zbDp!GwQrvE z_c8wb>(2oIFoqpF90&lb7gy}1&sMLTM>pMf1b_`}*x?_7Gw@PgZsL74=ILD5E3ci1 zLH47TmPV|$Ve91kq|u~(Z@%gANcc5I?ldwq^hthP!WF;zKYI?=wEku08TMV_&0;>dLdokrr$zloc5D7W#AI)vWKhw01|uIk&$o^{E+_(kYqQ0NoMStkIy-DI1l}rO z^+O!a_nt57AdyC+)zs81TCM{Ab6OETxy6pihQha{Z2~U2bM*QCf$1U~8D00lA>zSG zm7g3^A9$<=crDv%CjsE)u2kUC<7*p%FCGl60-kSz0^f%oTnBvSyW%^u-VFH0zI+XE z&FY_n$jWVMyA3-N!VrOh>Wu!y=Y2ujTPd}qJtSUgYE1Vv(%mwm1!zwSMV~u84ee@s z_7c~-8lW0eHbL_)R}|D`W%vje6-RKyqyF-Y4E{KO+~VQh0|K?ODvjX&^O*Mk8Ge*6 zpyQYu8xf)CKkBHTp!%=$gyThETRbmCajNjaHJ-r?4;-`93J{EkZY2iXztk;xxNb}yw%C>iKaImonqjoKJ zcd@dUXM~|1vZ4;Xj9$A;?i20^r)kP=I~n5>ZFXj6BxM=i-4)%|^{YJFtJwB=9cGf8 znX8-W3q4w}t0U({7ywYtBqz(C)gfpXS00~t0lapH^&u?yAgX)}`mitc5vPwhec<%{ zAgYj4JNZ_56yFss_&!HF-*Wc-{haDdj!90q3j_k^rHZ};M*Sg5t+Xe=-i{$C`X$nS zNhTH9VdsyI1#*2;mS(MsHhX2t>6E6%h3Fw{vg_)nep?QSFYAuym!mGeKYKn|{+35; zre{fR`pgJsr$p;5Jc)FJ|D1`kAh-V8Re;wZE+uMtsJHU1kc89F=Qz(;45xnGSf?9y z{%(k#8Jf7}5>8uJK6O{0_+p7!*%^YTXUC`{2BrT6Nu_Vm-zvrn66PSqyBbj_Si&4G z)~Zq05v=N+^IcIYD%10#vQHe|b9^GMkW8qUf7%{IFx2LI>m_KAVo;uB6`FZE7muXc zk|Mby!+5;g+caB9@%{MW=0s#SZDdY^Ve0y9cLfM&nn3xDjP$&JYou4{!pOwV0Ib6wUa$aA)xyvnekE0ru7o7ZG7<4JAl> zAu_Lll0Gv5iq>4)p23@X6J!=(&WPVPWr^S}a(v)=2_yqxA%?2!WyjnD!-Ne>MjRevU7OaZ)2>EjlEU!7=zS8teqVCCC|}23rtd#%-1| za#8&LL0GIylleL1Lj#eY`?vza)MjTLvPDmiKHFtbb?StserwyH&;Vl>@O(|UhgGq8 zyTrR+X)?iLnJg5<4X41w{u_vr#=<2c3fBuBpesuX6~SYv=oxKu$&vVzLyyzYI_;zQ+%9xf z)}ALy{e%zB7S-jhBIt!T7@#bhmLe*k8x%ibxVPHiekSJJ+{IZwVTrBj#zt@>Si4_b z-7M;6KX)$OISswnzdtukr&UglvauG}TTY=NV3yO(a5TZGbZ;LTBvg6dXi>*Vd8SgWGs*|2VA zbbFS8N?EjIDy?s8EZfd_1)QIjFg>>`2vnC5YHfSR`R@CQCrLsc|8co$X!+ULd){H$ z_3O%k`p8&j^F%gWUCfI?DbDOhwO@rrGlrEnLBZI~>#wW~8saI7vYP6skVp)yveEbe zOl_cR=Blx#tljO_T8JYL4HXJCM1tf*53*!gTHj-EZF{d5m^y%O5;+QBrZ!i&o)~fW0 zAd$!duK=I;ams?avWQ6BE%X&=zxXwQlh#3XW4bE`Mn3i4Q)=Uw_REAdD=r`XM-RDL zU@n(gm^(^k8EAWqmyjB>{?WT4c$M{QV-X|{X^j%Ux>q8k$H!4azwDa=Uk6nkVZ&hgim~?Z b9cK-2luwCPpq^h?xdC8D{11Z%Pha^9DRKc` literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ca67851482197a9c008379c68046e6b6082e94 GIT binary patch literal 6783 zcmeHM`CC%!7A7=@%Cx#Siw12pk5iMDnZl{G)A5v*O$vz(WH~1)jv!6eEwgi-Qd25J zDoq@6C`2ebT9RREk_m#>0TmS$5kz3$?J1={;Qn%-M}F83&)$1|-x}VvzO~+c>+qrd z2J>L^AP|Vbf#3EWg+QQk@V`n=2fTg=){2BcU@iyt{dz3IYmld(pMr^Ej>w8F`n_Eb zo_^|zdj92I*pr+?ehD=OFXrEZHCM#7J$?7QVyW@I1-{%Jhq;@rw>|w_kq2|VWYOXnu7P(71n=j7jB5F z^gPGE`nUAo%Mepsy-9z*;A^YbQLL;_zYe_wxFy6Gf{Rb@a>ANOSWza(WD>^4S{h6J zIE^om|lef28f1(F!4mHkfvXo>4CX3T0?nHIX&9{`V?e)5bfVe}8Wc=4;^@GO|3-wacT0 z^Rlcg_0it=)Q;--v^;9n>jkTKN2I@FNn)BPZZ@4Y2^KyNF1zS@rn&y)I)CClCP6t; z>&n2Z>XZ`_S9Z2zn*5IIWJdZnpVVqYc;&}zM_Q%ilLMyf{h#nIot1 z$$_Lwof#bHLia&E4+^*sj4e_E^s#8>sySx_yPm>se_S98al9xbz8=W^$i zuK;N9m~U)tY3L;PUJl2{EO!X^Z^cgz&Q<>+IU4?G+V{}o0<*bzK&@isdz56*#O{8N_AES4W20xyoy zkxt&sI1GNDPh?e3JQS$i&1Vv|Sjpz@+Uj4VA>lG%~Yp0c#m?)-51JX3;X0__Ij_7Kho|GF9?tOD=en%$`J3r|0Ye4K^OL zealqeG~3RBZK~;PmkTDuZ1WEeHUIxJ5s{&%B&<>#X*+%OTU|z8m^nzt*zjJ5S!6lj z0<&|;+(YFB_(!BwKs$ucKj zmAx=HTzApeUh%H9rtv`!e5rH!!VqWc=_#}@M8BCya-x+!!1B3`qb4|IQ2^y2EyWS& z%Nu9HgS)sPog?(R8c__^jDM9`tlgg8>Uo3fK)K@}3PLQJ9x3x7M3|hBRajWLODbZT zM2fr0WWdYI6KpMHn-;(^uD4opL*_LnC$cW(_(O4|NpyXFK5N^K?_*(MWhJqdRfD-7+LE!8Vb(}lUvrEOfVR#yYdN8?1;T6)0w9d;xZ=AgLVyJMDXJS9 zWo@#9y5O7Ikc_E`-`3^=gdd$C!3U2PEN>u>shv5+lVsBT7;3u72Ge1}KhkVA{veR9 z=`~l79Lry1v=6Se#$<)HOl%w$-AwX|Bv)>Y&KVsN#%2I> zhZ>!(0`J!)Cey@Kw24h_u?t|^pZZsh)O6RZ2(sLE;o~Nxf047jwAr2IN2Q+#q)S`I zsckrZEbGYrRbOJ*OWbxJaYE0$+%7~# z^^q~X4UaIi!7>XsxGFS#^O-%8NyQXf@k(%Ie%;ribD4aZn9o3A>uoVADaQuK3p*J( zP*j@{37;G&38`7`ll<3h<1}iO;(6rIy1P3c+lz0k2;3y&V%?_Lp}t14t9{qKy>%c% z#Cbq#@$^e6VLQ>%BS*VF)RVr{cBi4+Kejw`r(77?#@=1>Ao#8R6g8Gm`%tO=!Fxv(=$uT+M`4v z{8(8^npf1b(7|t|$EvN$xy28{zg;5lPh4HUGSk2KK*`mpcF-|sJARC$Cz|6GJ=h}_ z)@RD-SP=;w(Q!SY3AEwV-QA<_Lq0nj+kO&e;k>Xev3Fp$&p)Pbqr56Z2EHO&o+^B} z1=X0Nqb8uo%PrJj0--(bcV3wj<}7zX4lO>L9MfVlO0!Vee@J#jf^!Pm=J*1f+=n+`_1p69%gz$1PgdB8$)r|^LeR&nqVWS^?H8-{etepx9I;QC1 zf@SoUty&BnVL9%e-?fFScUS0l*>X@N`W>)@+EqAI`p(N|myAd`(PDZzilCAX64B=( zO23@&!=ta3w5J!W!Gn0P<0H?N`LMIQdvg*4p_MuT218Ty>Z>7vjpxg!uiCr_YY&V4 zIh(vZ1su|@X5n)-(!>@oIz3_To}27NkFv$R5v{npVJ_aFFN!WT)0HYxm&$clg&y7p zq@nSx+)^qL4id#1-}`YHqf)oS{SuDwQb2%}md=8U?E@$<4eJ+3DaO$QMfXdx|Y-cP3iJgi>>Tsd4_e_DO+u6=Igx}qlza_OWfGyZjx zqEt#*>>AzdAlH0-fRhmHAu9~e%L=0^U7Gv}%eM?5#1yT>DVgKB>hW}jv0Q4i@KqHn zg#U($s}^OA!sJrxQLs|Aad~jHyfZW6g~@e~ir_O?v)4Mlv6g)c@hXX8yW;(Yx6Iu>HKmMZDms>KP%aip%4=Ax{OcCj(8KhpvBoy z{m+U;1vI-Lqy8NH`d*r_C2^ypqBp00#dXD^hYFpGmxyp|&&M7!Gikj`tfVlX3GklX nCRCk#nWR6>il({>07$FW)-7f+5PR^$66ApMp?w8=ys!Khj}{ci literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-webkit-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-ChemType-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3406b6be410ee9b427ffd788f5b656ac092a8f6b GIT binary patch literal 4042 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 literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4586c7907480e35536ec528cc4b34df3e4ad8fb2 GIT binary patch literal 3363 zcmeHKX;+ii7Jk)MYY}OkTLgM5h|E@$K$u!5j0kuc8m5TKB!;0jKoAHxp;xR@#fXqV zN)gf!c#%O8AP^^{5D+v#5;B1p0%QO}NXP&wz3Z;~sUQ3SemQHevxl|zbDp!GwQrvE z_c8wb>(2oIFoqpF90&lb7gy}1&sMLTM>pMf1b_`}*x?_7Gw@PgZsL74=ILD5E3ci1 zLH47TmPV|$Ve91kq|u~(Z@%gANcc5I?ldwq^hthP!WF;zKYI?=wEku08TMV_&0;>dLdokrr$zloc5D7W#AI)vWKhw01|uIk&$o^{E+_(kYqQ0NoMStkIy-DI1l}rO z^+O!a_nt57AdyC+)zs81TCM{Ab6OETxy6pihQha{Z2~U2bM*QCf$1U~8D00lA>zSG zm7g3^A9$<=crDv%CjsE)u2kUC<7*p%FCGl60-kSz0^f%oTnBvSyW%^u-VFH0zI+XE z&FY_n$jWVMyA3-N!VrOh>Wu!y=Y2ujTPd}qJtSUgYE1Vv(%mwm1!zwSMV~u84ee@s z_7c~-8lW0eHbL_)R}|D`W%vje6-RKyqyF-Y4E{KO+~VQh0|K?ODvjX&^O*Mk8Ge*6 zpyQYu8xf)CKkBHTp!%=$gyThETRbmCajNjaHJ-r?4;-`93J{EkZY2iXztk;xxNb}yw%C>iKaImonqjoKJ zcd@dUXM~|1vZ4;Xj9$A;?i20^r)kP=I~n5>ZFXj6BxM=i-4)%|^{YJFtJwB=9cGf8 znX8-W3q4w}t0U({7ywYtBqz(C)gfpXS00~t0lapH^&u?yAgX)}`mitc5vPwhec<%{ zAgYj4JNZ_56yFss_&!HF-*Wc-{haDdj!90q3j_k^rHZ};M*Sg5t+Xe=-i{$C`X$nS zNhTH9VdsyI1#*2;mS(MsHhX2t>6E6%h3Fw{vg_)nep?QSFYAuym!mGeKYKn|{+35; zre{fR`pgJsr$p;5Jc)FJ|D1`kAh-V8Re;wZE+uMtsJHU1kc89F=Qz(;45xnGSf?9y z{%(k#8Jf7}5>8uJK6O{0_+p7!*%^YTXUC`{2BrT6Nu_Vm-zvrn66PSqyBbj_Si&4G z)~Zq05v=N+^IcIYD%10#vQHe|b9^GMkW8qUf7%{IFx2LI>m_KAVo;uB6`FZE7muXc zk|Mby!+5;g+caB9@%{MW=0s#SZDdY^Ve0y9cLfM&nn3xDjP$&JYou4{!pOwV0Ib6wUa$aA)xyvnekE0ru7o7ZG7<4JAl> zAu_Lll0Gv5iq>4)p23@X6J!=(&WPVPWr^S}a(v)=2_yqxA%?2!WyjnD!-Ne>MjRevU7OaZ)2>EjlEU!7=zS8teqVCCC|}23rtd#%-1| za#8&LL0GIylleL1Lj#eY`?vza)MjTLvPDmiKHFtbb?StserwyH&;Vl>@O(|UhgGq8 zyTrR+X)?iLnJg5<4X41w{u_vr#=<2c3fBuBpesuX6~SYv=oxKu$&vVzLyyzYI_;zQ+%9xf z)}ALy{e%zB7S-jhBIt!T7@#bhmLe*k8x%ibxVPHiekSJJ+{IZwVTrBj#zt@>Si4_b z-7M;6KX)$OISswnzdtukr&UglvauG}TTY=NV3yO(a5TZGbZ;LTBvg6dXi>*Vd8SgWGs*|2VA zbbFS8N?EjIDy?s8EZfd_1)QIjFg>>`2vnC5YHfSR`R@CQCrLsc|8co$X!+ULd){H$ z_3O%k`p8&j^F%gWUCfI?DbDOhwO@rrGlrEnLBZI~>#wW~8saI7vYP6skVp)yveEbe zOl_cR=Blx#tljO_T8JYL4HXJCM1tf*53*!gTHj-EZF{d5m^y%O5;+QBrZ!i&o)~fW0 zAd$!duK=I;ams?avWQ6BE%X&=zxXwQlh#3XW4bE`Mn3i4Q)=Uw_REAdD=r`XM-RDL zU@n(gm^(^k8EAWqmyjB>{?WT4c$M{QV-X|{X^j%Ux>q8k$H!4azwDa=Uk6nkVZ&hgim~?Z b9cK-2luwCPpq^h?xdC8D{11Z%Pha^9DRKc` literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ca67851482197a9c008379c68046e6b6082e94 GIT binary patch literal 6783 zcmeHM`CC%!7A7=@%Cx#Siw12pk5iMDnZl{G)A5v*O$vz(WH~1)jv!6eEwgi-Qd25J zDoq@6C`2ebT9RREk_m#>0TmS$5kz3$?J1={;Qn%-M}F83&)$1|-x}VvzO~+c>+qrd z2J>L^AP|Vbf#3EWg+QQk@V`n=2fTg=){2BcU@iyt{dz3IYmld(pMr^Ej>w8F`n_Eb zo_^|zdj92I*pr+?ehD=OFXrEZHCM#7J$?7QVyW@I1-{%Jhq;@rw>|w_kq2|VWYOXnu7P(71n=j7jB5F z^gPGE`nUAo%Mepsy-9z*;A^YbQLL;_zYe_wxFy6Gf{Rb@a>ANOSWza(WD>^4S{h6J zIE^om|lef28f1(F!4mHkfvXo>4CX3T0?nHIX&9{`V?e)5bfVe}8Wc=4;^@GO|3-wacT0 z^Rlcg_0it=)Q;--v^;9n>jkTKN2I@FNn)BPZZ@4Y2^KyNF1zS@rn&y)I)CClCP6t; z>&n2Z>XZ`_S9Z2zn*5IIWJdZnpVVqYc;&}zM_Q%ilLMyf{h#nIot1 z$$_Lwof#bHLia&E4+^*sj4e_E^s#8>sySx_yPm>se_S98al9xbz8=W^$i zuK;N9m~U)tY3L;PUJl2{EO!X^Z^cgz&Q<>+IU4?G+V{}o0<*bzK&@isdz56*#O{8N_AES4W20xyoy zkxt&sI1GNDPh?e3JQS$i&1Vv|Sjpz@+Uj4VA>lG%~Yp0c#m?)-51JX3;X0__Ij_7Kho|GF9?tOD=en%$`J3r|0Ye4K^OL zealqeG~3RBZK~;PmkTDuZ1WEeHUIxJ5s{&%B&<>#X*+%OTU|z8m^nzt*zjJ5S!6lj z0<&|;+(YFB_(!BwKs$ucKj zmAx=HTzApeUh%H9rtv`!e5rH!!VqWc=_#}@M8BCya-x+!!1B3`qb4|IQ2^y2EyWS& z%Nu9HgS)sPog?(R8c__^jDM9`tlgg8>Uo3fK)K@}3PLQJ9x3x7M3|hBRajWLODbZT zM2fr0WWdYI6KpMHn-;(^uD4opL*_LnC$cW(_(O4|NpyXFK5N^K?_*(MWhJqdRfD-7+LE!8Vb(}lUvrEOfVR#yYdN8?1;T6)0w9d;xZ=AgLVyJMDXJS9 zWo@#9y5O7Ikc_E`-`3^=gdd$C!3U2PEN>u>shv5+lVsBT7;3u72Ge1}KhkVA{veR9 z=`~l79Lry1v=6Se#$<)HOl%w$-AwX|Bv)>Y&KVsN#%2I> zhZ>!(0`J!)Cey@Kw24h_u?t|^pZZsh)O6RZ2(sLE;o~Nxf047jwAr2IN2Q+#q)S`I zsckrZEbGYrRbOJ*OWbxJaYE0$+%7~# z^^q~X4UaIi!7>XsxGFS#^O-%8NyQXf@k(%Ie%;ribD4aZn9o3A>uoVADaQuK3p*J( zP*j@{37;G&38`7`ll<3h<1}iO;(6rIy1P3c+lz0k2;3y&V%?_Lp}t14t9{qKy>%c% z#Cbq#@$^e6VLQ>%BS*VF)RVr{cBi4+Kejw`r(77?#@=1>Ao#8R6g8Gm`%tO=!Fxv(=$uT+M`4v z{8(8^npf1b(7|t|$EvN$xy28{zg;5lPh4HUGSk2KK*`mpcF-|sJARC$Cz|6GJ=h}_ z)@RD-SP=;w(Q!SY3AEwV-QA<_Lq0nj+kO&e;k>Xev3Fp$&p)Pbqr56Z2EHO&o+^B} z1=X0Nqb8uo%PrJj0--(bcV3wj<}7zX4lO>L9MfVlO0!Vee@J#jf^!Pm=J*1f+=n+`_1p69%gz$1PgdB8$)r|^LeR&nqVWS^?H8-{etepx9I;QC1 zf@SoUty&BnVL9%e-?fFScUS0l*>X@N`W>)@+EqAI`p(N|myAd`(PDZzilCAX64B=( zO23@&!=ta3w5J!W!Gn0P<0H?N`LMIQdvg*4p_MuT218Ty>Z>7vjpxg!uiCr_YY&V4 zIh(vZ1su|@X5n)-(!>@oIz3_To}27NkFv$R5v{npVJ_aFFN!WT)0HYxm&$clg&y7p zq@nSx+)^qL4id#1-}`YHqf)oS{SuDwQb2%}md=8U?E@$<4eJ+3DaO$QMfXdx|Y-cP3iJgi>>Tsd4_e_DO+u6=Igx}qlza_OWfGyZjx zqEt#*>>AzdAlH0-fRhmHAu9~e%L=0^U7Gv}%eM?5#1yT>DVgKB>hW}jv0Q4i@KqHn zg#U($s}^OA!sJrxQLs|Aad~jHyfZW6g~@e~ir_O?v)4Mlv6g)c@hXX8yW;(Yx6Iu>HKmMZDms>KP%aip%4=Ax{OcCj(8KhpvBoy z{m+U;1vI-Lqy8NH`d*r_C2^ypqBp00#dXD^hYFpGmxyp|&&M7!Gikj`tfVlX3GklX nCRCk#nWR6>il({>07$FW)-7f+5PR^$66ApMp?w8=ys!Khj}{ci literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-webkit-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-ckeditor5-MathType-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..3406b6be410ee9b427ffd788f5b656ac092a8f6b GIT binary patch literal 4042 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 literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b181707d344ea5c75b5c3eb58c0012fde9debd GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0y~yV0r^&+jB4hNt1FeW}v`pPZ!6KiaBrYDEfpH${hH( zTzJn}?uw({Czc)DX}NJlqeA$GgpCcejT1K(7_V@AUgoH;!J?meAjxP$r#dvxOUd#8)f0{Umub6+3x-l?Zv zr`gr(yu3eSsc6tj-S6U`YTw>}f1cO(%+=-XU2A{t%sua&yfi4*r>k|}*+?nRsjqgI zDgNeRc(CC1W3^?s&-PEtzPhrz)hE7W^5FbO&H_vwyzD^F&X}B*4O<+zetXf*M&rYWUG4WXGn73FSbyES zEVp)}(bpG;zrT5LU){H!%g>Cw|MTT_j)q$_3cs74 z_rtXKeR*Et1dGj|pWk0yDX8Gkz`)4F!Xcm_pt)i32KQ%48ekq+IGeHcuA%^335Qs~ zjpoCKQV{hZ6|Hx9N2N&(mc|!{{{8!RZ`tKcYkT|r>({Tp{qiLw2^0m8xbWgUBKGb1 z^XF!A{kKn__MUzI`P)yQf)e#hXH8Ru#g+t%S=f#H_wL=gdNp+S?%mm&Z@%d+d;jyp z-tXVPzkT*>+1q#Twsm)R%X3%1|66r_E;BsJ8eJNDMZP^P+WAl8bifvQdHMY!-|l^8 z%-R~Yb?@H2TW@BV{MxwT`@QwwZ44!h5vk+G4gVYY`T4g${QTV9++0>x_HF5g@AK;W zmWAJ_et*6Coe13Z980)zo~XZ(KW%4gyY*zsr?>7&ZR=m!{;!xHm-zpFeSB8LGbNZW zR;Vx7aQ*b1V{pGmt1Q@%9~j{V_a`wb1fp-q%gNn({ra`l#KnsjmlYLV>g(^nUT&5r?a>9c65^ECo?|@V7|1DnbzMix(OOUKh~Fqx=Vc!9(OGP)C{FGG$nhjXHva ckT?*p&lQsNvtwo#un1-FboFyt=akR{03^xB=l}o! literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-webkit-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-ChemType-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..511222d57298fa2082bb35a6e380c8cd0699dfb4 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0y~yV0r^&+i|b~$pTNmk3fpCILO_JVcj{Imp~3nv6E*A z2N2Y7q;vpP2Yb3WhE&XXd)F{asZiqB!}G2!R}S7fw0cSB6OMzIgr6{F?rCu4>VK%Z zX0p+eNg~OKy1^EjVnJ^Y<(+u3`_1PN;~Ini>;H%vpIPvF*E$A<1`m6^y+CU|R5!^o zFf?(NF)(nb-C$%;n32HF(2zh|!EgR7zh9QDTK8ISFVOpQVoNq`&yDu?_b)9i4V``V z*`?PE3C=`&!o4Rkv^7)<0XmJNEAV``7cfuYUdd^}X}V3=J-OS*kCaeEskt zp#AVe@6W4NJ%9du*7@gKWAw63q`ub4F)*k|efxM}`t<3$cJE&OvLx#E+i&ZihlXyx zxrVLz;LURoBYvMf>l+%nci+Cc%(&2cnb-GAK^nXMy%1qw_*ae=3=#VBbL-l_fB$YJ z*B|=zv;T76%U5pSjt&j=RhulummCfZxqRX1z5V_DTjSQ-zZdU5`uuC%{`DU#YC5+v zFg#ep7JI#PdK?o2!w=K<8<-g!3=Z-!FdSsD2FA89Ff|DH&{c2)|L*Di;h9w;-N1Cf N;OXk;vd$@?2>`Ou`H%nr literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b181707d344ea5c75b5c3eb58c0012fde9debd GIT binary patch literal 822 zcmeAS@N?(olHy`uVBq!ia0y~yV0r^&+jB4hNt1FeW}v`pPZ!6KiaBrYDEfpH${hH( zTzJn}?uw({Czc)DX}NJlqeA$GgpCcejT1K(7_V@AUgoH;!J?meAjxP$r#dvxOUd#8)f0{Umub6+3x-l?Zv zr`gr(yu3eSsc6tj-S6U`YTw>}f1cO(%+=-XU2A{t%sua&yfi4*r>k|}*+?nRsjqgI zDgNeRc(CC1W3^?s&-PEtzPhrz)hE7W^5FbO&H_vwyzD^F&X}B*4O<+zetXf*M&rYWUG4WXGn73FSbyES zEVp)}(bpG;zrT5LU){H!%g>Cw|MTT_j)q$_3cs74 z_rtXKeR*Et1dGj|pWk0yDX8Gkz`)4F!Xcm_pt)i32KQ%48ekq+IGeHcuA%^335Qs~ zjpoCKQV{hZ6|Hx9N2N&(mc|!{{{8!RZ`tKcYkT|r>({Tp{qiLw2^0m8xbWgUBKGb1 z^XF!A{kKn__MUzI`P)yQf)e#hXH8Ru#g+t%S=f#H_wL=gdNp+S?%mm&Z@%d+d;jyp z-tXVPzkT*>+1q#Twsm)R%X3%1|66r_E;BsJ8eJNDMZP^P+WAl8bifvQdHMY!-|l^8 z%-R~Yb?@H2TW@BV{MxwT`@QwwZ44!h5vk+G4gVYY`T4g${QTV9++0>x_HF5g@AK;W zmWAJ_et*6Coe13Z980)zo~XZ(KW%4gyY*zsr?>7&ZR=m!{;!xHm-zpFeSB8LGbNZW zR;Vx7aQ*b1V{pGmt1Q@%9~j{V_a`wb1fp-q%gNn({ra`l#KnsjmlYLV>g(^nUT&5r?a>9c65^ECo?|@V7|1DnbzMix(OOUKh~Fqx=Vc!9(OGP)C{FGG$nhjXHva ckT?*p&lQsNvtwo#un1-FboFyt=akR{03^xB=l}o! literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-webkit-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-froala-MathType-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..511222d57298fa2082bb35a6e380c8cd0699dfb4 GIT binary patch literal 681 zcmeAS@N?(olHy`uVBq!ia0y~yV0r^&+i|b~$pTNmk3fpCILO_JVcj{Imp~3nv6E*A z2N2Y7q;vpP2Yb3WhE&XXd)F{asZiqB!}G2!R}S7fw0cSB6OMzIgr6{F?rCu4>VK%Z zX0p+eNg~OKy1^EjVnJ^Y<(+u3`_1PN;~Ini>;H%vpIPvF*E$A<1`m6^y+CU|R5!^o zFf?(NF)(nb-C$%;n32HF(2zh|!EgR7zh9QDTK8ISFVOpQVoNq`&yDu?_b)9i4V``V z*`?PE3C=`&!o4Rkv^7)<0XmJNEAV``7cfuYUdd^}X}V3=J-OS*kCaeEskt zp#AVe@6W4NJ%9du*7@gKWAw63q`ub4F)*k|efxM}`t<3$cJE&OvLx#E+i&ZihlXyx zxrVLz;LURoBYvMf>l+%nci+Cc%(&2cnb-GAK^nXMy%1qw_*ae=3=#VBbL-l_fB$YJ z*B|=zv;T76%U5pSjt&j=RhulummCfZxqRX1z5V_DTjSQ-zZdU5`uuC%{`DU#YC5+v zFg#ep7JI#PdK?o2!w=K<8<-g!3=Z-!FdSsD2FA89Ff|DH&{c2)|L*Di;h9w;-N1Cf N;OXk;vd$@?2>`Ou`H%nr literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-ChemType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-ChemType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa6598ec932de45abfceaaf98d7f90337b996cb GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yV0s5+8*wlJ$sU=L4}b!Zo-U3d6?5L)R?Lw~lxTSP zdQ-~twl&gurOB&y%w6N6G|}V9*{i&rAjY$G?_T)@9rq~~s_ff(cG5-BSsS;U-1nsN z$@JgD`hnA%=$OU;H&MUpczu{#m!9&n{L3 zpLG|%d#~i`8=D#SKJzT!yu7w|*Bsu>?-JtF85r1Q|1w{WJ^JMF(W=-`&;R8$CaWvw z`LC{uU3Y8m+?Q{PCiaP){rwO8x)I|D`ri#IQ#XNIL4#OkRZ z-ds{XYhGNB_|ZQ`)^}x>zx}r+;)(d%lK+wH+s;)@K3Zh%Fy0X7r^WT@@8~cZvM_`xAKIFI&#ZaA1C)uOvgm y|Bn9@L<^3%+b|!P#Qy(p4mOSlGT1oumnYl1ol#ER~R0>hmUjf|J|Qh?bOvQ(CL{Kfkg) z?{2ZB)$zCc^7=Qwxb}R{UYmRCAI{7>zJ2!W+3z2^HZU+Uv2X||I5ZrH*ZuJJcm4YP zRZfQmfqbZhz@fWBAZZBKLqXw=aLgn@PPh<9xiw5u!9k(1p}@bu(@g~~q;Tgg+y;h5 z7N$eC2UR5}!i5?NwlhPl2MGyraC~Q(p5g*^5m4yRT|T%?0z=F4fXxN^B3y+XDzkmA*{C6*6Q-?)}23LseySsPqe*E-FC^|a&;>C-BW_PqJ zmr4A0cX!{obEo9lvuBt7(El#|z5kq6TP;ut46%ly1 z^-75tEafsZ>I(_Hi)VQqfe1F@)U1fyF@OGi_w@Aip5ET0zkXHSl)PX4?8_IEdGqFZ zz1Ob$_v^=xiZ9>4PycuK>ebL+9Vh0;Pp#R%b?ep{GiG$Wefw5IQgY?e*_*-n2b`w= z1U9ZZTw7jlZf0io=*bh6ckkXUTDWkb$gQL2{pZh_qx08bs!ec>|3`jrCxI1Kcd`vzj1l$;RKz>% zxGjKC!^zT8-Q;bg1P>d=hk5J>^(q1a?>O~NcEH1urDeA)EX)NICOA0kP~V}VECd%4 zcvl812^<<6m>3_ z%gV%D1CLz39DE+=uz*x$&hNKx-@b9@PLJR6%cajgel*;+ZQG)oIp6MF%`saXxBmF0 zOP2z6-@AA3(T5KPdiwgmN+ z8JUv1rGy9{`Be79Xoe+Zr!?d z-TfW@{{F|WUJZTo_N{B=wAk{y_wOJ7`n7b;nl&YJB~!u!MJ{HTJbLm(MNM73zD$vU zVa0;`hxKO6n9=d`=g)n`-QC@_>3#kEi#56?zKM#6cwx=Vzz`YoDs-mfB49}WbDzou z4EqPw=)vAr7n&Aw@BaP8ck|p`j(q-HTvJoyvifRQN5{&QD`(7{Df#>(14F_ZE#Y_k z{QQBdum1a)lb5Hb^v_PXvZTbMFPV|SK~*GmeZ314FjNlalOKO1q>2apOs3PO*2UXD Q07eCar>mdKI;Vst00ZDKlmGw# literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-MathType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-generic-MathType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa6598ec932de45abfceaaf98d7f90337b996cb GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yV0s5+8*wlJ$sU=L4}b!Zo-U3d6?5L)R?Lw~lxTSP zdQ-~twl&gurOB&y%w6N6G|}V9*{i&rAjY$G?_T)@9rq~~s_ff(cG5-BSsS;U-1nsN z$@JgD`hnA%=$OU;H&MUpczu{#m!9&n{L3 zpLG|%d#~i`8=D#SKJzT!yu7w|*Bsu>?-JtF85r1Q|1w{WJ^JMF(W=-`&;R8$CaWvw z`LC{uU3Y8m+?Q{PCiaP){rwO8x)I|D`ri#IQ#XNIL4#OkRZ z-ds{XYhGNB_|ZQ`)^}x>zx}r+;)(d%lK+wH+s;)@K3Zh%Fy0X7r^WT@@8~cZvM_`xAKIFI&#ZaA1C)uOvgm y|Bn9@L<^3%+b|!P#Qy(p4mOSlGT1oumnYl1ol#ER~R0>hmUjf|J|Qh?bOvQ(CL{Kfkg) z?{2ZB)$zCc^7=Qwxb}R{UYmRCAI{7>zJ2!W+3z2^HZU+Uv2X||I5ZrH*ZuJJcm4YP zRZfQmfqbZhz@fWBAZZBKLqXw=aLgn@PPh<9xiw5u!9k(1p}@bu(@g~~q;Tgg+y;h5 z7N$eC2UR5}!i5?NwlhPl2MGyraC~Q(p5g*^5m4yRT|T%?0z=F4fXxN^B3y+XDzkmA*{C6*6Q-?)}23LseySsPqe*E-FC^|a&;>C-BW_PqJ zmr4A0cX!{obEo9lvuBt7(El#|z5kq6TP;ut46%ly1 z^-75tEafsZ>I(_Hi)VQqfe1F@)U1fyF@OGi_w@Aip5ET0zkXHSl)PX4?8_IEdGqFZ zz1Ob$_v^=xiZ9>4PycuK>ebL+9Vh0;Pp#R%b?ep{GiG$Wefw5IQgY?e*_*-n2b`w= z1U9ZZTw7jlZf0io=*bh6ckkXUTDWkb$gQL2{pZh_qx08bs!ec>|3`jrCxI1Kcd`vzj1l$;RKz>% zxGjKC!^zT8-Q;bg1P>d=hk5J>^(q1a?>O~NcEH1urDeA)EX)NICOA0kP~V}VECd%4 zcvl812^<<6m>3_ z%gV%D1CLz39DE+=uz*x$&hNKx-@b9@PLJR6%cajgel*;+ZQG)oIp6MF%`saXxBmF0 zOP2z6-@AA3(T5KPdiwgmN+ z8JUv1rGy9{`Be79Xoe+Zr!?d z-TfW@{{F|WUJZTo_N{B=wAk{y_wOJ7`n7b;nl&YJB~!u!MJ{HTJbLm(MNM73zD$vU zVa0;`hxKO6n9=d`=g)n`-QC@_>3#kEi#56?zKM#6cwx=Vzz`YoDs-mfB49}WbDzou z4EqPw=)vAr7n&Aw@BaP8ck|p`j(q-HTvJoyvifRQN5{&QD`(7{Df#>(14F_ZE#Y_k z{QQBdum1a)lb5Hb^v_PXvZTbMFPV|SK~*GmeZ314FjNlalOKO1q>2apOs3PO*2UXD Q07eCar>mdKI;Vst00ZDKlmGw# literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-ChemType-chromium-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce5-ChemType-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4dab7e70769133a7666d3725146ce0d3d4570689 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0y~yU^)Y2i*qmm$q85cIv5xj^F3W0Ln`LHxviLUB|zf9 z$3C5fn~M61=d5{LF!ks|i98FHzQYe^teLZ?_{3y&ZT|4cJ1MD8i(4n^u)N!qa&}&3 zo&9CA_|Gr*SG=#0Xk%e`uyU?C1A|}(4}${NL`DV|MI(j=jd_1-dAHwRKTX{AYTM%d z$J`#4?bqA1xg^x|;gesS){G62JNkS66%>c=yZ`S^f4!t+>$-0Xq z*&in%zqI?b@80O?-Cv$S6#OXuU>v>f)BXP7cI9L4H1%~m-dUu%8kbxbM)!^xWlJe&*%f{WFV%|e7k9U}w7|Nq>YwO@cSzy=C>W(J;= WX$(^eXKe$DFnGH9xvXkPAmR0UJA^1&m*Gb$L9nGas@VL2+y5qF4r23Jy2MuHNDT2tf9H+kh7bXI@6@~zL& zI6n2z>g%EL;U6x0)c*Nl+T_^4z{teHA)w&Ua3HvmzwzctAPXw=A<7}4%nB?A7D?gY zIMc@tQ_jHHcvBLgc!K|fhup>c@AJ<-tF|U=^>o?IS?|7AOYpTPnn<F=_{Fy(en=ZesSz-FNkPPkybky^^(cL)?0KredG7C04%A^~AaZ^rj!K zu&I-pkz953%9GohA|bv6`Q#Dnr2{p)?_OGPJIBmfsA~G@r_Kp|D=p>v7Y40d;;%o| zOP{&eXZ?&>KXO;8AX)d|q5YZlOrPh!P0rfH^m+fcuFAN5Z)dy0g3Cc68W>(qM2FV_ z@nD56(NXY@TuS_RS}(9T$@fyUsq+mDt1K*!(@w zurtx%O@0wpZWgV_T2O0Ps_@U-`C9Fu*QyoVZ|Z)=AUJ|kJi}rzbyInr7e8s z>#tJXN0nxsP0KNxol+@T%fJw@^mxL(_umbrdXx6X+4Jr{^`uhnZ=L-ooBpuXQ+4zf z^D{84n&#>v(|=r||Mc=yZ`S^f4!t+>$-0Xq z*&in%zqI?b@80O?-Cv$S6#OXuU>v>f)BXP7cI9L4H1%~m-dUu%8kbxbM)!^xWlJe&*%f{WFV%|e7k9U}w7|Nq>YwO@cSzy=C>W(J;= WX$(^eXKe$DFnGH9xvXkPAmR0UJA^1&m*Gb$L9nGas@VL2+y5qF4r23Jy2MuHNDT2tf9H+kh7bXI@6@~zL& zI6n2z>g%EL;U6x0)c*Nl+T_^4z{teHA)w&Ua3HvmzwzctAPXw=A<7}4%nB?A7D?gY zIMc@tQ_jHHcvBLgc!K|fhup>c@AJ<-tF|U=^>o?IS?|7AOYpTPnn<F=_{Fy(en=ZesSz-FNkPPkybky^^(cL)?0KredG7C04%A^~AaZ^rj!K zu&I-pkz953%9GohA|bv6`Q#Dnr2{p)?_OGPJIBmfsA~G@r_Kp|D=p>v7Y40d;;%o| zOP{&eXZ?&>KXO;8AX)d|q5YZlOrPh!P0rfH^m+fcuFAN5Z)dy0g3Cc68W>(qM2FV_ z@nD56(NXY@TuS_RS}(9T$@fyUsq+mDt1K*!(@w zurtx%O@0wpZWgV_T2O0Ps_@U-`C9Fu*QyoVZ|Z)=AUJ|kJi}rzbyInr7e8s z>#tJXN0nxsP0KNxol+@T%fJw@^mxL(_umbrdXx6X+4Jr{^`uhnZ=L-ooBpuXQ+4zf z^D{84n&#>v(|=r||MmtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-ChemType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-ChemType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6mtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-MathType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce6-MathType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6mtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-ChemType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-ChemType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6mtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-MathType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce7-MathType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6mtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-ChemType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-ChemType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6mtY zANzC`ZYt_44!KsiZAKc!Th@82w` z*4uYiojG?Y^={kZ*XeIq802>R-XrnNJpAhIv)>ke$#=qZb`@cQD_BrLHUv+HnSZAv<6mY%!q;z`q>)7k2UsEUk z4duGLxTJ7r-nP|Q6Xotg6x7MSJ@YB`0v&XMm`<8{dv(r2->*#lJPxobfP&j+G_`>M@^*>+U{`>sd-POL6 zY-&HI-e1F2%gE4w>!w8?Cxe5{Ig}tk7|Ra~`v3peZb<3^GT1!*RfVrW O5e83JKbLh*2~7Y}T*P|- literal 0 HcmV?d00001 diff --git a/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-MathType-firefox-linux.png b/tests/e2e/fixtures/insert/insert_corner_cases.spec.ts-snapshots/alignment-tinymce8-MathType-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..16c64b6d39f88be5b7d9d5f85c2683c19889513d GIT binary patch literal 745 zcmeAS@N?(olHy`uVBq!ia0y~yU^)e4i*v96NuiaQGk^jcJY5_^D&pSWQ9P9tD8csN zv$=SJ$quH?o*Q;BbxRvavn=*yIV#GLcZfBDb)y8YnBxWxw%KRS>`k08bM-&>W70>S zn>^e-|9SN}PJN~CuaB=6)nQ`c5KwSvU|?io`6u*4Xv$pZU_@AEewRPa%oeBot@+`A|B z`}OmDLJ?NZ6aFDP#eaG5i?3CQR&(2;)|MG-)Q1;a$T+RO%60s)Vb1p322#E6*q*+x zQcXT`#m0PH7R*9Mrb4F7fO|P+nHKB9Rxb=%+48h#Cg&+b)5jkzYRk-Kw;jp~+RN1PT##)Q_h|m~w8)b=Z*LsG=Z(4NpU+$%6TJEUd*_uQUgd!rB0vjg#2K2N z?|;pSY~9TN8uz(R)o<%wSt&AQ{#(({wS|vYDM11c7zzUF3L3{PSHcB;7%)2iJj{1z z2i(7fOie{|CTqdWY~&Xfm}39tK(9AA{IMF*IGye3*DBd_&x^foWSBVZzRPzu&G_$} zJ&P?Xg^%sme%32yXewWpcT5%Lj1!R$mO5H;9zOYdM*iBndE%#@Zdx$sb7Pi2%#III zjXnW&zR|IWnB23yVZon!&(pudU24h6amw;w7TjSU?lCoes-8dpt}rY;JW)~5c+Rp~ s7nTAJRC9BjdS6>t2DfO!JUgm$uP;;Ip(k3$ZDZsf)@E_VH3xrh zn2~Zg;X;mpWBOtCL!b8k<1~KL_S}Ev*-BZ-R3r@ z=bV2&<80c+9JAz|F?Kroi}@KCRuxE}ntfJ{t=X}ruI?VM{plx_a(m5p+~SKGk~ONE}|NeN1Rj=FP!tGnu*fB7y@Um4} zbou3xtgT%-r;|2Ds5Gxn*>yMXO4iopOH;ps%*k6HmvZy7{DF#Tm8mMzZvwp%y3vJ^ zLE#{pcUDaQx#4b}`0~q|O8@@OzE`)u|81GHpy1mw>sMccUNbN(Fj}g2{bY*J=bwMd z{(k&e_`AkJX3^EGsgXbvr>+Es)t_&Q3=9v}f9x}2U{H|&#@K`e4Q2+1riDBV44n51 XyH}pH-oa4=j4lRGS3j3^P6} The URL of the opened editor. **/ diff --git a/tests/e2e/playwright.config.ts b/tests/e2e/playwright.config.ts index ee07fcc21..faddf369a 100644 --- a/tests/e2e/playwright.config.ts +++ b/tests/e2e/playwright.config.ts @@ -34,6 +34,7 @@ const webServers = enabledEditors export default defineConfig({ testDir: './tests', + snapshotDir: './fixtures', fullyParallel: true, forbidOnly: isCI, retries: isCI ? 1 : 0, diff --git a/tests/e2e/tests/edit/edit_corner_cases.spec.ts b/tests/e2e/tests/edit/edit_corner_cases.spec.ts index 9ef90344a..b85e295c0 100644 --- a/tests/e2e/tests/edit/edit_corner_cases.spec.ts +++ b/tests/e2e/tests/edit/edit_corner_cases.spec.ts @@ -12,7 +12,7 @@ for (const editorName of editors) { }, () => { test(`MTHTML-81 Edit styled equation: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(Toolbar.MATH) @@ -31,9 +31,35 @@ for (const editorName of editors) { expect(isEquationPresent).toBeTruthy() }) + test(`MTHTML-97 Validate formula edition on styled text blocks: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.applyStyle() + await editor.type('Styled text') + await editor.press('ArrowLeft', { times: 5 }) + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + const isTextStyled = await editor.isTextBoldAndItalic('Styled') && await editor.isTextBoldAndItalic('text') + expect(isEquationPresent).toBeTruthy() + expect(isTextStyled).toBeTruthy() + }) + test(`MTHTML-85 User edits a formula and continues typing text: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(Toolbar.MATH) @@ -59,7 +85,7 @@ for (const editorName of editors) { test(`MTHTML-100 User edits a formula deleted during edition: ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(Toolbar.MATH) @@ -76,7 +102,7 @@ for (const editorName of editors) { // No error should be visible, and the editor should be blank expect(await editor.isEditorCleared()).toBeTruthy() - + // Again, we do an insert + edit so we assure everything works as expected await editor.openWirisEditor(Toolbar.MATH) await wirisEditor.waitUntilLoaded() @@ -92,5 +118,29 @@ for (const editorName of editors) { const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) expect(isEquationPresent).toBeTruthy() }) + + test(`MTHTML-9 User edits formula via contextual toolbar: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + test.skip(editorName !== 'froala', `This test is only relevant for the Froala editor, as it's the only one with a contextual toolbar`) + + await editor.open() + await editor.clear() + await editor.openWirisEditor(Toolbar.MATH) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + + // Click on the equation to open the contextual toolbar and click the edit button + await editor.openWirisEditorForLastInsertedFormula(Toolbar.MATH, Equations.singleNumber) + await wirisEditor.waitUntilLoaded() + await wirisEditor.typeEquationViaKeyboard('+1') + await wirisEditor.insertButton.click() + await wirisEditor.waitUntilClosed() + await editor.waitForEquation(Equations.OnePlusOne) + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) + expect(isEquationPresent).toBeTruthy() + }) }) -} \ No newline at end of file +} diff --git a/tests/e2e/tests/editor/editor.spec.ts b/tests/e2e/tests/editor/editor.spec.ts index 2452f2c7e..32799245d 100644 --- a/tests/e2e/tests/editor/editor.spec.ts +++ b/tests/e2e/tests/editor/editor.spec.ts @@ -104,24 +104,5 @@ for (const editorName of editors) { expect(isTextEndBoldAndItalic).toBeTruthy() }) }) - - test.describe('Text Alignment', () => { - test.skip(`MTHTML-23 Validate formula alignment: ${editorName} editor`, async ({ page }) => { - const { editor, wirisEditor } = await setupEditor(page, editorName) - - await editor.open() - await editor.clear() - await page.keyboard.type('___') - await editor.openWirisEditor(Toolbar.MATH) - await wirisEditor.waitUntilLoaded() - await wirisEditor.insertEquationUsingEntryForm(Equations.OnePlusOne.mathml) - await editor.waitForEquation(Equations.OnePlusOne) - await page.keyboard.type('___') - - await editor.checkElementAlignment() - // Note: Playwright doesn't have a direct equivalent to visual comparison - // TODO: This would need to be implemented using screenshot comparison libraries - }) - }) }) } diff --git a/tests/e2e/tests/insert/insert_corner_cases.spec.ts b/tests/e2e/tests/insert/insert_corner_cases.spec.ts index 7cb55089c..9fc00d19c 100644 --- a/tests/e2e/tests/insert/insert_corner_cases.spec.ts +++ b/tests/e2e/tests/insert/insert_corner_cases.spec.ts @@ -62,6 +62,31 @@ for (const editorName of editors) { const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.OnePlusOne.altText) expect(isEquationPresent).toBeTruthy() }) + + test(`MTHTML-23 Validate formula alignment: ${editorName} editor`, async ({ page }) => { + const { editor, wirisEditor } = await setupEditor(page, editorName) + + await editor.open() + await editor.clear() + await editor.type('11') + await editor.openWirisEditor(toolbar) + await wirisEditor.waitUntilLoaded() + await wirisEditor.insertEquationUsingEntryForm(Equations.singleNumber.mathml) + await editor.waitForEquation(Equations.singleNumber) + await editor.type('12') + + const equationsInHTMLEditor = await editor.getEquations() + const isEquationPresent = equationsInHTMLEditor.some((equation: Equation) => equation.altText === Equations.singleNumber.altText) + expect(isEquationPresent).toBeTruthy() + + // Visual regression: compare the editor area against a stored baseline to catch + // vertical misalignment between the formula image and the surrounding text. + const editArea = editor.getEditAreaLocator() + await expect(editArea).toHaveScreenshot(`alignment-${editorName}-${toolbar}.png`, { + // Allow up to 0.1 % of pixels to differ (sub-pixel rendering, font hinting, etc.) + maxDiffPixelRatio: 0.001, + }) + }) }) } } From 40a63a2ae15050977540a18783a9bee2b5362687 Mon Sep 17 00:00:00 2001 From: sbaron-at-wiris Date: Tue, 12 May 2026 11:20:45 +0200 Subject: [PATCH 6/6] test: enable skipped editors to drag and drop test --- tests/e2e/page-objects/base_editor.ts | 9 ++++++--- tests/e2e/tests/editor/copy_cut_drop.spec.ts | 19 ++++++------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/tests/e2e/page-objects/base_editor.ts b/tests/e2e/page-objects/base_editor.ts index 167d33fbe..e96168d98 100644 --- a/tests/e2e/page-objects/base_editor.ts +++ b/tests/e2e/page-objects/base_editor.ts @@ -1,4 +1,4 @@ -import { Page, Locator, expect, FrameLocator } from '@playwright/test' +import { Page, Locator, test, expect, FrameLocator } from '@playwright/test' import Toolbar from '../enums/toolbar' import type Equation from '../interfaces/equation' import TrackChangesOptions from '../enums/track_changes_options' @@ -507,6 +507,7 @@ export default abstract class BaseEditor extends BasePage { const equationElement = this.getEquationElement(equation) let editDivElement: Locator + const isCkeditor5Firefox = this.getName() === 'ckeditor5' && test.info().project.name === 'firefox' if (this.iframe) { editDivElement = this.page.frameLocator(this.iframe).locator(this.editField) @@ -519,11 +520,13 @@ export default abstract class BaseEditor extends BasePage { if (equationBox && editDivBox) { await this.page.mouse.move(equationBox.x + equationBox.width / 2, equationBox.y + equationBox.height / 2) - //await this.page.mouse.click(equationBox.x + equationBox.width / 2, equationBox.y + equationBox.height / 2) await this.pause(500) await this.page.mouse.down() await this.pause(500) - await this.page.mouse.move(editDivBox.x, editDivBox.y) + await this.page.mouse.move( + isCkeditor5Firefox ? editDivBox.x + 5 : editDivBox.x, + isCkeditor5Firefox ? editDivBox.y + 5 : editDivBox.y + ) await this.pause(500) await this.page.mouse.up() } diff --git a/tests/e2e/tests/editor/copy_cut_drop.spec.ts b/tests/e2e/tests/editor/copy_cut_drop.spec.ts index 293e06cf9..e8efbdfdb 100644 --- a/tests/e2e/tests/editor/copy_cut_drop.spec.ts +++ b/tests/e2e/tests/editor/copy_cut_drop.spec.ts @@ -12,7 +12,7 @@ for (const editorName of editors) { // TODO: review some flaky tests }, () => { test(`MTHTML-95 Copy-paste math formula with ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(Toolbar.MATH) @@ -24,7 +24,7 @@ for (const editorName of editors) { // TODO: review some flaky tests await editor.copyAllEditorContent() await editor.clear() await editor.paste() - + const equationsInHTMLEditor = await editor.getEquations() const isEquationCopied = equationsInHTMLEditor.every((equation: Equation) => equation.altText === Equations.singleNumber.altText) && (equationsInHTMLEditor.length === 1) expect(isEquationCopied).toBeTruthy() @@ -32,7 +32,7 @@ for (const editorName of editors) { // TODO: review some flaky tests test(`MTHTML-96 Cut-paste math formula with ${editorName} editor`, async ({ page }) => { const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() await editor.openWirisEditor(Toolbar.MATH) @@ -43,22 +43,15 @@ for (const editorName of editors) { // TODO: review some flaky tests await editor.cutAllEditorContent() await editor.paste() - + const equationsInHTMLEditor = await editor.getEquations() const isEquationCut = equationsInHTMLEditor.every((equation: Equation) => equation.altText === Equations.singleNumber.altText) && (equationsInHTMLEditor.length === 1) expect(isEquationCut).toBeTruthy() }) test(`MTHTML-86 Drag-drop math formula with ${editorName} editor`, async ({ page }) => { - test.fixme((editorName === 'ckeditor5' || editorName === 'generic') && test.info().project.name === 'firefox', `Drag and drop not working for ${editorName} in Firefox`) // TODO: fix drag and drop in Firefox for ckeditor5 and generic editor - - const unsupportedEditors = ['ckeditor4', 'tinymce5', 'tinymce6', 'tinymce7', 'tinymce8'] // WIP - - // Skip test for unsupported editors - test.skip(unsupportedEditors.includes(editorName), `Drag and drop not supported for ${editorName}`) - const { editor, wirisEditor } = await setupEditor(page, editorName) - + await editor.open() await editor.clear() const textToType = 'The equation will be relocated from after this text to before it' @@ -75,4 +68,4 @@ for (const editorName of editors) { // TODO: review some flaky tests expect(isTextAfterEquation).toBeTruthy() }) }) -} \ No newline at end of file +}