diff --git a/.github/workflows/badges.yml b/.github/workflows/badges.yml index fe92b29d..86e90492 100644 --- a/.github/workflows/badges.yml +++ b/.github/workflows/badges.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v3 - name: Update version badges 🏷 - run: npx -p dependency-version-badge update-badge typescript eslint cypress vite prettier + run: npx -p dependency-version-badge update-badge typescript eslint vitest vite - name: Commit any changed files 💾 uses: stefanzweifel/git-auto-commit-action@v4 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 601efa50..581d3796 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,12 +19,16 @@ jobs: - name: Install Dependencies run: pnpm install --no-frozen-lockfile - - name: Install Cypress - run: npx cypress install + - name: Install Playwright + run: pnpm exec playwright install + + - name: Lint + run: pnpm lint - name: Build - run: pnpm build # includes lint - - name: Build + run: pnpm build + + - name: ViTst run: pnpm test - name: Upload coverage report to coveralls.io... diff --git a/.gitignore b/.gitignore index 48a98942..1065ea0e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,7 @@ .npmignore .nyc_output +package-lock.json node_modules experiments coverage -cypress/videos -cypress/screenshots -cypress/coverage -cypress/instrumented \ No newline at end of file +test/__screenshots__ \ No newline at end of file diff --git a/.npmignore b/.npmignore index 16a40f1b..35c7fe3c 100644 --- a/.npmignore +++ b/.npmignore @@ -1,11 +1,9 @@ .github .gitignore .nyc_output +package-lock.json node_modules experiments docs coverage -cypress/videos -cypress/screenshots -cypress/coverage -cypress/instrumented \ No newline at end of file +test/__screenshots__ \ No newline at end of file diff --git a/README.md b/README.md index 058622b1..efb547ec 100644 --- a/README.md +++ b/README.md @@ -3,11 +3,10 @@ [![ci](https://github.com/thednp/bootstrap.native/actions/workflows/ci.yml/badge.svg)](https://github.com/thednp/bootstrap.native/actions/workflows/ci.yml) [![NPM Version](https://img.shields.io/npm/v/bootstrap.native.svg)](https://www.npmjs.com/package/bootstrap.native) [![jsDeliver](https://img.shields.io/jsdelivr/npm/hw/bootstrap.native)](https://www.jsdelivr.com/package/npm/bootstrap.native) -[![typescript version](https://img.shields.io/badge/typescript-5.5.3-brightgreen)](https://www.typescriptlang.org/) -[![eslint version](https://img.shields.io/badge/eslint-8.57.0-brightgreen)](https://github.com/eslint) -[![cypress version](https://img.shields.io/badge/cypress-13.13.1-brightgreen)](https://www.cypress.io/) -[![vite version](https://img.shields.io/badge/vite-5.3.4-brightgreen)](https://vitejs.dev/) -[![prettier version](https://img.shields.io/badge/prettier-2.8.8-brightgreen)](https://prettier.io/) +[![typescript version](https://img.shields.io/badge/typescript-5.6.3-brightgreen)](https://www.typescriptlang.org/) +[![eslint version](https://img.shields.io/badge/eslint-8.57.1-brightgreen)](https://github.com/eslint) +[![vitest version](https://img.shields.io/badge/vitest-2.1.3-brightgreen)](https://vitest.dev/) +[![vite version](https://img.shields.io/badge/vite-5.4.10-brightgreen)](https://vitejs.dev/) The faster, lighter and more compact set of JavaScript components for **Bootstrap 5**, sourced with TypeScript and free from major dependecies such as jQuery, Popper. diff --git a/cypress.config.ts b/cypress.config.ts deleted file mode 100644 index d9ac8c70..00000000 --- a/cypress.config.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { defineConfig } from 'cypress'; -import createBundler from '@bahmutov/cypress-esbuild-preprocessor'; -import createEsbuildIstanbulPlugin from './cypress/plugins/esbuild-istanbul'; -import coverage from '@cypress/code-coverage/task'; - -async function setupNodeEvents( - on: Cypress.PluginEvents, - config: Cypress.PluginConfigOptions, -): Promise { - await coverage(on, config); - - on( - 'file:preprocessor', - createBundler({ - plugins: [createEsbuildIstanbulPlugin()], - }), - ); - - // Make sure to return the config object as it might have been modified by the plugin. - return config; -} - -export default defineConfig({ - e2e: { - specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', - supportFile: 'cypress/support/e2e.ts', - video: false, - setupNodeEvents, - }, -}); diff --git a/cypress/alert.html b/cypress/alert.html deleted file mode 100644 index 3576d482..00000000 --- a/cypress/alert.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - BSN Testing Page - - - -

Alert Examples

- - - diff --git a/cypress/button.html b/cypress/button.html deleted file mode 100644 index 065f4de2..00000000 --- a/cypress/button.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - BSN Testing Page - - - -

Button Example

- - - diff --git a/cypress/carousel.html b/cypress/carousel.html deleted file mode 100644 index 5f61ee6e..00000000 --- a/cypress/carousel.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - BSN Testing Page - - - - - -

Carousel Example

- - - - diff --git a/cypress/collapse.html b/cypress/collapse.html deleted file mode 100644 index 0c1ad423..00000000 --- a/cypress/collapse.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - BSN Testing Page - - - - -

Collapse Example

-

- - - HREF - - - -

-
-
- Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim - keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. -
-
- -

Accordion Example

-
-
-

- -

-
-
- This is the first item's accordion body. It is hidden by default, until the collapse plugin adds - the appropriate classes that we use to style each element. These classes control the overall appearance, as well - as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. - It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate - classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS - transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about - any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
-

- -

-
-
- This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate - classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS - transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about - any HTML can go within the .accordion-body, though the transition does limit overflow. -
-
-
-
- - diff --git a/cypress/dropdown.html b/cypress/dropdown.html deleted file mode 100644 index 8ad06f8d..00000000 --- a/cypress/dropdown.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - BSN Testing Page - - - - -

Dropdown Examples

-
- - -
- - -
-
- - -
-
- - diff --git a/cypress/e2e/alert.cy.ts b/cypress/e2e/alert.cy.ts deleted file mode 100644 index 70ccd085..00000000 --- a/cypress/e2e/alert.cy.ts +++ /dev/null @@ -1,96 +0,0 @@ -/// -import Alert from '../../src/components/alert'; - -describe('Alert Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/alert.html'); - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Alert(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', 'Alert Error: your target is not an instance of HTMLElement.'); - } - }); - - it('Init with wrong selector - throws error', () => { - const selector = 'wombat'; - try { - // @ts-ignore - new Alert(selector); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Alert Error: "${selector}" is not a valid selector.`); - } - }); - - it('Init with target element', () => { - cy.get('[data-cy="alert"]').then($element => { - const element = $element[0]; - const instance = new Alert(element); - expect(instance.element).to.equal(element); - expect(instance.name).to.eq('Alert'); - expect(instance.options).to.be.empty; - expect(instance.defaults).to.be.empty; - expect(instance.version).to.be.string; - expect(Alert.getInstance(element)).to.be.instanceOf(Alert); - }); - }); - - it('Can do close() - removes target from DOM', () => { - cy.get('[data-cy="alert"]') - .then($element => { - Alert.init($element[0]); - cy.wrap(Alert.init($element[0])).as('instance'); - }) - cy.get('@instance').invoke('close') - .then(() => { - cy.get('[data-cy="alert"]').should('not.exist'); - }); - }); - - it('Can do dispose() - keeps target in DOM', () => { - cy.get('[data-cy="alert"]') - .then($element => { - const instance = new Alert($element[0]); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').invoke('dispose') - // .then(() => { - cy.get('[data-cy="alert"]').should('exist'); - // }) - cy.get('@instance').its('element').should('be.undefined'); - }); - - it('Can be dismissed via click', () => { - cy.get('[data-cy="alert"]') - .then($element => { - const element = $element[0]; - element.classList.remove('fade'); - const instance = new Alert(element); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').its('dismiss').invoke('click'); - cy.get('[data-cy="alert"]').should('not.exist'); - }); - - it('CustomEvent can be prevented', () => { - cy.get('[data-cy="alert"]') - .then($element => { - const element = $element[0]; - const instance = new Alert(element); - element.addEventListener('close.bs.alert', function (e) { - if (element.innerText.includes('Holy')) { - e.preventDefault(); - } - }); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').invoke('close') - cy.get('[data-cy="alert"]').should('exist'); - }); -}); diff --git a/cypress/e2e/button.cy.ts b/cypress/e2e/button.cy.ts deleted file mode 100644 index 2aec5e75..00000000 --- a/cypress/e2e/button.cy.ts +++ /dev/null @@ -1,97 +0,0 @@ -/// -import Button from '../../src/components/button'; - -describe('Button Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/button.html'); - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Button(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Button Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can do toggle()', () => { - cy.window() - .then(win => { - cy.get('[data-cy="button"]').then($element => { - const element = $element[0]; - const instance = Button.init(element); - expect(instance.element, 'element').to.be.instanceOf(win.HTMLButtonElement); - expect(instance.element, 'element').to.equal(element); - expect(instance.element, 'element').to.not.have.class('active'); - expect(instance.name, 'name').to.eq('Button'); - expect(instance.isActive, 'isActive').to.be.false; - expect(instance.options, 'options').to.be.empty; - expect(instance.defaults, 'defaults').to.be.empty; - expect(instance.version, 'version').to.be.string; - expect(Button.getInstance(element)).to.be.instanceOf(Button); - - cy.wrap(instance).as('instance'); - }); - }) - .invoke('toggle') - .get('@instance').its('isActive').should('be.true') - .get('@instance').its('element').should('have.class', 'active') - .get('@instance').invoke('toggle') - .get('@instance').its('isActive').should('be.false') - .get('@instance').its('element').should('not.have.class', 'active'); - }); - - it('Can handle click()', () => { - cy.get('[data-cy="button"]') - .then($element => { - const element = $element[0]; - const instance = new Button(element); - cy.wrap(instance).as('instance'); - }) - .get('@instance') - .its('element') - .then(element => { - cy.wrap(element).click(); - cy.get('@instance').its('isActive').should('be.true'); - cy.get('@instance').its('element').should('have.class', 'active'); - }); - }); - - it('Can handle disabled elements', () => { - cy.get('[data-cy="button"]') - .then($element => { - const element = $element[0]; - element.setAttribute('disabled', 'true'); - element.classList.add('disabled'); - const instance = new Button(element); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').its('element').invoke('click'); - cy.get('@instance').its('element').should('not.have.class', 'active'); - cy.get('@instance').invoke('toggle'); - cy.get('@instance').its('element').should('not.have.class', 'active'); - }); - - it('Can dispose()', () => { - cy.get('[data-cy="button"]') - .then($element => { - const element = $element[0]; - const instance = new Button(element); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').should('be.instanceOf', Button) - .and(instance => { - // @ts-ignore - instance.dispose(); - }) - cy.get('@instance').its('element').should('be.undefined') - cy.get('@instance').its('active').should('be.undefined') - cy.get('@instance').its('toggle').should('be.undefined') - .then(() => { - cy.log(`Button can do nothing now with this **instance**`); - }); - }); -}); diff --git a/cypress/e2e/carousel.cy.ts b/cypress/e2e/carousel.cy.ts deleted file mode 100644 index 3d43b406..00000000 --- a/cypress/e2e/carousel.cy.ts +++ /dev/null @@ -1,495 +0,0 @@ -/// - -import Carousel from '../../src/components/carousel'; -import { CarouselEvent } from '../../src/interface/carousel'; -import changeDirection from '../fixtures/changeDirection'; -import selectText from '../fixtures/selectText'; - -describe('Carousel Class Tests', () => { - - beforeEach(() => { - cy.clock(); - cy.visit('cypress/carousel.html'); - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Carousel(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Carousel Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can initialize with default options', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - // init only with 2 slides - [...element.getElementsByClassName('carousel-item')].slice(-1)[0].remove(); - [...element.querySelectorAll('[data-bs-slide-to]')].slice(-1)[0].remove(); - element.classList.remove('slide'); - - Object.keys({...element.dataset}).forEach((key) => { - if (key.includes('bs')) { - const K = key.replace('bs', '').toLowerCase(); - element.removeAttribute(`data-bs-${K}`); - } - }) - - const instance = Carousel.init(element); - cy.wrap(instance).as('instance'); - }) - .get('@instance').should('be.instanceOf', Carousel) - .get('@instance').its('element').should('be.visible') - .get('@instance').its('name').should('eq', 'Carousel') - .get('@instance').its('slides').should('have.length', 2) - .get('@instance').its('options').should('not.be.empty').and('deep.equal', {touch: true, interval: 5000, pause: 'hover', keyboard: false}) - .get('@instance').its('defaults').should('deep.equal', {touch: true, interval: 5000, pause: 'hover', keyboard: false}) - .get('@instance').its('version').should('not.be.empty').and('have.length.greaterThan', 0) - }); - - it('Can invalidate with only 1 item or less', () => { - cy.window().then((win) => { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - // init only with 1 slides - [...element.getElementsByClassName('carousel-item')].slice(-2).map(s => s.remove()); - [...element.querySelectorAll('[data-bs-slide-to]')].slice(-2).map(u => u.remove()); - - const instance = Carousel.init(element); - cy.wrap(instance).as('instance'); - }) - .get('@instance').should('be.instanceOf', Carousel) - .get('@instance').its('element').should('be.instanceOf', win.HTMLDivElement) - .get('@instance').its('element').find('.carousel-item').eq(0).should('be.hidden') - .get('@instance').its('controls').should('be.undefined') - .get('@instance').its('indicators').should('be.undefined') - }); - }); - - it('Can initialize via DATA API', () => { - cy.window().then((win) => { - cy.clock(); - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - element.setAttribute('data-bs-interval', '200'); - - const instance = Carousel.init(element); - cy.wrap(instance).as('instance'); - }) - .get('@instance').should('be.instanceOf', Carousel) - .get('@instance').its('element').should('be.instanceOf', win.HTMLDivElement).and('be.visible') - .get('@instance').its('name').should('eq', 'Carousel') - .get('@instance').its('options').should('not.be.empty').and('deep.equal', {touch: true, interval: 200, pause: 'hover', keyboard: true}) - .get('@instance').its('slides').should('have.length', 3) - .get('@instance').its('defaults').should('not.be.undefined') - .get('@instance').its('version').should('not.be.empty').and('have.length.greaterThan', 0); - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - }); - }); - - it('Can initialize via JavaScript API', function() { - cy.get('[data-cy="carousel"]').then(function($element) { - const element = $element[0]; - - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: 200 - }); - cy.wrap(instance).as('instance'); - }) - cy.clock(); - cy.get('@instance').its('options').should('deep.equal', { touch: false, interval: 200, pause: false, keyboard: false }); - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - }); - - it('Can work without transition', function() { - cy.get('[data-cy="carousel"]').then(function($element) { - const element = $element[0]; - element.classList.remove('slide'); - - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: 200 - }); - cy.wrap(instance).as('instance'); - }); - cy.clock(); // must be off-chain - cy.get('@instance').its('options').should('deep.equal', { touch: false, interval: 200, pause: false, keyboard: false }); - cy.tick(210); // must be off-chain - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - cy.tick(210); // same here - cy.get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active'); - cy.get('@instance').invoke('pause'); - }); - - it('Can do to(), cycle(), next(), prev()', function() { - cy.get('[data-cy="carousel"]').then(function($element) { - const element = $element[0]; - - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: false - }); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').its('options').should('deep.equal', { touch: false, interval: false, pause: false, keyboard: false }) - .get('@instance').invoke('to', 1) - .get('@instance').invoke('to', 1) // must be protected from SPAM - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('@instance').invoke('cycle') - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .get('@instance').invoke('next') - .get('@instance').invoke('next') // must be rotected from SPAM - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('@instance').invoke('prev') - .get('@instance').invoke('prev') // same here - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - }); - - it('Can do pause(), cycle()', function() { - cy.get('[data-cy="carousel"]').then(function($element) { - const element = $element[0]; - - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: 200 - }); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').invoke('pause') - .get('@instance').invoke('pause') // should be protected from SPAM - .get('@instance').its('isPaused').should('be.true') - .get('@instance').invoke('cycle') - .get('@instance').invoke('cycle') // should be protected from SPAM - .get('@instance').its('isPaused').should('be.false') - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('@instance').invoke('pause') - }); - - it('Can do page navigation', function() { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: false - }); - cy.wrap(instance).as('instance'); - }); - cy.get('@instance').its('element').find('[data-bs-slide-to]').eq(0).click() - .get('@instance').its('element').find('[data-bs-slide-to]').eq(0).click() // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('@instance').its('element').find('[data-bs-slide-to]').eq(2).click() - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .get('@instance').its('element').find('[data-bs-slide-to]').eq(1).click() - .get('@instance').its('element').find('[data-bs-slide-to]').eq(2).click() // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - }); - - it('Can do arrow navigation', function() { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - const instance = new Carousel(element, { - touch: false, - keyboard: false, - pause: false, - interval: false - }); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').its('element').find('[data-bs-slide]').eq(0).click() - cy.get('@instance').its('element').find('[data-bs-slide]').eq(0).click() // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - cy.get('@instance').its('element').find('[data-bs-slide]').eq(1).click() - cy.get('@instance').its('element').find('[data-bs-slide]').eq(1).click() // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('@instance').its('element').find('[data-bs-slide]').eq(1).click() - .get('@instance').its('element').find('[data-bs-slide]').eq(1).click() // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - }); - - it('Can do pointer navigation', function() { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - - // init and wtap - const instance = new Carousel(element, { - touch: true, - keyboard: false, - pause: false, - interval: false - }); - cy.wrap(instance).as('instance'); - }) - .get('[data-cy="carousel"]') - .trigger('pointerdown', 530, 250) - .trigger('pointermove', 150, 250) - .trigger('pointerup', 150, 250) - .trigger('pointerdown', 530, 250) // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('[data-cy="carousel"]') - .trigger('pointerdown', 330, 250) - .trigger('pointermove', 550, 250) - .trigger('pointerup', 550, 250) - .trigger('pointerdown', 430, 250) // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('[data-cy="carousel"]').find('[data-bs-slide]').eq(1).trigger('pointerdown') // test SPAM protection - .get('[data-cy="carousel"]').find('[data-bs-slide-to]').eq(2).trigger('pointerdown') // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active'); - - // edge case 1 - cy.log('transition can be prevented when text is **selected**').then(() => { - cy.get('@instance').its('element').find('.carousel-item').eq(0).then(($item) => { - selectText($item[0]); - }); - cy.clock() - cy.get('[data-cy="carousel"]') - .trigger('pointerdown', 150, 400) - .trigger('pointermove', 350, 430) - .trigger('pointerup', 350, 430); - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(2).should('not.have.class', 'active') - .document().then(($el) => { - $el.getSelection()?.removeAllRanges() - }); - }); - - // edge case 2 - cy.log('transition can be prevented when **event.target** is out of context').then(() => { - cy.get('[data-cy="carousel"]').trigger('pointerdown', 150, 400) - .get('body').trigger('pointermove', 550, 20) - .get('body').trigger('pointerup', 550, 20) - .get('[data-cy="carousel"]').find('.carousel-item').eq(0).should('have.class', 'active') - }) - - }); - - it('Can do keyboard navigation', function() { - cy.get('[data-cy="carousel"]').then(($element) => { - // init and wrap - cy.wrap(new Carousel($element[0], { - touch: false, - keyboard: true, - pause: false, - interval: false - })).as('instance'); - }) - .document().trigger('keydown', { code: 'ArrowRight' }) - .document().trigger('keydown', { code: 'ArrowRight', force: true }) // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .document().trigger('keydown', { code: 'ArrowRight' }) - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .document().trigger('keydown', { code: 'ArrowLeft' }) - .document().trigger('keydown', { code: 'ArrowLeft', force: true }) // test SPAM protection - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active'); - }); - - it('Can be paused via "hover"', () => { - cy.clock(); - cy.get('[data-cy="carousel"]').then(($element) => { - cy.wrap(new Carousel($element[0], { - pause: 'hover', - interval: 200 - })).as('instance'); - }); - cy.get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - cy.get('[data-cy="carousel"]').trigger('mouseenter') - cy.get('@instance').its('element').should('have.class', 'paused') - cy.get('[data-cy="carousel"]').trigger('mouseleave') - cy.get('@instance').its('element').should('not.have.class', 'paused') - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - cy.get('@instance').invoke('pause'); - - }); - - it('Can prevent transition when out of viewport', () => { - cy.clock(); - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - // make window overflow - const body = element.ownerDocument.body; - Object.assign(body.style, {paddingBottom: '110vh'}); - // init and wrap - cy.wrap(new Carousel(element, { interval: 200 })).as('instance'); - }); - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - cy.get('@instance').invoke('pause') - cy.scrollTo('bottom'); - cy.get('@instance').invoke('cycle') - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - cy.tick(200); - cy.get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - }); - - it('Can work with controls outside element context', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - const { body } = element.ownerDocument; - - // move controls outside context - [...element.querySelectorAll('[data-bs-slide]'), ...element.querySelectorAll('[data-bs-slide-to]')] - .forEach((control, i, arr) => { - const button = document.createElement('button'); - const target = control.getAttribute('href') || control.getAttribute('data-bs-target'); - const bsSlide = control.getAttribute('data-bs-slide'); - const bsSlideTo = control.getAttribute('data-bs-slide-to'); - button.className = 'btn btn-outline-secondary mt-3 me-2'; - button.setAttribute('data-bs-target', target as string); - if (bsSlide) { - button.setAttribute('data-bs-slide', bsSlide); - button.innerText = bsSlide.toUpperCase(); - } else { - button.setAttribute('data-bs-slide-to', bsSlideTo as string); - button.innerText = bsSlideTo as string; - } - body.append(button); - - if (i === arr.length - 1 && control.parentElement) { - control.parentElement.remove(); - } else { - control.remove(); - } - }); - - const instance = new Carousel(element, { interval: false }); - cy.wrap(instance).as('instance'); - }) - .get('button').eq(0).click() - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .get('button').eq(1).click() - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('button').eq(4).click() - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .get('button').eq(3).click() - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('button').eq(2).click() - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - }); - - it('Can work in RTL mode', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - changeDirection(element, 'rtl'); - cy.wrap(new Carousel(element, { interval: false })).as('instance'); - }) - .get('@instance').its('element').find('[data-bs-slide]').eq(1).click() - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('@instance').its('element').find('[data-bs-slide]').eq(0).click() - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - - .document().trigger('keydown', { code: 'ArrowRight' }) // -1 - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - .document().trigger('keydown', { code: 'ArrowRight' }) // -1 - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .document().trigger('keydown', { code: 'ArrowLeft' }) // +1 - .get('@instance').its('element').find('.carousel-item').eq(2).should('have.class', 'active') - - .get('[data-cy="carousel"]').trigger('pointerdown', 150, 300) // +1 - .get('[data-cy="carousel"]').trigger('pointermove', 550, 400) - .get('[data-cy="carousel"]').trigger('pointerup', 550, 400) - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - .get('[data-cy="carousel"]').trigger('pointerdown', 150, 300) // +1 - .get('[data-cy="carousel"]').trigger('pointermove', 550, 400) - .get('[data-cy="carousel"]').trigger('pointerup', 550, 400) - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('[data-cy="carousel"]').trigger('pointerdown', 550, 300) // -1 - .get('[data-cy="carousel"]').trigger('pointermove', 150, 400) - .get('[data-cy="carousel"]').trigger('pointerup', 150, 400) - .get('@instance').its('element').find('.carousel-item').eq(0).should('have.class', 'active') - }); - - it('Can prevent drag and touch events', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - const [element] = $element; - const instance = new Carousel(element, { interval: false }); - - element.addEventListener('dragstart', function handle(e) { - console.log('dragstart ' + e.target + ' is prevented'); - }); - element.addEventListener('touchstart', function handle(e) { - console.log('touchstart ' + e.target + ' is prevented'); - }); - - cy.wrap(instance).as('instance'); - }) - cy.get('[data-cy="carousel"]').trigger('touchstart', { force: true }) - cy.get('@instance').its('element').should('not.have.class', 'paused') - cy.get('[data-cy="carousel"]').trigger('dragstart', { force: true }) - cy.get('@instance').its('element').should('not.have.class', 'paused') - }) - - it('Can do original event', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - const element = $element[0]; - const instance = new Carousel(element, { interval: false }); - - element.addEventListener('slide.bs.carousel', function handle(e) { - // @ts-ignore - if (e.from === 0) { - // @ts-ignore - console.log('slide from 0 to ' + e.to + ' is allowed'); - } else { - // @ts-ignore - console.log('slide from ' + e.from + ' to ' + e.to + ' is prevented'); - e.preventDefault() - } - }); - element.addEventListener('slid.bs.carousel', function handle(e) { - // @ts-ignore - console.log('slid from 0 to ' + e.to + ' is triggered'); - }); - - cy.wrap(instance).as('instance'); - }) - .get('@instance').invoke('next') - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - .get('@instance').invoke('next') - .get('@instance').its('element').find('.carousel-item').eq(1).should('have.class', 'active') - }); - - it('Can dispose()', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - cy.wrap(new Carousel($element[0], { interval: true })).as('instance'); - }); - cy.get('@instance').invoke('next') - cy.wait(200) - // @ts-ignore - cy.get('@instance').should('be.instanceOf', Carousel).should(instance => instance.dispose()); - cy.get('@instance').its('element').should('be.undefined') - cy.get('@instance').its('slides').should('be.undefined') - cy.get('@instance').its('controls').should('be.undefined') - cy.get('@instance').its('indicators').should('be.undefined') - }); - - it('Can re-init while animating', () => { - cy.get('[data-cy="carousel"]').then(($element) => { - cy.wrap(new Carousel($element[0], { interval: false })).then(e => { - // console.log(e) - e.next(); - const newInstance = new Carousel($element[0]); - expect(newInstance.element).not.to.be.undefined; - expect(e.element).to.be.eq(newInstance.element); - }) - }) - }); -}); diff --git a/cypress/e2e/collapse.cy.ts b/cypress/e2e/collapse.cy.ts deleted file mode 100644 index b5a91d46..00000000 --- a/cypress/e2e/collapse.cy.ts +++ /dev/null @@ -1,121 +0,0 @@ -/// -import Collapse from '../../src/components/collapse'; - -describe('Collapse Class Tests', () => { - - beforeEach(() => { - cy.visit('cypress/collapse.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Collapse(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Collapse Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can initialize all instances in the page and toggle()', () => { - cy.get('.collapse').each(($element, i) => { - const element = $element[0]; - const instance = Collapse.init(element); - expect(instance.element, 'element').to.exist; - expect(instance.element, 'element').to.equal(element); - expect(instance.name, 'name').to.eq('Collapse'); - if (!i) { - expect(instance.triggers, 'triggers').to.have.length(2); - expect(instance.options, 'options').to.deep.equal({parent: null}); - expect(instance.parent, 'parent').to.be.null; - } else { - expect(instance.triggers, 'triggers').to.have.length(1); - expect(instance.options, 'options').to.deep.equal({parent: '.accordion'}); - expect(instance.parent?.nodeType, 'parent').to.equal(1); - } - expect(instance.defaults, 'defaults').to.deep.equal({parent: null}); - expect(instance.version, 'version').to.be.string; - cy.wrap(instance).as('instance' + i); - }) - cy.get('@instance0').invoke('toggle') - .get('@instance0').invoke('toggle') // must be SPAM protected - cy.get('#collapseExample').should('be.visible').and('have.class', 'show') - cy.get('@instance0').invoke('toggle') - cy.get('@instance0').invoke('toggle') // must be SPAM protected - cy.get('#collapseExample').should('be.hidden').and('not.have.class', 'show') - cy.get('@instance1').invoke('toggle') - cy.get('@instance2').invoke('toggle') // must be SPAM protected - cy.get('#collapseOne').should('be.visible').should('have.class', 'show') - cy.get('@instance3').invoke('toggle') - cy.get('#collapseOne').should('not.have.class', 'show') - cy.get('#collapseThree').should('have.class', 'show') - cy.get('@instance3').invoke('hide') - cy.get('@instance3').invoke('hide') // must be SPAM protected - cy.get('#collapseThree').should('not.have.class', 'show') - }); - - it('Can handle click', () => { - cy.get('.collapse').each(($element, i) => { - const element = $element[0]; - const instance = Collapse.init(element); - cy.wrap(instance).as('instance' + i); - }) - .get('[href="#collapseExample"]').click() - .get('[data-bs-target="#collapseExample"]').click() // must be SPAM protected - .get('#collapseExample').should('have.class', 'show') - .get('[data-bs-target="#collapseOne"]').click() - .get('#collapseOne').should('not.have.class', 'show'); - }); - - it('Can do original events', () => { - cy.get('.collapse').eq(0).then(($element) => { - const element = $element[0]; - const doc = element.ownerDocument; - const instance = new Collapse(element); - - element.addEventListener('show.bs.collapse', function handle(e) { - if (instance.triggers[0] === doc.activeElement) { - console.log('show fired for and is allowed'); - } else { - console.log('show fired for and is prevented'); - e.preventDefault() - } - }); - element.addEventListener('shown.bs.collapse', function handle(e) { - console.log('shown was triggered'); - }); - element.addEventListener('hide.bs.collapse', function handle(e) { - if (instance.triggers[1] === doc.activeElement) { - console.log('hide fired for and is allowed'); - } else { - console.log('hidden fired for and is prevented'); - e.preventDefault() - } - }); - element.addEventListener('hidden.bs.collapse', function handle(e) { - console.log('hidden was triggered'); - }); - - cy.wrap(instance).as('instance'); - }) - cy.get('[data-bs-target="#collapseExample"]').click() - .get('#collapseExample').should('not.have.class', 'show') - cy.get('@instance').invoke('show') - .get('[href="#collapseExample"]').click() - .get('@instance').invoke('hide') - cy.get('#collapseExample').should('not.have.class', 'show') - }); - - it('Can dispose()', () => { - cy.get('.collapse').eq(0).then(($element) => { - const element = $element[0]; - const instance = new Collapse(element); - instance.dispose(); - expect(instance.element, 'element').to.be.undefined; - expect(instance.triggers, 'triggers').to.be.undefined; - expect(instance.options, 'options').to.be.undefined; - expect(instance.parent, 'parent').to.be.undefined; - }) - }); -}); \ No newline at end of file diff --git a/cypress/e2e/dropdown.cy.ts b/cypress/e2e/dropdown.cy.ts deleted file mode 100644 index dee758c8..00000000 --- a/cypress/e2e/dropdown.cy.ts +++ /dev/null @@ -1,563 +0,0 @@ -/// -import Dropdown from '../../src/components/dropdown'; - -import changeDirection from '../fixtures/changeDirection'; - -const bodyPads = { - top: {paddingTop: '35vh', paddingBottom: '70vh'}, - bottom: {paddingTop: '70vh', paddingBottom: '35vh'}, - left: {paddingLeft: '22vw', paddingRight: '90vw'}, - right: {paddingLeft: '90vw', paddingRight: '22vw'}, -} -const toolbarPositions = { - start: 'btn-toolbar', - middle: 'btn-toolbar justify-content-center', - end: 'btn-toolbar justify-content-end', -} - -describe('Dropdown Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/dropdown.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Dropdown(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Dropdown Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can discontinue when no menu is provided', () => { - cy.get('[data-bs-toggle="dropdown"]').last().then($element => { - const element = $element[0]; - element.parentElement?.querySelector('.dropdown-menu')?.remove(); - const instance = Dropdown.init(element); - expect(instance.element, 'element').to.equal(element); - expect(instance.menu, 'menu').to.not.exist; - }); - }); - - it('Can do toggle()', () => { - cy.get('[data-bs-toggle="dropdown"]').each(($element, i) => { - const element = $element[0]; - const instance = Dropdown.init(element); - expect(instance.element, 'element').to.equal(element); - expect(instance.menu, 'menu').to.exist; - expect(instance.parentElement, 'parentElement').to.exist; - - expect(instance.name, 'name').to.eq('Dropdown'); - expect(instance.options, 'options').to.deep.equal({ display: 'dynamic', offset: 5 }) - expect(instance.defaults, 'defaults').to.deep.equal({ display: 'dynamic', offset: 5 }); - expect(instance.version, 'version').to.be.string; - cy.wrap(instance).as('instance' + i); - }) - .get('@instance0').invoke('toggle') - .get('@instance0').its('menu').should('have.class', 'show') - .get('@instance1').invoke('toggle') - .get('@instance1').its('menu').should('have.class', 'show') - .get('@instance0').its('menu').should('not.have.class', 'show') - }); - - it('Can handle keyboard navigation', () => { - cy.log('can work with a **simple** markup') - .get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - cy.wrap(new Dropdown($element[0])).as('instance1'); - }) - cy.get('#dropdownMenuButton').click() - .document().trigger('keydown', { code: 'ArrowUp' }) // additional code covered - .document().trigger('keyup', { code: 'ArrowUp' }) // additional code covered - .get('@instance1').its('menu').should('have.class', 'show') - .wait(17) // wait for the dropdown to show - .get('@instance1').its('menu').find('.dropdown-item').eq(0).focus() - .document().trigger('keydown', { code: 'ArrowUp' }) - .document().trigger('keyup', { code: 'ArrowUp' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(0).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(1).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(2).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(3).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(4).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance1').its('menu').find('.dropdown-item').eq(4).should('be.focused') - - cy.log('can work with a **list** markup') - .get('[data-bs-toggle="dropdown"]').eq(3).then(($element) => { - cy.wrap(new Dropdown($element[0])).as('instance3'); - }) - .get('[data-bs-toggle="dropdown"]').eq(3).click() - .get('@instance3').its('menu').should('have.class', 'show') - .wait(17) // wait for the dropdown to show - .get('@instance3').its('menu').find('.dropdown-item').eq(0).focus() - .document().trigger('keydown', { code: 'ArrowUp' }) - .document().trigger('keyup', { code: 'ArrowUp' }) - .get('@instance3').its('menu').find('.dropdown-item').eq(0).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance3').its('menu').find('.dropdown-item').eq(1).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance3').its('menu').find('.dropdown-item').eq(2).should('be.focused') - .document().trigger('keydown', { code: 'ArrowDown' }) - .document().trigger('keyup', { code: 'ArrowDown' }) - .get('@instance3').its('menu').find('.dropdown-item').eq(2).should('be.focused') - }); - - it('Can be dismissed by keyboard', () => { - cy.get('[data-bs-toggle="dropdown"]').then(($element) => { - cy.wrap(new Dropdown($element[0])).as('keyboard'); - }) - cy.get('#dropdownButton4').click() - .get('#dropdownButton4').trigger('focus') // additional code to be covered - .get('@keyboard').its('menu').find('.dropdown-item,input').eq(0).trigger('focus') // additional code to be covered - .get('@keyboard').its('menu').should('have.class', 'show') - cy.document().trigger('keyup', { code: 'Escape' }) - .wait(100) - .get('@keyboard').its('menu').should('not.have.class', 'show').and('be.hidden') - .wait(300) - }); - - it('Can do automatic position on resize', () => { - cy.get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - const element = $element[0]; - const { body } = element.ownerDocument; - const h3 = body.querySelector('h3'); - const toolbar = body.querySelector('.btn-toolbar'); - h3?.classList.add('d-none'); - // @ts-ignore - toolbar.className = toolbarPositions.middle; - body.classList.remove('p-5'); - Object.assign(body.style, bodyPads.top); - - [...body.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { - if (i !== 1) d.parentElement?.classList.add('d-none'); - }); - - cy.log('test **dropstart** in **middle** position').then(() => { - element.parentElement?.classList.remove('dropup'); - element.parentElement?.classList.add('dropstart'); - element.innerText = 'Dropstart'; - - cy.wrap(new Dropdown(element)).as('dropstart_resize') - .get('@dropstart_resize').invoke('show') - .get('@dropstart_resize').its('menu').should('have.class', 'show') - .get('@dropstart_resize').its('menu.style.cssText').should('contain', 'left: auto') - cy.viewport(200, 660); - cy.wait(17); - cy.window().trigger('resize'); - cy.wait(50); - cy.get('@dropstart_resize').its('menu.style.cssText').should('contain', 'top: 100%') - cy.wait(200); - cy.viewport(1000, 660); - cy.window().trigger('resize'); - cy.get('@dropstart_resize').invoke('dispose') - cy.wait(100) - }) - - cy.log('test **dropend** in **middle** position').then(() => { - element.parentElement?.classList.remove('dropstart'); - element.parentElement?.classList.add('dropend'); - element.innerText = 'Dropend'; - - cy.wrap(new Dropdown(element)).as('dropend_resize') - .get('@dropend_resize').invoke('show') - .get('@dropend_resize').its('menu').should('have.class', 'show').and('be.visible') - .get('@dropend_resize').its('menu.style.cssText').should('contain', 'left: 100%') - // .and('contain', 'right: auto') - cy.wait(100); - cy.viewport(200, 660); - cy.wait(17); - cy.window().trigger('resize'); - cy.get('@dropend_resize').its('menu.style.cssText').should('contain', 'top: 100%') - cy.viewport(1000, 660); - cy.window().trigger('resize'); - cy.get('@dropend_resize').invoke('dispose') - cy.wait(200) - }) - }); - }); - - it('Can do automatic position on scroll', function() { - cy.get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - const element = $element[0]; - const body = element.ownerDocument.body; - const h3 = body.querySelector('h3'); - const toolbar = body.querySelector('.btn-toolbar'); - h3?.classList.add('d-none'); - body.classList.remove('p-5'); - - [...body.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { - if (i !== 1) d.parentElement?.classList.add('d-none'); - }); - - cy.log('test **dropup** in **topLeft** position').then(() => { - Object.assign(body.style, bodyPads.top); - - cy.wrap(new Dropdown(element)).as('dropup_topLeft'); - cy.get('@dropup_topLeft').invoke('show') - cy.get('@dropup_topLeft').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropup_topLeft').its('menu.style.cssText').should('contain', 'top: auto') - cy.wait(200) - cy.scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropup_topLeft').its('menu.style.cssText').should('contain', 'top: 100%') - cy.scrollTo('topLeft', {duration: 0}) - cy.get('@dropup_topLeft').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropdown** in **bottomLeft** position').then(() => { - Object.assign(body.style, bodyPads.bottom); - element.parentElement?.classList.remove('dropup'); - element.parentElement?.classList.add('dropdown'); - element.innerText = 'Dropdown'; - - cy.wrap(new Dropdown(element)).as('dropdown_bottomLeft'); - cy.get('@dropdown_bottomLeft').invoke('show') - cy.get('@dropdown_bottomLeft').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropdown_bottomLeft').its('menu.style.cssText').should('contain', 'top: auto') - cy.wait(200) - cy.scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_bottomLeft').its('menu.style.cssText').should('contain', 'top: 100%') - cy.scrollTo('topLeft', {duration: 0}) - cy.get('@dropdown_bottomLeft').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropdown** in **topRight** position').then(() => { - Object.assign(body.style, {paddingTop: '3rem', paddingBottom: '', paddingLeft: '95%', paddingRight: '10%'}); - // @ts-ignore - toolbar.className = toolbarPositions.end; - - cy.wrap(new Dropdown(element)).as('dropdown_topRight'); - cy.scrollTo('topRight', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_topRight').invoke('show') - cy.get('@dropdown_topRight').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropdown_topRight').its('menu.style.cssText').should('contain', 'top: 100%') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_topRight').its('menu.style.cssText').should('contain', 'right: 0px') - cy.wait(200) - cy.get('@dropdown_topRight').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropstart** in **topLeft** position').then(() => { - Object.assign(body.style, {...bodyPads.left, paddingTop: '3rem', paddingBottom: ''}); - element.parentElement?.classList.remove('dropdown'); - element.parentElement?.classList.add('dropstart'); - element.innerText = 'Dropstart'; - // @ts-ignore - toolbar.className = toolbarPositions.start; - - cy.wrap(new Dropdown(element)).as('dropstart_topLeft'); - cy.get('@dropstart_topLeft').invoke('show') - cy.get('@dropstart_topLeft').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropstart_topLeft').its('menu.style.cssText').should('contain', 'left: auto') - cy.wait(200) - cy.scrollTo('topRight', {duration: 0}) - cy.wait(200) - cy.get('@dropstart_topLeft').its('menu.style.cssText').should('contain', 'left: 100%') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.get('@dropstart_topLeft').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropend** in **topRight** position').then(() => { - Object.assign(body.style, {...bodyPads.right, paddingTop: '3rem', paddingBottom: ''}); - element.parentElement?.classList.remove('dropstart'); - element.parentElement?.classList.add('dropend'); - element.innerText = 'Dropend'; - // @ts-ignore - toolbar.className = toolbarPositions.end; - - cy.wrap(new Dropdown(element)).as('dropend_topRight'); - cy.get('@dropend_topRight').invoke('show') - cy.get('@dropend_topRight').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropend_topRight').its('menu.style.cssText').should('contain', 'left: auto') - cy.wait(200) - cy.scrollTo('topRight', {duration: 0}) - cy.wait(200) - cy.get('@dropend_topRight').its('menu.style.cssText').should('contain', 'left: 100%') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.get('@dropend_topRight').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropend** in **bottomLeft** position').then(() => { - Object.assign(body.style, {paddingLeft: '5rem', paddingRight: '', paddingTop: '85vh', paddingBottom: '25vh'}); - // @ts-ignore - toolbar.className = toolbarPositions.start; - - cy.wrap(new Dropdown(element)).as('dropend_bottomLeft'); - cy.scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropend_bottomLeft').invoke('show') - cy.get('@dropend_bottomLeft').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropend_bottomLeft').its('menu.style.cssText').should('not.contain', 'bottom: 0px') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropend_bottomLeft').its('menu.style.cssText').should('contain', 'inset: auto auto 0px 100%') - // .should('contain', 'bottom: 0px') - cy.wait(200) - cy.get('@dropend_bottomLeft').invoke('dispose') - cy.wait(200) - }); - }) - }); - - it('Can do automatic position on scroll RTL', function() { - cy.get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - const element = $element[0]; - changeDirection(element, 'rtl'); - const body = element.ownerDocument.body; - const h3 = body.querySelector('h3'); - const toolbar = body.querySelector('.btn-toolbar'); - h3?.classList.add('d-none'); - body.classList.remove('p-5'); - - [...body.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { - if (i !== 1) d.parentElement?.classList.add('d-none'); - }); - - cy.log('test **dropup** in **topLeft** position').then(() => { - Object.assign(body.style, bodyPads.top); - - cy.wrap(new Dropdown(element)).as('dropup_topLeft_rtl'); - cy.get('@dropup_topLeft_rtl').invoke('show') - cy.get('@dropup_topLeft_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropup_topLeft_rtl').its('menu.style.cssText').should('contain', 'top: auto') - cy.wait(200) - cy.scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropup_topLeft_rtl').its('menu.style.cssText').should('contain', 'top: 100%') - cy.scrollTo('topLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropup_topLeft_rtl').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropdown** in **bottomLeft** position').then(() => { - Object.assign(body.style, bodyPads.bottom); - element.parentElement?.classList.remove('dropup'); - element.parentElement?.classList.add('dropdown'); - element.innerText = 'Dropdown'; - - cy.wrap(new Dropdown(element)).as('dropdown_bottomLeft_rtl'); - cy.get('@dropdown_bottomLeft_rtl').invoke('show') - cy.get('@dropdown_bottomLeft_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropdown_bottomLeft_rtl').its('menu.style.cssText').should('contain', 'top: auto') - cy.wait(200) - cy.scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_bottomLeft_rtl').its('menu.style.cssText').should('contain', 'top: 100%') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.get('@dropdown_bottomLeft_rtl').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropdown** in **topLeft** position').then(() => { - Object.assign(body.style, {paddingTop: '3rem', paddingBottom: '', paddingRight: '95%', paddingLeft: '10%'}); - // @ts-ignore - toolbar.className = toolbarPositions.end; - - cy.wrap(new Dropdown(element)).as('dropdown_topLeft_rtl'); - cy.scrollTo('topRight', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_topLeft_rtl').invoke('show') - cy.get('@dropdown_topLeft_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.wait(200) - cy.get('@dropdown_topLeft_rtl').its('menu.style.cssText').should('contain', 'top: 100%') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropdown_topLeft_rtl').its('menu.style.cssText').should('contain', 'left: 0px') - cy.wait(200) - cy.get('@dropdown_topLeft_rtl').invoke('dispose') - cy.wait(200) - }); - - cy.log('test **dropstart** in **topLeft** position').then(() => { - Object.assign(body.style, {...bodyPads.left, paddingTop: '3rem', paddingBottom: ''}); - element.parentElement?.classList.remove('dropdown'); - element.parentElement?.classList.add('dropstart'); - element.innerText = 'Dropstart'; - // @ts-ignore - toolbar.className = toolbarPositions.start; - - cy.wrap(new Dropdown(element)).as('dropstart_topLeft_rtl'); - cy.get('@dropstart_topLeft_rtl').invoke('show') - cy.get('@dropstart_topLeft_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropstart_topLeft_rtl').its('menu.style.cssText').should('contain', 'left: 100%') - cy.wait(200) - }); - - cy.log('test **dropend** in **topLeft** position').then(() => { - Object.assign(body.style, {...bodyPads.left, paddingTop: '3rem', paddingBottom: ''}); - element.parentElement?.classList.remove('dropstart'); - element.parentElement?.classList.add('dropend'); - element.innerText = 'Dropend'; - // @ts-ignore - toolbar.className = toolbarPositions.end; - - cy.wrap(new Dropdown(element)).as('dropend_topLeft_rtl'); - cy.get('@dropend_topLeft_rtl').invoke('show') - cy.get('@dropend_topLeft_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropend_topLeft_rtl').its('menu.style.cssText').should('contain', 'left: 100%') - cy.wait(200) - }); - - cy.log('test **dropend** in **bottomRight** position').then(() => { - Object.assign(body.style, {paddingLeft: '5rem', paddingRight: '', paddingTop: '85vh', paddingBottom: '25vh'}); - // @ts-ignore - toolbar.className = toolbarPositions.start; - - cy.wrap(new Dropdown(element)).as('dropend_bottomRight_rtl'); - cy.window().scrollTo('bottomLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropend_bottomRight_rtl').invoke('show') - cy.get('@dropend_bottomRight_rtl').its('menu').should('have.class', 'show').and('be.visible') - cy.get('@dropend_bottomRight_rtl').its('menu.style.cssText').should('not.contain', 'bottom: 0px') - cy.wait(200) - cy.scrollTo('topLeft', {duration: 0}) - cy.wait(200) - cy.get('@dropend_bottomRight_rtl').its('menu.style.cssText').should('contain', 'inset: auto 100% 0px auto') - cy.get('@dropend_bottomRight_rtl').invoke('dispose') - cy.wait(200) - }); - }) - }); - - it('Can handle click()', () => { - cy.get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - cy.wrap(new Dropdown($element[0])).as('click_instance'); - }) - cy.get('[data-bs-toggle="dropdown"]').eq(1).click() - .get('@click_instance').its('menu').should('have.class', 'show') - cy.get('[data-bs-toggle="dropdown"]').eq(1).click() - .get('@click_instance').its('menu').should('not.have.class', 'show') - cy.get('[data-bs-toggle="dropdown"]').eq(1).click() - .get('@click_instance').its('menu').should('have.class', 'show') - cy.get('@click_instance').its('menu').find('.dropdown-item').eq(0).click() - .get('@click_instance').its('menu').should('not.have.class', 'show') - cy.get('[data-bs-toggle="dropdown"]').eq(1).click() - .get('@click_instance').its('menu').should('have.class', 'show') - cy.document().its('body').invoke('click', 'topRight') - .get('@click_instance').its('menu').should('not.have.class', 'show') - }); - - it('Can handle dropdown-menu-end', () => { - cy.get('[data-bs-toggle="dropdown"]').eq(0).then(($element) => { - const element = $element[0]; - const menu = element.parentElement?.querySelector('.dropdown-menu'); - menu?.classList.add('dropdown-menu-end'); - - cy.wrap(new Dropdown(element)).as('dropdown') - .get('@dropdown').invoke('show') - .get('@dropdown').its('menu').should('have.class', 'show') - .get('@dropdown').its('menu.style.cssText').should('contain', 'left: 0px'); - }); - }); - - it('Can handle dropdown-menu-end RTL', () => { - cy.get('[data-bs-toggle="dropdown"]').eq(0).then(($element) => { - const element = $element[0]; - changeDirection(element, 'rtl'); - const menu = element.parentElement?.querySelector('.dropdown-menu'); - menu?.classList.add('dropdown-menu-end'); - - cy.wrap(new Dropdown(element)).as('dropdown') - .get('@dropdown').invoke('show') - .get('@dropdown').its('menu').should('have.class', 'show') - .get('@dropdown').its('menu.style.cssText').should('contain', 'right: 0px') - }); - }); - - it('Can dispose()', () => { - cy.log('should work with **closed** menu').then(() => { - cy.get('[data-bs-toggle="dropdown"]').eq(0).then(($element) => { - const element = $element[0]; - const instance = new Dropdown(element); - cy.wrap(instance).as('instance1'); - }) - cy.get('@instance1').invoke('dispose') - cy.get('@instance1').its('element').should('be.undefined') - }) - cy.log('should work with **open** menu').then(() => { - cy.get('[data-bs-toggle="dropdown"]').eq(0).then(($element) => { - const element = $element[0]; - const instance = new Dropdown(element); - cy.wrap(instance).as('instance2'); - }) - cy.get('@instance2').invoke('show') - cy.wait(100) - cy.get('form.dropdown-menu').should('be.visible').and('have.class', 'show') - cy.wait(100) - cy.get('@instance2').invoke('dispose') - cy.get('@instance2').its('element').should('be.undefined') - }) - }); - - it('Can do original events - hide/hidden', function() { - cy.get('[data-bs-toggle="dropdown"]').eq(1).then(($element) => { - const element = $element[0]; - const { parentElement } = element; - const instance = new Dropdown(element); - - parentElement?.addEventListener('hide.bs.dropdown', function handleHide(e) { - if (!element.innerText.includes('wombat')) { - console.log(e.type + ' was prevented'); - e.preventDefault(); - } else { - console.log(e.type + ' was fired') - } - }) - - cy.wrap(instance).as('hide_event'); - }) - .get('@hide_event').invoke('show') - .get('@hide_event').its('menu').should('have.class', 'show').and('be.visible') - .get('@hide_event').invoke('hide') - .get('@hide_event').its('menu').should('have.class', 'show').and('be.visible') - }); - - it('Can do original events - show/shown', function() { - cy.get('[data-bs-toggle="dropdown"]').eq(0).then(function($element) { - const element = $element[0]; - const { parentElement } = element; - const instance = new Dropdown(element); - - parentElement?.addEventListener('show.bs.dropdown', function handleShow(e) { - if (!element.innerText.includes('wombat')) { - console.log(e.type + ' was prevented'); - e.preventDefault(); - } else { - console.log(e.type + ' was fired') - } - }); - - cy.wrap(instance).as('show_event'); - }) - cy.get('@show_event').invoke('show') - cy.wait(100) - cy.get('form.dropdown-menu').should('not.have.class', 'show') - }); -}); \ No newline at end of file diff --git a/cypress/e2e/modal.cy.ts b/cypress/e2e/modal.cy.ts deleted file mode 100644 index 23fc6089..00000000 --- a/cypress/e2e/modal.cy.ts +++ /dev/null @@ -1,170 +0,0 @@ -/// -import Modal from '../../src/components/modal'; - -describe('Modal Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/modal.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Modal(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Modal Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Init with target element', () => { - cy.get('[data-cy="modal"]').then(($element) => { - const element = $element[0]; - const instance = new Modal(element); - expect(instance.element).to.equal(element); - expect(instance.name).to.eq('Modal'); - expect(instance.options).to.not.be.empty; - expect(instance.defaults).to.not.be.undefined; - expect(instance.version).to.be.string; - }); - }); - - it('Can do show() / hide() / toggle()', function() { - cy.get('[data-cy="modal"]').each(($element, i) => { - const instance = Modal.init($element[0]); - cy.wrap(instance).as(`instance${i}`); - }) - cy.get('@instance0').invoke('toggle') - cy.get('@instance0').invoke('show') - cy.get('[data-cy="modal"]').should('have.class', 'show').and('be.visible') - cy.get('@instance0').invoke('toggle') - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'show').and('be.hidden') - cy.get('@instance0').invoke('hide') - cy.wait(300) - cy.get('@instance0').invoke('toggle') - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('@instance0').invoke('show') - cy.wait(300) - cy.get('@instance1').invoke('toggle') - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'show').and('be.hidden') - cy.get('[data-cy="modal"]').eq(1).should('have.class', 'show').and('be.visible') - cy.get('@instance1').invoke('show') - cy.wait(300) - cy.get('@instance0').invoke('toggle') - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="modal"]').eq(1).should('not.have.class', 'show').and('be.hidden') - cy.get('@instance0').invoke('show') - }); - - it('Can be openeded / dismissed via click', () => { - cy.get('[data-cy="modal"]').eq(0).then(($element) => { - cy.wrap(new Modal($element[0])).as('click_test'); - }) - cy.get('[href="#myModal"]').click({force:true}) - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="modal"]').eq(0).trigger('mousedown', 10, 10) - cy.get('[data-cy="modal"]').eq(0).trigger('mouseup', 10, 10) - cy.get('[data-cy="modal"]').eq(0).trigger('click', 10, 10) - cy.wait(300) - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'show') - cy.get('[href="#myModal"]').click({force:true}) - cy.wait(300) - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="modal"]').eq(0).find('[data-bs-dismiss="modal"]').eq(0).trigger('click', 'center') - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'show').and('be.hidden') - }); - - it('Can work with static backdrop', () => { - cy.get('[data-cy="modal"]').eq(0).then(($element) => { - cy.wrap(new Modal($element[0], {backdrop: 'static'})).as('static_test'); - }) - cy.get('@static_test').invoke('show') - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show') - cy.get('[data-cy="modal"]').eq(0).should('be.visible') - cy.get('[data-cy="modal"]').eq(0).trigger('mousedown', 10, 10) - cy.get('[data-cy="modal"]').eq(0).trigger('mouseup', 10, 10) - cy.get('[data-cy="modal"]').eq(0).trigger('click', 10, 10) - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'modal-static') - cy.get('[data-cy="modal"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'modal-static') - }); - - it('Can work with resize event', () => { - cy.get('[data-cy="modal"]').eq(1).then(($element) => { - cy.wrap(new Modal($element[0], { backdrop: true })).as('resize_test'); - }) - .get('@resize_test').invoke('show') - .get('@resize_test').its('element').should('have.class', 'show') - .get('@resize_test').its('element').should('be.visible'); - cy.wait(200) - cy.viewport(320,600) - cy.window().trigger('resize') - cy.get('@resize_test').its('element').should('have.class', 'show').and('be.visible') - .get('@resize_test').invoke('update') // force calling the method - .document().its('body.style.cssText').should('contain', 'overflow: hidden') - cy.wait(200) - cy.viewport(1000,600) - // cy.wait(200) - }); - - it('Can be dismissed via Escape', function() { - cy.get('[data-cy="modal"]').eq(0).then(($element) => { - cy.wrap(new Modal($element[0])).as('key_test'); - }) - cy.get('@key_test').invoke('show') - cy.get('@key_test').its('element').should('have.class', 'show').and('be.visible') - cy.wait(300) - cy.document().trigger('keydown', { code: 'Escape' }) - cy.get('@key_test').its('element').should('not.have.class', 'show').and('be.hidden') - }); - - it('Can do dispose()', function() { - cy.get('[data-cy="modal"]').eq(0).then(($element) => { - cy.wrap(new Modal($element[0])).as('disposable'); - cy.get('@disposable').invoke('show').then(() => { - cy.wait(300) - cy.get('[data-cy="modal"]').eq(0).should('exist').and('have.class', 'show').and('be.visible') - }) - cy.get('@disposable').invoke('dispose').then(() => { - cy.wait(300) - cy.get('@disposable').then(s => console.log(s)); - cy.get('[data-cy="modal"]').eq(0).should('not.have.class', 'show').and('be.hidden') - // cy.wrap(Modal.getInstance($element[0])).should('be.null') - cy.get('@disposable').its('element').should('be.undefined') - cy.get('@disposable').its('options').should('be.undefined') - }) - }) - }); - - it('Can work with CustomEvent hide', function() { - cy.get('[data-cy="modal"]').eq(0).then(($element) => { - const element = $element[0]; - const instance = new Modal(element); - element.addEventListener('hide.bs.modal', function(e){ - if (!element.innerText.includes('Holy')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('hide_event'); - }) - cy.get('@hide_event').invoke('toggle') - cy.get('@hide_event').its('element').should('have.class', 'show').and('be.visible') - cy.get('@hide_event').invoke('hide') - cy.get('@hide_event').its('element').should('have.class', 'show').and('be.visible') - }); - - it('Can work with CustomEvent show', function() { - cy.get('[data-cy="modal"]').eq(1).then(($element) => { - const element = $element[0]; - const instance = new Modal(element); - element.addEventListener('show.bs.modal', function(e){ - if (!element.innerText.includes('Holy')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('show_event'); - }) - cy.get('@show_event').invoke('toggle') - cy.get('@show_event').its('element').should('not.have.class', 'show').and('be.hidden') - }); -}); diff --git a/cypress/e2e/offcanvas.cy.ts b/cypress/e2e/offcanvas.cy.ts deleted file mode 100644 index 09148b0e..00000000 --- a/cypress/e2e/offcanvas.cy.ts +++ /dev/null @@ -1,146 +0,0 @@ -/// -import Offcanvas from '../../src/components/offcanvas'; - -describe('Offcanvas Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/offcanvas.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Offcanvas(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Offcanvas Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can be openeded / dismissed via click - backdrop', () => { - cy.get('[data-cy="offcanvas"]').eq(0).then(($element) => { - cy.wrap(new Offcanvas($element[0])).as('click_test'); - }) - cy.get('[href="#offcanvasExample"]').click() - cy.get('[data-cy="offcanvas"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('.offcanvas-backdrop').eq(0).trigger('mousedown', 990, 10) - cy.get('.offcanvas-backdrop').eq(0).trigger('mouseup', 990, 10) - cy.get('.offcanvas-backdrop').eq(0).trigger('click', 990, 10) - cy.wait(100) - cy.get('[data-cy="offcanvas"]').eq(0).should('not.have.class', 'show').and('be.hidden') - cy.get('[href="#offcanvasExample"]').eq(0).click() - cy.get('[data-cy="offcanvas"]').eq(0).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="offcanvas"]').eq(0).find('[data-bs-dismiss="offcanvas"]').eq(0).trigger('click', 'center') - cy.get('[data-cy="offcanvas"]').eq(0).should('not.have.class', 'show').and('be.hidden') - }); - - it('Init with target element', () => { - cy.get('[data-cy="offcanvas"]').then(($element) => { - const element = $element[0]; - const instance = new Offcanvas(element); - expect(instance.element).to.equal(element); - expect(instance.name).to.eq('Offcanvas'); - expect(instance.options).to.not.be.empty; - expect(instance.defaults).to.not.be.undefined; - expect(instance.version).to.be.string; - }); - }); - - it('Can do show() / hide()', function() { - cy.get('[data-cy="offcanvas"]').each(($element, i) => { - const instance = Offcanvas.init($element[0]); - cy.wrap(instance).as(`instance${i}`); - }) - cy.get('@instance0').invoke('toggle') - cy.get('@instance0').invoke('show') - cy.get('[data-cy="offcanvas"]').eq(0).should('have.class', 'show').and('be.visible') - cy.wait(100) - cy.get('@instance0').invoke('toggle') - cy.get('@instance0').invoke('hide') // should be prevented - cy.get('[data-cy="offcanvas"]').eq(0).should('not.have.class', 'show').and('be.hidden') - cy.wait(100) - cy.get('@instance0').invoke('toggle') - cy.get('[data-cy="offcanvas"]').eq(0).should('have.class', 'show').and('be.visible') - cy.wait(100) - cy.get('@instance1').invoke('toggle') - cy.get('@instance1').invoke('show') // should be prevented - cy.get('[data-cy="offcanvas"]').eq(0).should('not.have.class', 'show') - cy.get('[data-cy="offcanvas"]').eq(1).should('have.class', 'show').and('be.visible') - cy.get('@instance0').invoke('toggle') - cy.get('@instance0').invoke('show') // should be prevented - cy.get('[data-cy="offcanvas"]').eq(0).should('have.class', 'show') - cy.get('[data-cy="offcanvas"]').eq(1).should('not.have.class', 'show').and('be.hidden') - }); - - it('Can be openeded / dismissed via click - no backdrop', () => { - cy.get('[data-cy="offcanvas"]').eq(1).then(($element) => { - cy.wrap(new Offcanvas($element[0])).as('click_test'); - }) - cy.get('[data-bs-target="#offcanvasNoBackdrop"]').click() - cy.get('[data-cy="offcanvas"]').eq(1).should('have.class', 'show').and('be.visible') - cy.get('[data-bs-target="#offcanvasNoBackdrop"]').click() - cy.get('[data-cy="offcanvas"]').eq(1).should('not.have.class', 'show').and('be.hidden') - cy.get('[data-bs-target="#offcanvasNoBackdrop"]').click() - cy.get('[data-cy="offcanvas"]').eq(1).should('have.class', 'show').and('be.visible') - cy.get('[data-cy="offcanvas"]').eq(1).find('[data-bs-dismiss="offcanvas"]').click() - cy.get('[data-cy="offcanvas"]').eq(1).should('not.have.class', 'show').and('be.hidden') - }); - - it('Can be dismissed via Escape', function() { - cy.get('[data-cy="offcanvas"]').eq(0).then(($element) => { - cy.wrap(new Offcanvas($element[0], { backdrop: 'static'})).as('key_test'); - }) - .get('@key_test').invoke('show') - .get('@key_test').its('element').should('have.class', 'show').and('be.visible') - .get('.offcanvas-backdrop').click() - .get('@key_test').its('element').should('have.class', 'show').and('be.visible') - .wait(100) - .document().trigger('keydown', { code: 'Escape' }) - .get('@key_test').its('element').should('not.have.class', 'show').and('be.hidden') - }); - - it('Can work with CustomEvent hide', function() { - cy.get('[data-cy="offcanvas"]').eq(0).then(($element) => { - const [element] = $element; - const instance = new Offcanvas(element); - element.addEventListener('hide.bs.offcanvas', function(e){ - if (!element.innerText.includes('Holy')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('hide_event'); - cy.get('@hide_event').invoke('toggle') - cy.get('@hide_event').its('element').should('have.class', 'show') - cy.wait(500) - cy.get('@hide_event').invoke('toggle') - cy.get('@hide_event').its('element').should('have.class', 'show') - }) - }); - it('Can do dispose()', () => { - cy.get('[data-cy="offcanvas"]').eq(0).then(($element) => { - cy.wrap(new Offcanvas($element[0])).as('disposable'); - cy.get('@disposable').invoke('show') - cy.get('@disposable').its('element').should('have.class', 'show').and('be.visible') - cy.get('@disposable').invoke('dispose') - cy.get('@disposable').its('element').should('be.undefined') - cy.get('@disposable').its('options').should('be.undefined') - cy.wait(500) - }) - }); - - it('Can work with CustomEvent show', function() { - cy.get('[data-cy="offcanvas"]').eq(0).then(($element) => { - const [element] = $element; - const instance = new Offcanvas(element); - element.addEventListener('show.bs.offcanvas', function(e){ - if (!element.innerText.includes('Holy')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('show_event'); - cy.get('@show_event').invoke('toggle') - cy.get('@show_event').its('element').should('not.have.class', 'show').and('be.hidden') - }) - }); - -}); diff --git a/cypress/e2e/popover.cy.ts b/cypress/e2e/popover.cy.ts deleted file mode 100644 index a620e6dc..00000000 --- a/cypress/e2e/popover.cy.ts +++ /dev/null @@ -1,278 +0,0 @@ -/// -import Popover from '../../src/components/popover'; - -describe('Popover Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/popover.html'); - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Popover(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Popover Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Can handle horizontal position when both exceed top and bottom 1', () => { - cy.viewport(600, 200); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument; - Object.assign(body.style, { padding: '10rem 27rem' }); - }); - cy.wait(200); - cy.get('[data-cy="popover"]').eq(0).then($element => { - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'left', - title: 'Popover Left', - content: `This Popover can handle horizontal position when both exceed top and bottom. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('horizontal'); - }); - cy.wait(200); - cy.get('@horizontal').invoke('toggle'); - cy.get('@horizontal').its('tooltip').should('have.class', 'show'); - cy.scrollTo('100%', '0%', { duration: 0 }); - cy.wait(200); - cy.get('@horizontal').its('tooltip').should('have.class', 'bs-popover-end'); - cy.scrollTo('topLeft', { duration: 0 }); - // cy.wait(200); - cy.get('@horizontal').its('tooltip').should('have.class', 'bs-popover-start'); - cy.wait(200); - cy.scrollTo('bottomLeft', { duration: 0 }); - cy.get('@horizontal').its('tooltip').should('have.class', 'bs-popover-start'); - cy.wait(200); - }); - - it.skip('Can handle horizontal position when both exceed top and bottom 2', () => { - cy.viewport(600, 200); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument; - Object.assign(body.style, { padding: '7rem 27rem' }); - }); - cy.wait(200); - // cy.scrollTo('topRight', { duration: 0 }); - cy.scrollTo('right', { duration: 0 }); - cy.wait(200); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'right', - title: 'Popover Right', - content: `This Popover can handle horizontal position when both exceed top and bottom. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('horizontal2'); - }); - cy.wait(200); - cy.get('@horizontal2').invoke('toggle'); - cy.get('@horizontal2').its('tooltip').should('have.class', 'show'); - - cy.get('@horizontal2').its('tooltip').should('have.class', 'bs-popover-start'); - // cy.scrollTo('100%', '0%', { duration: 0 }); - cy.scrollTo('right', { duration: 0 }); - cy.wait(200); - cy.get('@horizontal2').its('tooltip').should('have.class', 'bs-popover-end'); - cy.wait(200); - cy.scrollTo('bottomLeft', { duration: 0 }); - cy.get('@horizontal2').its('tooltip').should('have.class', 'bs-popover-end'); - cy.wait(200); - }); - - it('Can do toggle() and dismissible', () => { - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const element = $element[0]; - const instance = Popover.init(element); - expect(Popover.getInstance(element), 'getInstance').to.be.instanceOf(Popover); - expect(instance.element, 'element').to.equal(element); - expect(instance.tooltip, 'tooltip').to.not.be.undefined; - expect(instance.name, 'name').to.eq('Popover'); - expect(instance.options, 'options').to.not.be.empty; - expect(instance.defaults, 'defaults').to.not.be.undefined; - expect(instance.version, 'version').to.be.string; - - cy.wrap(instance).as('instance'); - }); - cy.get('@instance').invoke('toggle'); - cy.get('@instance').its('tooltip').should('have.class', 'show'); - cy.get('@instance') - .its('btn') - .then(btn => { - btn.click(); - }); - cy.get('@instance') - .its('tooltip') - .then(tip => { - cy.wrap(tip).should('not.have.class', 'show'); - }); - cy.wait(200); - }); - - it('Can handle vertical right', () => { - cy.viewport(400, 400); - cy.window().trigger('resize', { force: true }); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument; - Object.assign(body.style, { padding: '15rem 25rem 15rem 1rem' }); - cy.scrollTo('topRight', { duration: 0 }); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'top', - title: 'Popover Right', - content: `This Popover can handle vertical position when both exceed top and bottom. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('verticalRight'); - cy.get('@verticalRight').invoke('toggle'); - cy.get('@verticalRight').its('tooltip').should('have.class', 'bs-popover-top'); - cy.scrollTo('topLeft', { duration: 0 }).then(() => { - cy.get('@verticalRight').its('tooltip').should('have.class', 'bs-popover-top'); - }); - - cy.wait(200); - }); - }); - }); - - it('Can handle vertical left', () => { - cy.viewport(400, 400); - cy.window().trigger('resize', { force: true }); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument; - Object.assign(body.style, { padding: '15rem 5rem 15rem 25rem' }); - - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'top', - title: 'Popover Top', - content: `This Popover can handle vertical position when both exceed top and bottom. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('verticalLeft'); - cy.get('@verticalLeft').invoke('toggle'); - cy.get('@verticalLeft').its('tooltip').should('have.class', 'show'); - cy.scrollTo('topRight', { duration: 0 }).then(() => { - cy.get('@verticalLeft').its('tooltip').should('have.class', 'show'); - }); - cy.wait(200); - }); - }); - - it('Can switch top to bottom', () => { - cy.viewport(400, 600); - cy.window().trigger('resize', { force: true }); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument; - Object.assign(body.style, { padding: '22rem 8rem' }); - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'top', - title: 'Top Popover', - content: `This Popover can handle top position when exceed top. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('top'); - cy.get('@top').invoke('toggle'); - cy.get('@top').its('tooltip').should('have.class', 'show'); - cy.scrollTo('bottom', { duration: 0 }) - .then(() => { - cy.get('@top').its('tooltip').should('have.class', 'show'); - }); - cy.wait(200); - }); - }); - - it('Can switch bottom to top', () => { - cy.viewport(400, 600); - cy.window().trigger('resize', { force: true }); - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - const { body } = $element[0].ownerDocument as Document; - Object.assign(body.style, { padding: '20rem 10rem' }); - cy.scrollTo('bottom', { duration: 0 }); - - cy.wrap( - new Popover($element[0], { - dismissible: false, - placement: 'bottom', - title: 'Popover Bottom', - content: `This Popover can handle bottom position when both exceed top and bottom. - Here we add more content for testing. - Efficiently unleash cross-media information without cross-media value. - Quickly maximize timely deliverables for real-time schemas.`, - }), - ).as('bottom'); - cy.get('@bottom').invoke('toggle'); - cy.get('@bottom').its('tooltip').should('have.class', 'show'); - cy.scrollTo('top', { duration: 0 }); - - cy.get('@bottom').its('tooltip').should('have.class', 'show'); - - cy.wait(200); - }); - }); - - it('Can dispose()', () => { - cy.log('can dispose **closed**').then(() => { - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - cy.wrap(new Popover($element[0])).as('instance'); - }); - cy.get('@instance').invoke('dispose'); - cy.get('@instance').its('element').should('be.undefined'); - cy.get('@instance').its('tooltip').should('be.undefined'); - }); - cy.wait(100); - cy.log('can dispose **open**').then(() => { - cy.get('[data-cy="popover"]') - .eq(0) - .then($element => { - cy.wrap(new Popover($element[0])).as('instance'); - }); - cy.get('@instance').invoke('show'); - cy.wait(200); - cy.get('@instance').invoke('dispose'); - cy.get('@instance').its('element').should('be.undefined'); - cy.get('@instance').its('tooltip').should('be.undefined'); - }); - }); -}); diff --git a/cypress/e2e/scrollspy.cy.ts b/cypress/e2e/scrollspy.cy.ts deleted file mode 100644 index 93409ffe..00000000 --- a/cypress/e2e/scrollspy.cy.ts +++ /dev/null @@ -1,109 +0,0 @@ -/// -import ScrollSpy from '../../src/components/scrollspy'; - -describe('ScrollSpy Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/scrollspy.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new ScrollSpy(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `ScrollSpy Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Init each target element', () => { - cy.get('[data-bs-spy="scroll"]').each(($element) => { - const element = $element[0]; - const instance = ScrollSpy.init(element); - expect(ScrollSpy.getInstance(element)).to.be.instanceOf(ScrollSpy); - expect(instance.element).to.equal(element); - expect(instance.offsets).to.be.instanceOf(Array).and.have.length.above(0); - expect(instance.items).to.be.instanceOf(Array).and.have.length.above(0); - expect(instance.items[0]).to.have.class('active'); - expect(instance.name).to.eq('ScrollSpy'); - expect(instance.options).to.not.be.empty; - expect(instance.defaults).to.not.be.undefined; - expect(instance.version).to.be.string; - }); - }); - - it('Init without a target', () => { - cy.document().then((doc) => { - const element = doc.createElement('div'); - element.setAttribute('data-bs-target', "#nonExistingTarget"); - doc.body.append(element); - - const instance = ScrollSpy.init(element); - expect(instance.target).to.be.null; - }); - }); - - it('Can activate targets', () => { - cy.get('[data-bs-spy="scroll"]').eq(0).then(($element) => { - cy.wrap(new ScrollSpy($element[0])).as('ssInstance'); - }) - cy.get('@ssInstance').its('scrollTarget') - // .scrollTo('bottom') - .then((st) => { - cy.wrap(st).scrollTo('bottom') - }) - cy.get('@ssInstance').its('items').then(itms => { - cy.wrap(itms).eq(4).should('have.class', 'active') - }) - }); - - it('Can work with full page contents', () => { - cy.document().then((doc) => { - const content = doc.querySelector('.col-md-9 .row')?.cloneNode(true) as Node; - doc.body.innerHTML = ''; - doc.body.append(content); - Object.assign(doc.body.style, {padding: '5rem 0'}); - - const disposableSpy = doc.getElementById('disposableSpy') as HTMLElement; - const [nav] = doc.getElementsByTagName('nav'); - Object.assign(disposableSpy.style, {height: ''}); - Object.assign(nav.style, {top: '0px'}); - nav.classList.add('position-sticky') - }) - // cy.viewport(780,1000) - cy.get(ScrollSpy.selector).then(($element) => { - cy.wrap(new ScrollSpy($element[0])).as('pageInstance'); - }) - cy.get('@pageInstance').its('scrollTarget').scrollTo('bottom') - cy.get('@pageInstance').its('items').then(itms => { - cy.wrap(itms).eq(4).should('have.class', 'active') - }) - cy.wait(500) - cy.get('@pageInstance').its('scrollTarget').scrollTo('top') - cy.get('@pageInstance').its('items').then(itms => { - cy.wrap(itms).eq(0).should('not.have.class', 'active') - }) - cy.wait(200) - cy.viewport(400, 600) - cy.window().trigger('resize', { force: true }) - cy.wait(200) - cy.get('@pageInstance').its('scrollTarget').scrollTo('bottom') - cy.get('@pageInstance').its('items').then(itms => { - cy.wrap(itms).eq(4).should('have.class', 'active') - }) - // cy.get('@pageInstance').its('items').eq(4).should('have.class', 'active') - - cy.viewport(680,1000) - }); - - it('Can dispose', () => { - cy.get('[data-bs-spy="scroll"]').eq(0).then(($element) => { - cy.wrap(new ScrollSpy($element[0])).as('disposable'); - }) - cy.get('@disposable').invoke('dispose') - cy.get('@disposable').its('element').should('be.undefined') - cy.get('@disposable').its('items').should('be.undefined') - cy.get('@disposable').its('offsets').should('be.undefined'); - }); -}); diff --git a/cypress/e2e/tab.cy.ts b/cypress/e2e/tab.cy.ts deleted file mode 100644 index 17081701..00000000 --- a/cypress/e2e/tab.cy.ts +++ /dev/null @@ -1,122 +0,0 @@ -/// -import Tab from '../../src/components/tab'; -import Dropdown from '../../src/components/dropdown'; - -describe('Tab Class Tests', () => { - - beforeEach(() => { - cy.visit('cypress/tab.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Tab(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Tab Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Init without a tab content won\'t work', () => { - cy.get('[data-bs-toggle="tab"]').eq(4).then(($element) => { - const element = $element[0]; - const newTab = element.cloneNode(true) as HTMLAnchorElement; - newTab.id = 'newTab'; - newTab.href = '#newTabContent'; - element.after(newTab); - const instance = new Tab(newTab); - - expect(instance.content).to.be.undefined; - }) - }); - - it('Can initialize all instances in the page', () => { - cy.get('[data-bs-toggle="tab"]').each(($element, i) => { - const element = $element[0]; - const win = element.ownerDocument.defaultView; - const instance = Tab.init(element); - if (!i) { - expect(instance.element).to.equal(element); - expect(instance.nav).to.be.instanceOf(win?.HTMLElement); - expect(instance.options).to.be.empty; - expect(instance.defaults).to.be.empty; - expect(instance.name).to.equal('Tab'); - expect(instance.version).to.not.be.empty; - expect(instance.tabContent).to.be.instanceOf(win?.HTMLElement); - } - cy.wrap(instance).as('instance' + i); - }) - }); - - it('Can do click()', () => { - cy.get('[data-bs-toggle="dropdown"]').each(($element, j) => { - cy.wrap(Dropdown.init($element[0])).as('dropdown' + j); - }) - .get('[data-bs-toggle="tab"]').each(($element, i) => { - const element = $element[0]; - const instance = new Tab(element); - cy.wrap(instance).as('instance' + i); - }) - cy.get('@dropdown0').its('element').then(el => cy.wrap(el).click()) - cy.get('@dropdown0').its('menu').then(menu => cy.wrap(menu).should('be.visible')) - cy.get('@instance1').its('element').then(el => cy.wrap(el).click()) - cy.get('@instance1').its('content').then(ct => cy.wrap(ct).should('have.class', 'show').and('be.visible')) - cy.get('@instance0').its('content').then(ct => cy.wrap(ct).should('not.have.class', 'show').and('be.hidden')) - cy.wait(300) - cy.get('@dropdown0').its('element').then(el => cy.wrap(el).click()) - cy.get('@instance2').its('element').then(el => cy.wrap(el).click()) - // cy.wait(500) - cy.get('@instance2').its('content').then(ct => cy.wrap(ct).should('have.class', 'show').and('be.visible')) - cy.get('@instance1').its('content').then(ct => cy.wrap(ct).should('not.have.class', 'show').and('be.hidden')) - cy.wait(300) - cy.get('@instance4').its('element').then(el => cy.wrap(el).click()) - // cy.wait(100) - cy.get('@instance4').its('content').then(ct => cy.wrap(ct).should('have.class', 'show').and('be.visible')) - // cy.wait(100) - cy.get('@instance3').its('element').then(el => cy.wrap(el).click()) - // cy.wait(100) - cy.get('@instance3').its('content').then(ct => cy.wrap(ct).should('have.class', 'show').and('be.visible')) - cy.get('@instance4').its('content').then(ct => cy.wrap(ct).should('not.have.class', 'show').and('be.hidden')) - - }); - - it('Can do original events', () => { - cy.get('[data-bs-toggle="tab"]').each(($element, i) => { - if (i === 0) { - $element[0].addEventListener('show.bs.tab', (e) => { - e.preventDefault(); - }) - } - if (i === 3) { - $element[0].addEventListener('hide.bs.tab', (e) => { - e.preventDefault(); - }) - } - cy.wrap(new Tab($element[0])).as('instance' + i); - }) - cy.get('@instance1').invoke('show') - cy.get('@instance1').its('content').should('have.class', 'show').and('be.visible') - cy.get('@instance0').its('content').should('not.have.class', 'show') - cy.wait(500) - cy.get('@instance0').invoke('show') - cy.get('@instance1').its('content').should('not.have.class', 'show') - cy.get('@instance0').its('content').should('not.have.class', 'show') - cy.wait(500) - cy.get('@instance4').invoke('show') - cy.get('@instance3').its('content').should('have.class', 'show').and('be.visible') - cy.get('@instance4').its('content').should('not.have.class', 'show') - }); - - it('Can dispose()', () => { - cy.get('[data-bs-toggle="tab"]').eq(0).then(($element) => { - const element = $element[0]; - const instance = new Tab(element); - instance.dispose(); - expect(instance.element, 'element').to.be.undefined; - expect(instance.content, 'content').to.be.undefined; - expect(instance.nav, 'nav').to.be.undefined; - }) - }); -}); \ No newline at end of file diff --git a/cypress/e2e/toast.cy.ts b/cypress/e2e/toast.cy.ts deleted file mode 100644 index 52435cb4..00000000 --- a/cypress/e2e/toast.cy.ts +++ /dev/null @@ -1,131 +0,0 @@ -/// -import Toast from '../../src/components/toast'; - -describe('Toast Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/toast.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Toast(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Toast Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Init with target element', () => { - cy.get('.toast').then(($element) => { - const element = $element[0]; - const instance = Toast.init(element); - expect(instance.element).to.equal(element); - expect(instance.name).to.eq('Toast'); - expect(instance.options).to.deep.equal({animation: true, autohide: true, delay: 5000}); - expect(instance.defaults).to.deep.equal({animation: true, autohide: true, delay: 5000}); - expect(instance.version).to.be.string; - }); - }); - - it('Can do show() and autoclose', () => { - cy.get('.toast').then(($element) => { - $element[0].classList.remove('fade'); // code coverage - const instance = new Toast($element[0], { delay: 200 }); - cy.wrap(instance).as('instance'); - cy.get('@instance').invoke('show') - cy.wait(250) - - cy.get('@instance').its('element').should('have.class', 'show') - cy.get('@instance').its('isShown').should('be.true') - cy.wait(250) - // cy.get('@instance').then(() => { - cy.get('@instance').its('isShown').should('be.false') - cy.get('@instance').its('element').should('not.have.class', 'show') - // }) - }) - }); - - it('Can do click()', () => { - cy.get('.toast').each(($element, i) => { - cy.wrap(new Toast($element[0])).as('instance' + i); - }) - cy.get('@instance0').its('triggers').then(tgs => cy.wrap(tgs).eq(0).click()) - cy.get('@instance0').its('element').should('have.class', 'show').and('be.visible') - cy.get('@instance0').its('isShown').should('be.true') - cy.get('@instance0').its('dismiss').then(dsm => cy.wrap(dsm).click()) - cy.get('@instance0').its('element').should('not.have.class', 'show') - cy.get('@instance1').its('triggers').then(tgs => cy.wrap(tgs).eq(0).click()) - cy.get('@instance1').its('element').should('have.class', 'show').and('be.visible') - cy.get('@instance1').its('isShown').should('be.true') - cy.get('@instance1').its('dismiss').then(dsm => cy.wrap(dsm).click()) - cy.get('@instance1').its('element').should('not.have.class', 'show') - }); - - it('Can extend visibility duration by user interaction', () => { - cy.get('.toast').then(($element) => { - const instance = new Toast($element[0], { animation: false, delay: 200 }); - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').invoke('show') - cy.get('@instance').its('element').should('have.class', 'show').and('be.visible') - cy.get('@instance').its('isShown').should('be.true') - cy.wait(100) - cy.get('@instance').its('element').first().trigger('mouseenter', {force: true}) - cy.wait(190) - cy.get('@instance').its('element').should('have.class', 'show').and('be.visible') - cy.wait(100) - cy.get('@instance').its('element').first().trigger('mouseenter', {force: true}).trigger('mouseleave', {force: true}) - cy.wait(201) - cy.get('@instance').its('element').should('not.have.class', 'show') - cy.get('@instance').its('isShown').should('be.false') - }); - - it('Can do dispose()', () => { - cy.get('.toast').then(($element) => { - const instance = new Toast($element[0]); - cy.wrap(instance).as('disposable'); - }) - // cy.wait(17) - cy.get('@disposable').invoke('show') - cy.get('@disposable').its('element').should('have.class', 'show').and('be.visible') - // .wait(100) - cy.get('@disposable').invoke('dispose') - cy.get('@disposable').its('element').should('be.undefined'); - }); - - it('CustomEvent can be prevented - hide', () => { - cy.get('.toast').then(($element) => { - const element = $element[0]; - const instance = new Toast(element); - element.addEventListener('hide.bs.toast', function(e){ - if (!element.innerText.includes('wombat')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('instance_hide'); - }) - cy.get('@instance_hide').invoke('show') - cy.get('@instance_hide').its('element').should('have.class', 'show').and('be.visible') - // .wait(500) - cy.get('@instance_hide').its('dismiss').then(dsm => cy.wrap(dsm).click()) - cy.get('@instance_hide').its('element').should('have.class', 'show').and('be.visible') - }); - - it('CustomEvent can be prevented - show', () => { - cy.get('.toast').then(($element) => { - const element = $element[0]; - const instance = new Toast(element); - element.addEventListener('show.bs.toast', function(e){ - if (!element.innerText.includes('wombat')) { - e.preventDefault() - } - }) - cy.wrap(instance).as('instance_show'); - }) - cy.get('@instance_show').invoke('show') - cy.get('@instance_show').its('element').should('not.have.class', 'show').and('be.hidden') - }); - -}); \ No newline at end of file diff --git a/cypress/e2e/tooltip.cy.ts b/cypress/e2e/tooltip.cy.ts deleted file mode 100644 index 8f05e23c..00000000 --- a/cypress/e2e/tooltip.cy.ts +++ /dev/null @@ -1,458 +0,0 @@ -/// -import Tooltip from '../../src/components/tooltip'; -import Modal from '../../src/components/modal'; -import Offcanvas from '../../src/components/offcanvas'; -import Popover from '../../src/components/popover'; - -import changeDirection from '../fixtures/changeDirection' - -describe('Tooltip Class Tests', () => { - beforeEach(() => { - cy.visit('cypress/tooltip.html') - }); - - it('Init without any parameters - throws error', () => { - const args = []; - try { - // @ts-ignore - new Tooltip(...args); - } catch (error) { - expect(error).to.be.instanceOf(Error); - expect(error).to.have.property('message', `Tooltip Error: your target is not an instance of HTMLElement.`); - } - }); - - it('Init without content - won\'t work', () => { - cy.get('[data-cy="tooltip"]').eq(0).then(($element) => { - const instance = Tooltip.init($element[0]); - expect(instance.tooltip).to.be.undefined; - expect(instance.arrow).to.be.undefined; - }) - }); - - it('Can do toggle()', () => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - const element = $element[0]; - const instance = new Tooltip(element, { trigger: 'manual' }); - expect(instance.element, 'element').to.equal(element); - expect(instance.tooltip, 'tooltip').to.not.be.undefined; - expect(instance.name, 'name').to.eq('Tooltip'); - expect(instance.options, 'options').to.not.be.empty; - expect(instance.defaults, 'defaults').to.not.be.undefined; - expect(instance.version, 'version').to.be.string; - cy.wrap(instance).as('instance'); - }) - cy.get('@instance').invoke('toggle') - cy.get('@instance').its('tooltip').should('have.class', 'show') - cy.get('@instance').invoke('toggle') - cy.get('@instance').its('tooltip').should('not.have.class', 'show') - }); - - it('Can do automatic position on scroll / resize', () => { - cy.viewport(1000, 600) - cy.window().trigger('resize', { force: true }) - cy.wait(200) - cy.get('[data-cy="tooltip"]').eq(3).then(($element) => { - const element = $element[0]; - const { body } = element.ownerDocument; - Object.assign(body.style, { paddingTop: '5rem', paddingBottom: '90vh'}) - cy.wrap(new Tooltip(element, {placement: 'left'})).as('resize'); - }) - cy.wait(200) - cy.get('@resize').invoke('show') - cy.get('@resize').its('tooltip').should('have.class', 'show').and('be.visible'); - cy.scrollTo('bottomLeft') - cy.wait(200) - cy.get('@resize').its('tooltip').should('have.class', 'bs-tooltip-start'); - cy.scrollTo('topLeft') - cy.wait(200) - cy.viewport(200, 600); - cy.window().trigger('resize', { force: true }) - // cy.wait(200) - cy.get('@resize').its('tooltip').should('have.class', 'bs-tooltip-top'); - cy.scrollTo('bottomLeft') - cy.wait(200) - cy.get('@resize').its('tooltip').should('have.class', 'bs-tooltip-bottom') - cy.viewport(1000, 600) - .get('[data-cy="tooltip"]').eq(3).then(($element) => { - Object.assign( - $element[0].ownerDocument.body.style, - { paddingTop: '90vh', paddingBottom: '5rem'}) - }) - cy.window().trigger('resize', { force: true }) - cy.scrollTo('topLeft') - cy.wait(200) - cy.get('@resize').its('tooltip').should('have.class', 'bs-tooltip-start') - cy.wait(200) - cy.viewport(1000, 600) - cy.window().trigger('resize', { force: true }) - cy.wait(200) - }); - - it('Can handle various trigger events', () => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - const element = $element[0]; - // const body = element.ownerDocument.body; // used for custom container option - const instance = new Tooltip(element, { trigger: 'hover focus click' }); - expect(Tooltip.getInstance(element)).to.be.instanceOf(Tooltip); // coverage - cy.wrap(instance).as('instance'); - }) - cy.log('can handle **hover**') - cy.get('[data-cy="tooltip"]').eq(1).trigger('mouseenter') - // cy.get('.tooltip').should('have.class', 'show').and('be.visible') - cy.get('@instance').its('tooltip').then((tip) => { - cy.wrap(tip).should('have.class', 'show').and('be.visible') - }) - // cy.wait(200) - cy.get('[data-cy="tooltip"]').eq(1).trigger('mouseleave', 500, 500, { force: true }) - cy.get('[data-cy="tooltip"]').eq(1).trigger('mouseout', 500, 500, { force: true }) - // cy.wait(200) - // cy.get('.tooltip').should('not.exist') - cy.get('@instance').its('tooltip').then((tip) => { - cy.wrap(tip).should('not.exist') - }) - cy.log('can handle **click**') - cy.get('[data-cy="tooltip"]').eq(1).trigger('mousedown') - cy.get('[data-cy="tooltip"]').eq(1).trigger('mouseup') - cy.get('[data-cy="tooltip"]').eq(1).trigger('click') - cy.get('.tooltip').should('have.class', 'show').and('be.visible') - cy.get('[data-cy="tooltip"]').eq(1).trigger('mousedown') - cy.get('[data-cy="tooltip"]').eq(1).trigger('mouseup') - cy.get('[data-cy="tooltip"]').eq(1).trigger('click') - cy.get('@instance').its('tooltip').then((tip) => { - cy.wrap(tip).should('not.exist') - }) - cy.get('[data-cy="tooltip"]').eq(1).trigger('focusout') - cy.get('[data-cy="tooltip"]').eq(1).trigger('blur') - // cy.wait(200) - cy.log('can handle **focus**') - cy.get('[data-cy="tooltip"]').eq(1).trigger('focusin') - cy.get('[data-cy="tooltip"]').eq(1).focus() - cy.get('@instance').its('tooltip').then((tip) => { - cy.wrap(tip).should('have.class', 'show') - }) - cy.get('[data-cy="tooltip"]').eq(1).trigger('focusout') - cy.get('[data-cy="tooltip"]').eq(1).blur() - cy.get('@instance').its('tooltip').should('not.exist') - }); - - it('Can do toggleEnabled()', () => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('toggleEnable'); - }) - cy.get('@toggleEnable').invoke('toggleEnabled') - cy.get('@toggleEnable').its('enabled').should('be.false') - cy.get('@toggleEnable').invoke('toggleEnabled') - cy.get('@toggleEnable').its('enabled').should('be.true') - cy.get('@toggleEnable').invoke('toggle') - cy.get('@toggleEnable').its('tooltip').should('have.class', 'show').and('be.visible') - cy.get('@toggleEnable').invoke('toggleEnabled') - cy.get('@toggleEnable').its('enabled').should('be.false') - cy.get('@toggleEnable').invoke('toggle') - cy.get('@toggleEnable').its('tooltip').should('not.exist') - cy.get('@toggleEnable').invoke('toggleEnabled') - cy.get('@toggleEnable').its('enabled').should('be.true') - cy.get('@toggleEnable').invoke('toggle') - cy.get('@toggleEnable').its('tooltip').should('have.class', 'show').and('be.visible') - cy.get('@toggleEnable').invoke('dispose') - cy.get('@toggleEnable').its('tooltip').should('not.exist') - }); - - it('Can be dismissed when closing an offcanvas', () => { - cy.visit('cypress/offcanvas.html') - - cy.get('[data-cy="offcanvas"]').eq(0).then(($offcanvas) => { - cy.wrap(new Offcanvas($offcanvas[0])).as('offcanvas'); - }) - cy.get('[data-cy="offcanvas"] [data-bs-toggle="tooltip"]').eq(0).then(($tip) => { - cy.wrap(new Tooltip($tip[0])).as('tooltip_offcanvas'); - }) - cy.get('@offcanvas').invoke('toggle') - cy.wait(300) - cy.get('@tooltip_offcanvas').invoke('show') - cy.get('@tooltip_offcanvas').its('tooltip').should('have.class', 'show') - cy.wait(300) - cy.get('@offcanvas').invoke('toggle') - cy.get('@tooltip_offcanvas').its('tooltip').should('not.have.class', 'show').and('be.hidden') - }); - - it('Can be dismissed when closing an overflowing modal', () => { - cy.visit('cypress/modal.html'); - - cy.get('.modal').eq(0).then(($modal) => { - cy.wrap(new Modal($modal[0])).as('modal'); - }) - cy.get('[data-bs-toggle="tooltip"]').eq(0).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('tooltip_modal'); - }) - cy.get('@modal').invoke('show') - cy.wait(200) - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').invoke('update') - // .then(s => console.log(s)) - cy.get('@modal').its('element').then($el => cy.wrap($el).scrollTo(0, 350)) - // cy.log() - cy.wait(200) - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show') - .and('have.class', 'bs-tooltip-bottom').and('be.visible') - cy.wait(200) - cy.get('@modal').invoke('hide') - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show').and('be.hidden') - }); - - it('Can be dismissed when closing a small modal', () => { - cy.visit('cypress/modal.html'); - - cy.get('.modal').eq(1).then(($modal) => { - cy.wrap(new Modal($modal[0])).as('modal'); - }) - cy.get('[data-bs-toggle="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('tooltip_modal'); - }) - cy.get('@modal').invoke('toggle') - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show').and('be.visible') - cy.wait(200) - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show') - cy.wait(200) - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show').and('be.visible') - cy.get('@modal').invoke('toggle') - // cy.wait(200) - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show') - }); - - it('Can be toggleEnabled when inside a small modal', () => { - cy.visit('cypress/modal.html'); - - cy.get('.modal').eq(1).then(($modal) => { - cy.wrap(new Modal($modal[0])).as('modal'); - }) - cy.get('[data-bs-toggle="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('tooltip_modal'); - }) - cy.get('@modal').invoke('toggle') - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show').and('be.visible') - // cy.wait(200) - cy.get('@tooltip_modal').invoke('toggleEnabled') - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show') - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show') - cy.get('@tooltip_modal').invoke('toggleEnabled') - cy.wait(200) - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show').and('be.visible') - }); - - it('Can work with popover, template and sanitizeFn', () => { - cy.document().then((doc) => { - const popoverTarget = doc.createElement('button'); - popoverTarget.className = 'btn btn-primary'; - popoverTarget.innerText = 'Popover Demo'; - popoverTarget.setAttribute('data-bs-title', 'Popover demo title'); - popoverTarget.setAttribute('data-bs-content', 'Popover demo content'); - popoverTarget.setAttribute('data-bs-toggle', 'popover'); - popoverTarget.setAttribute('data-bs-dismissible', 'true'); - doc.querySelector('.btn-toolbar')?.append(popoverTarget); - }) - .get('[data-bs-toggle="popover"]').then(($element) => { - const [element] = $element; - // const HTML = element.ownerDocument.documentElement; - const template = element.ownerDocument.createElement('div'); - template.innerHTML = ``; - // add another container for code coverage - cy.wrap(new Popover(element, {template: template.firstChild as HTMLElement, sanitizeFn: (c) => c.trim()})).as('popover'); - }) - cy.get('@popover').invoke('show') - .then(() => { - cy.get('@popover').its('tooltip').should('have.class', 'show') - }) - }); - - it('Can work with popover and micro-template', () => { - cy.document().then((doc) => { - const popoverTarget = doc.createElement('button'); - popoverTarget.className = 'btn btn-primary'; - popoverTarget.innerText = 'Popover Demo'; - popoverTarget.setAttribute('data-bs-toggle', 'popover'); - popoverTarget.setAttribute('data-bs-dismissible', 'true'); - doc.querySelector('.btn-toolbar')?.append(popoverTarget); - }) - cy.get('[data-bs-toggle="popover"]').then(($element) => { - const element = $element[0]; - const doc = element.ownerDocument; - const title = doc.createElement('div'); - title.innerHTML = `My Header Micro-Template`; - const content = doc.createElement('div'); - content.innerHTML = `

My Content Micro-Template

`; - const btnClose = doc.createElement('div'); - btnClose.innerHTML = ''; - // add another container for code coverage - cy.wrap(new Popover(element, { - title: title.firstChild as HTMLElement, - content: content.firstChild as HTMLElement, - btnClose: btnClose.firstChild as HTMLElement, - customClass: 'custom-class' - })).as('popover'); - }) - cy.get('@popover').invoke('show') - cy.get('@popover').its('tooltip').should('have.class', 'custom-class').and('have.class', 'show') - }); - - it('Can be dismissed via touch events', () => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('touch_dismiss'); - }) - cy.get('@touch_dismiss').invoke('show') - cy.get('@touch_dismiss').its('tooltip').then((tip) => { - cy.wrap(tip).should('have.class', 'show').and('be.visible') - }) - // cy.wait(200) - cy.get('body').trigger('touchstart', 890, 10, { force: true }) - cy.get('body').trigger('touchend', 890, 10, { force: true }) - cy.get('@touch_dismiss').its('tooltip').then((tip) => { - cy.wrap(tip).should('not.exist') - }) - // cy.wait(200) - }); - - it('Can work with popover without title 1', () => { - cy.document().then((doc) => { - const popoverTarget = doc.createElement('button'); - popoverTarget.className = 'btn btn-primary'; - popoverTarget.innerText = 'Popover Demo'; - popoverTarget.setAttribute('data-bs-toggle', 'popover'); - popoverTarget.setAttribute('data-bs-dismissible', 'true'); - doc.querySelector('.btn-toolbar')?.append(popoverTarget); - }) - .get('[data-bs-toggle="popover"]').then(($element) => { - const element = $element[0]; - // add another container for code coverage - cy.wrap(new Popover(element, { - content: `

My Content Micro-Template

`, - btnClose: '', - })).as('popover1'); - }) - .get('@popover1').invoke('show') - .get('@popover1').its('tooltip').should('have.class', 'show') - }); - - it('Can work with popover without title 2', () => { - cy.document().then((doc) => { - const popoverTarget = doc.createElement('button'); - popoverTarget.className = 'btn btn-primary'; - popoverTarget.innerText = 'Popover Demo'; - popoverTarget.setAttribute('data-bs-toggle', 'popover'); - popoverTarget.setAttribute('data-bs-dismissible', 'true'); - doc.querySelector('.btn-toolbar')?.append(popoverTarget); - }) - cy.get('[data-bs-toggle="popover"]').then(($element) => { - const element = $element[0]; - // add another container for code coverage - const btnClose = element.ownerDocument.createElement('div'); - btnClose.innerHTML = ''; - cy.wrap(new Popover(element, { - content: `

My Content Micro-Template

`, - btnClose: btnClose.firstChild as HTMLElement, - })).as('popover2'); - }) - cy.get('@popover2').invoke('show') - cy.get('.tooltip').should('have.class', 'show') - }); - - it('Can work with RTL', () => { - cy.get('[data-cy="tooltip"]').eq(3).then(($element) => { - const element = $element[0]; - changeDirection(element, 'rtl'); // added template without tooltip class for coverage - cy.wrap(new Tooltip(element, {template: '
'})).as('rtl'); - }) - cy.get('@rtl').invoke('show') - cy.get('.tooltip').should('have.class', 'show').and('be.visible') - cy.wait(200) - }); - - it('Can do custom events', () => { - cy.log('**hide.bs.tooltip** event can be default prevented').then(() => { - cy.get('[data-cy="tooltip"]').eq(0).then(($element) => { - const element = $element[0]; - element.addEventListener('hide.bs.tooltip', function(e){ - if (!element.innerText.includes('wombat')) { - e.preventDefault(); - } - }) - cy.wrap(new Tooltip(element, {title: 'Sample Title'})).as('hide_event'); - }) - .get('@hide_event').invoke('show') - .get('@hide_event').its('tooltip').should('have.class', 'show').and('be.visible') - .get('@hide_event').invoke('hide') - .get('@hide_event').its('tooltip').should('have.class', 'show').and('be.visible') - }) - .wait(200) - .log('**show.bs.tooltip** event can be default prevented').then(() => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - const element = $element[0]; - element.addEventListener('show.bs.tooltip', function(e){ - if (!element.innerText.includes('wombat')) { - e.preventDefault(); - } - }) - cy.wrap(new Tooltip(element)).as('show_event'); - }) - .get('@show_event').invoke('show') - .get('@show_event').its('tooltip').should('not.exist') - }) - .wait(200) - }); - - it('Can dispose()', () => { - cy.log('can dispose **open**').then(() => { - cy.get('[data-cy="tooltip"]').eq(0).then(($element) => { - cy.wrap(new Tooltip($element[0], { title: 'Sample Content'})).as('instance0'); - }) - cy.get('@instance0').invoke('show') - cy.get('@instance0').its('tooltip').then((tip) => { - cy.wrap(tip).should('have.class', 'show').and('be.visible') - }) - - cy.get('@instance0').invoke('dispose') - cy.get('@instance0').its('element').should('be.undefined') - cy.get('@instance0').its('tooltip').should('be.undefined') - }) - // .wait(100) - cy.log('can dispose **closed**').then(() => { - cy.get('[data-cy="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('instance1'); - cy.get('@instance1').invoke('dispose') - cy.get('@instance1').its('element').should('be.undefined') - cy.get('@instance1').its('tooltip').should('be.undefined') - cy.get('[data-cy="tooltip"]').eq(1).should('have.attr', 'title') - cy.get('[data-cy="tooltip"]').eq(1).should('not.have.attr', 'data-original-title') - }) - }) - }); - - it('Can be disposed when inside a small modal', () => { - cy.visit('cypress/modal.html'); - - cy.get('.modal').eq(1).then(($modal) => { - cy.wrap(new Modal($modal[0])).as('modal'); - }) - cy.get('[data-bs-toggle="tooltip"]').eq(1).then(($element) => { - cy.wrap(new Tooltip($element[0])).as('tooltip_modal'); - }) - cy.get('@modal').invoke('toggle') - cy.get('@tooltip_modal').invoke('toggle') - cy.get('@tooltip_modal').its('tooltip').should('have.class', 'show').and('be.visible') - // cy.wait(200) - cy.get('@tooltip_modal').invoke('dispose') - cy.get('@tooltip_modal').its('tooltip').should('not.have.class', 'show') - cy.get('@tooltip_modal').its('tooltip').should('be.undefined'); - cy.visit('cypress/tooltip.html') - }); -}); \ No newline at end of file diff --git a/cypress/fixtures/changeDirection.js b/cypress/fixtures/changeDirection.js deleted file mode 100644 index 70545433..00000000 --- a/cypress/fixtures/changeDirection.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Sets the `dir` attribute for `` element. - * @param {HTMLElement} element target - * @param {string=} requestedDir requested language direction - */ -export default function changeDirection(element, requestedDir) { - const doc = element.ownerDocument; - const dir = requestedDir === 'rtl' ? 'rtl' : ''; - const HTML = doc.documentElement; - const STYLE = doc.querySelector('link'); - let HREF = 'https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css'; - // set RTL mode - if (dir) { - HTML.setAttribute('dir', 'rtl'); - STYLE.setAttribute('href', HREF.replace('.min', '.rtl.min')); - } else { - HTML.removeAttribute('dir'); - STYLE.setAttribute('href', HREF); - } -} \ No newline at end of file diff --git a/cypress/modal.html b/cypress/modal.html deleted file mode 100644 index 9342aebe..00000000 --- a/cypress/modal.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - BSN Testing Page - - - - -
- -
-

Modal Examples

- - Launch simple modal - - - -
-
- - diff --git a/cypress/offcanvas.html b/cypress/offcanvas.html deleted file mode 100644 index 8eb66997..00000000 --- a/cypress/offcanvas.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - BSN Testing Page - - - - -

Offcanvas Examples

-
- - Link with href - - -
- - - - - - diff --git a/cypress/plugins/esbuild-istanbul.ts b/cypress/plugins/esbuild-istanbul.ts deleted file mode 100644 index 656a48da..00000000 --- a/cypress/plugins/esbuild-istanbul.ts +++ /dev/null @@ -1,50 +0,0 @@ -// sources -// * https://github.com/enketo/enketo-express/blob/master/tools/esbuild-plugin-istanbul.js -'use strict'; -import esbuild from 'esbuild'; -import { promises } from 'fs'; -import { createInstrumenter } from 'istanbul-lib-instrument'; -import { extname, sep } from 'path'; -import tsCompile from './tsCompile'; - -// import Cypress settings -const sourceFolder = 'src'; -const [name] = process.cwd().split(sep).slice(-1); - -const sourceFilter = `${name}${sep}${sourceFolder}`; -const instrumenter = createInstrumenter({ - compact: false, - esModules: true, - preserveComments: true, - autoWrap: true, -}); - -const createEsbuildIstanbulPlugin = (): esbuild.Plugin => { - return { - name: 'istanbul', - setup(build: esbuild.PluginBuild) { - build.onLoad( - { filter: /\.(ts|tsx)$/ }, - async ({ path }: esbuild.OnLoadArgs): Promise<{ contents: string } & Record> => { - - if (!path.includes(sourceFilter)) { - // console.log("> compiling typescript %s for output build", path); - const contents = await promises.readFile(path, 'utf8'); - return { - contents: ['.ts', '.tsx'].includes(extname(path)) ? tsCompile(path).outputText : contents, - }; - } - - // console.log("🧡 instrumenting %s for output coverage", path); - const { outputText, sourceMap } = tsCompile(path); - - return { - contents: instrumenter.instrumentSync(outputText, path, sourceMap), - }; - }, - ); - }, - }; -}; - -export default createEsbuildIstanbulPlugin; diff --git a/cypress/plugins/tsCompile.ts b/cypress/plugins/tsCompile.ts deleted file mode 100644 index 6d39f47e..00000000 --- a/cypress/plugins/tsCompile.ts +++ /dev/null @@ -1,34 +0,0 @@ -// compile.ts -import TypeScript from 'typescript'; -import { basename } from 'path'; -import { RawSourceMap } from 'source-map'; -import { readFileSync } from 'fs'; - -export default function tsCompile( - path: string, - ops?: Partial, -): TypeScript.TranspileOutput & { sourceMap: RawSourceMap } { - // Default options -- you could also perform a merge, or use the project tsconfig.json - const options: TypeScript.TranspileOptions = Object.assign( - { - compilerOptions: { - allowJs: true, - esModuleInterop: true, - removeComments: false, - target: 99, // ESNext - allowSyntheticDefaultImports: true, - isolatedModules: true, - noEmitHelpers: true, - sourceMap: true, - } as Partial, - }, - ops, - ); - const contents = readFileSync(path, { encoding: 'utf8' }); - const { outputText, sourceMapText } = TypeScript.transpileModule(contents, options); - const sourceMap: RawSourceMap = JSON.parse(sourceMapText || ''); - sourceMap.file = basename(path); - sourceMap.sources = [basename(path)]; - - return { outputText, sourceMap, sourceMapText }; -} diff --git a/cypress/popover.html b/cypress/popover.html deleted file mode 100644 index 756f80bf..00000000 --- a/cypress/popover.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - BSN Testing Page - - - -

Popover Example

-
- -
- - diff --git a/cypress/scrollspy.html b/cypress/scrollspy.html deleted file mode 100644 index 67585dca..00000000 --- a/cypress/scrollspy.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - BSN Testing Page - - - -

ScrollSpy Examples

-
-
- -
-

Tumblr farm

-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr - farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 - wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of - them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony - biodiesel keffiyeh artisan ullamco consequat.

- -

Carles aesthetic

-

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat - mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, - mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis - gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

- -
one
-

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh - mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park - consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. - Cred ex in, sustainable delectus consectetur fanny pack iphone.

- -
two
-

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. - Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure - four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party - fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. - Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn - nesciunt.

- -
three
-

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr - farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan.

-
-
-
-

Navbar

-
-
-
-
-
-
- -
-
-
-

Item 1

-

Ex consequat commodo adipisicing exercitation aute excepteur occaecat ullamco duis aliqua id magna ullamco eu. - Do aute ipsum ipsum ullamco cillum consectetur ut et aute consectetur labore. Fugiat laborum incididunt tempor - eu consequat enim dolore proident. Qui laborum do non excepteur nulla magna eiusmod consectetur in. Aliqua - et aliqua officia quis et incididunt voluptate non anim reprehenderit adipisicing dolore ut consequat deserunt - mollit dolore. Aliquip nulla enim veniam non fugiat id cupidatat nulla elit cupidatat commodo velit ut - eiusmod cupidatat elit dolore.

-
Item 1-1
-

Amet tempor mollit aliquip pariatur excepteur commodo do ea cillum commodo Lorem et occaecat elit qui et. - Aliquip labore ex ex esse voluptate occaecat Lorem ullamco deserunt. Aliqua cillum excepteur irure consequat - id quis ea. Sit proident ullamco aute magna pariatur nostrud labore. Reprehenderit aliqua commodo eiusmod - aliquip est do duis amet proident magna consectetur consequat eu commodo fugiat non quis. Enim aliquip - exercitation ullamco adipisicing voluptate excepteur minim exercitation minim minim commodo adipisicing - exercitation officia nisi adipisicing. Anim id duis qui consequat labore adipisicing sint dolor elit - cillum anim et fugiat.

-
Item 1-2
-

Cillum nisi deserunt magna eiusmod qui eiusmod velit voluptate pariatur laborum sunt enim. Irure laboris mollit - consequat incididunt sint et culpa culpa incididunt adipisicing magna magna occaecat. Nulla ipsum cillum eiusmod - sint elit excepteur ea labore enim consectetur in labore anim. Proident ullamco ipsum esse elit ut Lorem eiusmod - dolor et eiusmod. Anim occaecat nulla in non consequat eiusmod velit incididunt.

-

Item 2

-

Quis magna Lorem anim amet ipsum do mollit sit cillum voluptate ex nulla tempor. Laborum consequat non elit enim - exercitation cillum aliqua consequat id aliqua. Esse ex consectetur mollit voluptate est in duis laboris ad sit - ipsum anim Lorem. Incididunt veniam velit elit elit veniam Lorem aliqua quis ullamco deserunt sit enim elit - aliqua esse irure. Laborum nisi sit est tempor laborum mollit labore officia laborum excepteur commodo non - commodo dolor excepteur commodo. Ipsum fugiat ex est consectetur ipsum commodo tempor sunt in proident.

-

Item 3

-

Quis anim sit do amet fugiat dolor velit sit ea ea do reprehenderit culpa duis. Nostrud aliqua ipsum fugiat minim - proident occaecat excepteur aliquip culpa aute tempor reprehenderit. Deserunt tempor mollit elit ex pariatur dolore - velit fugiat mollit culpa irure ullamco est ex ullamco excepteur.

-
-
-
-
-
-

Regular Nav

-
-
- - diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts deleted file mode 100644 index 1f34f2d9..00000000 --- a/cypress/support/commands.ts +++ /dev/null @@ -1,25 +0,0 @@ -// *********************************************** -// This example commands.js shows you how to -// create various custom commands and overwrite -// existing commands. -// -// For more comprehensive examples of custom -// commands please read more here: -// https://on.cypress.io/custom-commands -// *********************************************** -// -// -// -- This is a parent command -- -// Cypress.Commands.add('login', (email, password) => { ... }) -// -// -// -- This is a child command -- -// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... }) -// -// -// -- This is a dual command -- -// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... }) -// -// -// -- This will overwrite an existing command -- -// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts deleted file mode 100644 index cd43cd22..00000000 --- a/cypress/support/e2e.ts +++ /dev/null @@ -1,21 +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: -// require('./commands') -import './commands' - -// Alternatively you can use CommonJS syntax: -import '@cypress/code-coverage/support' diff --git a/cypress/tab.html b/cypress/tab.html deleted file mode 100644 index 98036b40..00000000 --- a/cypress/tab.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - BSN Testing Page - - - - -
-
-

Tab Examples

- - -
-
-

These tabs have no active tab on initialization. Nesciunt tofu stumptown aliqua, retro synth - master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Messenger bag gentrify pitchfork tattooed - craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings - gentrify squid 8-bit cred pitchfork.

-
- - -
- - -
-
-

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth - master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.

-
-
-

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 - labore velit, blog sartorial PBR leggings next level wes anderson artisan four.

-
-
-
-
- - diff --git a/cypress/toast.html b/cypress/toast.html deleted file mode 100644 index 109b4475..00000000 --- a/cypress/toast.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - BSN Testing Page - - - -

Toast Example

-
- - Show Toast 2 -
-
- - -
- - diff --git a/cypress/tooltip.html b/cypress/tooltip.html deleted file mode 100644 index 293a3be5..00000000 --- a/cypress/tooltip.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - BSN Testing Page - - - -
-

Tooltip Example

-
- - Events - - - - - - -
- -
- - - SVG - - Demo Tooltip for IMG -
-
- - diff --git a/dist/bootstrap-native.cjs b/dist/bootstrap-native.cjs index db7f6194..4f15eedc 100644 --- a/dist/bootstrap-native.cjs +++ b/dist/bootstrap-native.cjs @@ -1,2 +1,186 @@ -"use strict";var Bo=Object.defineProperty;var Ro=(t,s,e)=>s in t?Bo(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var d=(t,s,e)=>Ro(t,typeof s!="symbol"?s+"":s,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Nn="aria-describedby",De="aria-expanded",ke="aria-hidden",Ne="aria-modal",Os="aria-pressed",Qe="aria-selected",Wo="DOMContentLoaded",Es="focus",$s="focusin",On="focusout",Oe="keydown",Fo="keyup",N="click",Mn="mousedown",jo="hover",Me="mouseenter",Ts="mouseleave",zo="pointerdown",Vo="pointermove",Ko="pointerup",_e="resize",Be="scroll",ys="touchstart",Xo="dragstart",as="ArrowDown",rs="ArrowUp",Ms="ArrowLeft",_s="ArrowRight",Cs="Escape",Yo="transitionDuration",Uo="transitionDelay",Ze="transitionend",_n="transitionProperty",qo=navigator.userAgentData,Ae=qo,{userAgent:Qo}=navigator,Le=Qo,Bs=/iPhone|iPad|iPod|Android/i;Ae?Ae.brands.some(t=>Bs.test(t.brand)):Bs.test(Le);const Rs=/(iPhone|iPod|iPad)/,Zo=Ae?Ae.brands.some(t=>Rs.test(t.brand)):Rs.test(Le);Le&&Le.includes("Firefox");const{head:Re}=document;["webkitPerspective","perspective"].some(t=>t in Re.style);const Go=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Jo=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},ti=(t,s,e,n)=>{const o=i=>{(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Jo(t,s,o,n))};Go(t,s,o,n)},ge=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});ti(document,Wo,ge,s)}catch{}return t})();["webkitTransform","transform"].some(t=>t in Re.style);["webkitAnimation","animation"].some(t=>t in Re.style);["webkitTransition","transition"].some(t=>t in Re.style);const it=(t,s)=>t.getAttribute(s),Ie=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),Nt=(t,s)=>t.removeAttribute(s),g=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},h=(t,s)=>t.classList.contains(s),ve=t=>t!=null&&typeof t=="object"||!1,L=t=>ve(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,y=t=>L(t)&&t.nodeType===1||!1,jt=new Map,Lt={data:jt,set:(t,s,e)=>{y(t)&&(jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e))},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!y(t)||!s)return null;const e=Lt.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=Lt.getAllFor(s);!e||!y(t)||(e.delete(t),e.size===0&&jt.delete(s))}},F=(t,s)=>Lt.get(t,s),be=t=>typeof t=="string"||!1,Ss=t=>ve(t)&&t.constructor.name==="Window"||!1,Bn=t=>L(t)&&t.nodeType===9||!1,E=t=>Ss(t)?t.document:Bn(t)?t:L(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),$t=t=>{if(!t)return;if(be(t))return E().createElement(t);const{tagName:s}=t,e=$t(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),V=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},ei=t=>{const s=V(t,_n),e=V(t,Uo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},ee=t=>{const s=V(t,_n),e=V(t,Yo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},x=(t,s)=>{let e=0;const n=new Event(Ze),o=ee(t),i=ei(t);if(o){const c=a=>{a.target===t&&(s.apply(t,[a]),t.removeEventListener(Ze,c),e=1)};t.addEventListener(Ze,c),setTimeout(()=>{e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Ws=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Ce=t=>Object.entries(t),se=t=>t.toLowerCase(),si=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},l="title";return Ce(i).forEach(([r,f])=>{const p=typeof r=="string"&&r.includes(n)?r.replace(n,"").replace(/[A-Z]/g,v=>se(v)):r;a[p]=Ws(f)}),Ce(o).forEach(([r,f])=>{o[r]=Ws(f)}),Ce(s).forEach(([r,f])=>{r in o?c[r]=o[r]:r in a?c[r]=a[r]:c[r]=r===l?it(t,l):f}),c},Fs=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});return ve(s)&&dt(e,s),e},st={passive:!0},_t=t=>t.offsetHeight,I=(t,s)=>{Ce(s).forEach(([e,n])=>{if(n&&be(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},ls=t=>ve(t)&&t.constructor.name==="Map"||!1,ni=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{y(t)&&(n&&n.length?(bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))):bt.set(t,setTimeout(s,e)))},get:(t,s)=>{if(!y(t))return null;const e=bt.get(t);return s&&e&&ls(e)?e.get(s)||null:ni(e)?e:null},clear:(t,s)=>{if(!y(t))return;const e=bt.get(t);s&&s.length&&ls(e)?(clearTimeout(e.get(s)),e.delete(s),e.size===0&&bt.delete(t)):(clearTimeout(e),bt.delete(t))}},we=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let l=1,r=1;if(s&&y(t)){const{offsetWidth:f,offsetHeight:p}=t;l=f>0?Math.round(e)/f:1,r=p>0?Math.round(n)/p:1}return{width:e/l,height:n/r,top:o/r,right:i/l,bottom:c/r,left:a/l,x:a/l,y:o/r}},Ht=t=>E(t).body,ft=t=>E(t).documentElement,Rn=t=>L(t)&&t.constructor.name==="ShadowRoot"||!1,oi=t=>t.nodeName==="HTML"?t:y(t)&&t.assignedSlot||L(t)&&t.parentNode||Rn(t)&&t.host||ft(t);let js=0,zs=0;const zt=new Map,Wn=(t,s)=>{let e=s?js:zs;if(s){const n=Wn(t),o=zt.get(n)||new Map;zt.has(n)||zt.set(n,o),ls(o)&&!o.has(s)?(o.set(s,e),js+=1):e=o.get(s)}else{const n=t.id||t;zt.has(n)?e=zt.get(n):(zt.set(n,e),zs+=1)}return e},ie=t=>{var s;return t?Bn(t)?t.defaultView:L(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},ii=t=>Array.isArray(t)||!1,Fn=t=>{if(!L(t))return!1;const{top:s,bottom:e}=we(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},ci=t=>typeof t=="function"||!1,ai=t=>ve(t)&&t.constructor.name==="NodeList"||!1,St=t=>ft(t).dir==="rtl",ri=t=>L(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,P=(t,s)=>y(t)?t:(L(s)?s:E()).querySelector(t),Hs=(t,s)=>(L(s)?s:E()).getElementsByTagName(t),tt=(t,s)=>(L(s)?s:E()).querySelectorAll(t),rt=(t,s)=>(s&&L(s)?s:E()).getElementsByClassName(t),jn=(t,s)=>t.matches(s),Vt={},zn=t=>{const{type:s,currentTarget:e}=t;[...Vt[s]].forEach(([n,o])=>{e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{Vt[s]||(Vt[s]=new Map);const o=Vt[s];o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n),c||t.addEventListener(s,zn,n)},B=(t,s,e,n)=>{const o=Vt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;i&&i.has(e)&&i.delete(e),o&&(!i||!i.size)&&o.delete(t),(!o||!o.size)&&delete Vt[s],(!i||!i.size)&&t.removeEventListener(s,zn,a)},R="fade",m="show",We="data-bs-dismiss",Fe="alert",Vn="Alert",li="5.0.14",di=li;class nt{constructor(s,e){d(this,"_toggleEventListeners",()=>{});const n=P(s);if(!n)throw be(s)?Error(`${this.name} Error: "${s}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=Lt.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Fs(this.defaults).length?si(n,this.defaults,e||{},"bs"):{},Lt.set(n,this.name,this)}get version(){return di}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){Lt.remove(this.element,this.name),Fs(this).forEach(s=>{delete this[s]})}}const hi=`.${Fe}`,fi=`[${We}="${Fe}"]`,gi=t=>F(t,Vn),pi=t=>new Kt(t),Vs=$(`close.bs.${Fe}`),ui=$(`closed.bs.${Fe}`),Ks=t=>{const{element:s}=t;w(s,ui),t._toggleEventListeners(),t.dispose(),s.remove()};class Kt extends nt{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;e&&h(e,m)&&(w(e,Vs),Vs.defaultPrevented||(b(e,m),h(e,R)?x(e,()=>Ks(this)):Ks(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;o&&n(o,N,i)});this.dismiss=P(fi,this.element),this._toggleEventListeners(!0)}get name(){return Vn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Kt,"selector",hi),d(Kt,"init",pi),d(Kt,"getInstance",gi);const C="active",ct="data-bs-toggle",mi="button",Kn="Button",vi=`[${ct}="${mi}"]`,bi=t=>F(t,Kn),wi=t=>new Xt(t);class Xt extends nt{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!h(n,"disabled")&&!it(n,"disabled")&&((o?b:g)(n,C),O(n,Os,o?"false":"true"),this.isActive=h(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=h(n,C),O(n,Os,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return Kn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Xt,"selector",vi),d(Xt,"init",wi),d(Xt,"getInstance",bi);const ds="data-bs-target",It="carousel",Xn="Carousel",Xs="data-bs-parent",Ei="data-bs-container",X=t=>{const s=[ds,Xs,Ei,"href"],e=E(t);return s.map(n=>{const o=it(t,n);return o?n===Xs?M(t,o):P(o,e):null}).filter(n=>n)[0]},Ee=`[data-bs-ride="${It}"]`,Q=`${It}-item`,hs="data-bs-slide-to",Et="data-bs-slide",Tt="paused",Ys={pause:"hover",keyboard:!1,touch:!0,interval:5e3},gt=t=>F(t,Xn),$i=t=>new Yt(t);let fe=0,Se=0,Ge=0;const Je=$(`slide.bs.${It}`),fs=$(`slid.bs.${It}`),Us=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;if(t.isAnimating){const c=gs(t),a=e==="left"?"next":"prev",l=e==="left"?"start":"end";g(o[s],C),b(o[s],`${Q}-${a}`),b(o[s],`${Q}-${l}`),b(o[c],C),b(o[c],`${Q}-${l}`),w(n,fs),u.clear(n,Et),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function Ti(){const t=gt(this);t&&!t.isPaused&&!u.get(this,Tt)&&g(this,Tt)}function yi(){const t=gt(this);t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function Ci(t){t.preventDefault();const s=M(this,Ee)||X(this),e=gt(s);if(e&&!e.isAnimating){const n=+(it(this,hs)||0);this&&!h(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Si(t){t.preventDefault();const s=M(this,Ee)||X(this),e=gt(s);if(e&&!e.isAnimating){const n=it(this,Et);n==="next"?e.next():n==="prev"&&e.prev()}}const Hi=({code:t,target:s})=>{const e=E(s),[n]=[...tt(Ee,e)].filter(i=>Fn(i)),o=gt(n);if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=St(n);t===(i?_s:Ms)?o.prev():t===(i?Ms:_s)&&o.next()}};function qs(t){const{target:s}=t,e=gt(this);e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function xi(t){const{target:s}=t,e=gt(this);if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;[...n,...o].every(i=>i===s||i.contains(s))||(fe=t.pageX,this.contains(s)&&(e.isTouch=!0,Yn(e,!0)))}}const Pi=t=>{Se=t.pageX},Di=t=>{var o;const{target:s}=t,e=E(s),n=[...tt(Ee,e)].map(i=>gt(i)).find(i=>i.isTouch);if(n){const{element:i,index:c}=n,a=St(i);Ge=t.pageX,n.isTouch=!1,Yn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(fe-Ge)>120&&(Sefe&&n.to(c+(a?1:-1))),fe=0,Se=0,Ge=0}},ts=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C)),t.indicators[s]&&g(e[s],C)},Yn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),Vo,Pi,st),n(E(e),Ko,Di,st)},gs=t=>{const{slides:s,element:e}=t,n=P(`.${Q}.${C}`,e);return y(n)?[...s].indexOf(n):-1};class Yt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:l,pause:r,interval:f,keyboard:p}=o,v=e?_:B;r&&f&&(v(n,Me,Ti),v(n,Ts,yi)),l&&i.length>2&&(v(n,zo,xi,st),v(n,ys,qs,{passive:!1}),v(n,Xo,qs,{passive:!1})),c.length&&c.forEach(D=>{D&&v(D,N,Si)}),a.length&&a.forEach(D=>{v(D,N,Ci)}),p&&v(E(n),Oe,Hi)});const{element:o}=this;this.direction=St(o)?"right":"left",this.isTouch=!1,this.slides=rt(Q,o);const{slides:i}=this;if(i.length>=2){const c=gs(this),a=[...i].find(f=>jn(f,`.${Q}-next,.${Q}-next`));this.index=c;const l=E(o);this.controls=[...tt(`[${Et}]`,o),...tt(`[${Et}][${ds}="#${o.id}"]`,l)].filter((f,p,v)=>p===v.indexOf(f)),this.indicator=P(`.${It}-indicators`,o),this.indicators=[...this.indicator?tt(`[${hs}]`,this.indicator):[],...tt(`[${hs}][${ds}="#${o.id}"]`,l)].filter((f,p,v)=>p===v.indexOf(f));const{options:r}=this;this.options.interval=r.interval===!0?Ys.interval:r.interval,a?this.index=[...i].indexOf(a):c<0&&(this.index=0,g(i[0],C),this.indicators.length&&ts(this,0)),this.indicators.length&&ts(this,this.index),this._toggleEventListeners(!0),r.interval&&this.cycle()}}get name(){return Xn}get defaults(){return Ys}get isPaused(){return h(this.element,Tt)}get isAnimating(){return P(`.${Q}-next,.${Q}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,It),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{this.element&&!this.isPaused&&!this.isTouch&&Fn(e)&&this.to(i+1)},n.interval,It)}pause(){const{element:e,options:n}=this;!this.isPaused&&n.interval&&(g(e,Tt),u.set(e,()=>{},1,Tt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=gs(this),a=St(n);let l=e;if(!this.isAnimating&&c!==l&&!u.get(n,Et)){cl||c===o.length-1&&l===0)&&(this.direction=a?"left":"right");const{direction:r}=this;l<0?l=o.length-1:l>=o.length&&(l=0);const f=r==="left"?"next":"prev",p=r==="left"?"start":"end",v={relatedTarget:o[l],from:c,to:l,direction:r};dt(Je,v),dt(fs,v),w(n,Je),Je.defaultPrevented||(this.index=l,ts(this,l),ee(o[l])&&h(n,"slide")?u.set(n,()=>{g(o[l],`${Q}-${f}`),_t(o[l]),g(o[l],`${Q}-${p}`),g(o[c],`${Q}-${p}`),x(o[l],()=>this.slides&&this.slides.length&&Us(this))},0,Et):(g(o[l],C),b(o[c],C),u.set(n,()=>{u.clear(n,Et),n&&i.interval&&!this.isPaused&&this.cycle(),w(n,fs)},0,Et)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose(),n.isAnimating&&x(n.slides[n.index],()=>{Us(n)})}}d(Yt,"selector",Ee),d(Yt,"init",$i),d(Yt,"getInstance",gt);const Ot="collapsing",K="collapse",Un="Collapse",Ai=`.${K}`,qn=`[${ct}="${K}"]`,Li={parent:null},He=t=>F(t,Un),Ii=t=>new Ut(t),Qs=$(`show.bs.${K}`),ki=$(`shown.bs.${K}`),Zs=$(`hide.bs.${K}`),Ni=$(`hidden.bs.${K}`),Oi=t=>{const{element:s,parent:e,triggers:n}=t;w(s,Qs),Qs.defaultPrevented||(u.set(s,ge,17),e&&u.set(e,ge,17),g(s,Ot),b(s,K),I(s,{height:`${s.scrollHeight}px`}),x(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,De,"true")),b(s,Ot),g(s,K),g(s,m),I(s,{height:""}),w(s,ki)}))},Gs=t=>{const{element:s,parent:e,triggers:n}=t;w(s,Zs),Zs.defaultPrevented||(u.set(s,ge,17),e&&u.set(e,ge,17),I(s,{height:`${s.scrollHeight}px`}),b(s,K),b(s,m),g(s,Ot),_t(s),I(s,{height:"0px"}),x(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,De,"false")),b(s,Ot),g(s,K),I(s,{height:""}),w(s,Ni)}))},Mi=t=>{const{target:s}=t,e=s&&M(s,qn),n=e&&X(e),o=n&&He(n);o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Ut extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,Mi))});const{element:o,options:i}=this,c=E(o);this.triggers=[...tt(qn,c)].filter(a=>X(a)===o),this.parent=y(i.parent)?i.parent:be(i.parent)?X(o)||P(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return Un}get defaults(){return Li}hide(){const{triggers:e,element:n}=this;u.get(n)||(Gs(this),e.length&&e.forEach(o=>g(o,`${K}d`)))}show(){const{element:e,parent:n,triggers:o}=this;let i,c;n&&(i=[...tt(`.${K}.${m}`,n)].find(a=>He(a)),c=i&&He(i)),(!n||!u.get(n))&&!u.get(e)&&(c&&i!==e&&(Gs(c),c.triggers.forEach(a=>{g(a,`${K}d`)})),Oi(this),o.length&&o.forEach(a=>b(a,`${K}d`)))}toggle(){h(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",Ai),d(Ut,"init",Ii),d(Ut,"getInstance",He);const Mt=["dropdown","dropup","dropstart","dropend"],Qn="Dropdown",Zn="dropdown-menu",Gn=t=>{const s=M(t,"A");return t.tagName==="A"&&Ie(t,"href")&&it(t,"href").slice(-1)==="#"||s&&Ie(s,"href")&&it(s,"href").slice(-1)==="#"},[et,ps,us,ms]=Mt,Jn=`[${ct}="${et}"]`,ne=t=>F(t,Qn),_i=t=>new qt(t),Bi=`${Zn}-end`,Js=[et,ps],tn=[us,ms],en=["A","BUTTON"],Ri={offset:5,display:"dynamic"},es=$(`show.bs.${et}`),sn=$(`shown.bs.${et}`),ss=$(`hide.bs.${et}`),nn=$(`hidden.bs.${et}`),to=$(`updated.bs.${et}`),eo=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;if(V(e,"position")!=="static"){const c=St(s),a=h(e,Bi);["margin","top","bottom","left","right"].forEach(k=>{const ut={};ut[k]="",I(e,ut)});let r=Mt.find(k=>h(n,k))||et;const f={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:D}=e,{clientWidth:q,clientHeight:T}=ft(s),{left:j,top:Y,width:Rt,height:at}=we(s),S=j-v-i<0,J=j+v+Rt+i>=q,ot=Y+D+i>=T,W=Y+D+at+i>=T,z=Y-D-i<0,H=(!c&&a||c&&!a)&&j+Rt-v<0,Wt=(c&&a||!c&&!a)&&j+v>=q;if(tn.includes(r)&&S&&J&&(r=et),r===us&&(c?J:S)&&(r=ms),r===ms&&(c?S:J)&&(r=us),r===ps&&z&&!W&&(r=et),r===et&&W&&!z&&(r=ps),tn.includes(r)&&ot&&dt(p[r],{top:"auto",bottom:0}),Js.includes(r)&&(H||Wt)){let k={left:"auto",right:"auto"};!H&&Wt&&!c&&(k={left:"auto",right:0}),H&&!Wt&&c&&(k={left:0,right:"auto"}),k&&dt(p[r],k)}const pt=f[r];I(e,{...p[r],margin:`${pt.map(k=>k&&`${k}px`).join(" ")}`}),Js.includes(r)&&a&&a&&I(e,p[!c&&H||c&&Wt?"menuStart":"menuEnd"]),w(n,to)}},Wi=t=>[...t.children].map(s=>{if(s&&en.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&en.includes(e.tagName)?e:null}).filter(s=>s),on=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,cn),n(o,Es,cn),n(o,Oe,ji),n(o,Fo,zi),e.display==="dynamic"&&[Be,_e].forEach(i=>{n(ie(s),i,Vi,st)})},je=t=>{const s=[...Mt,"btn-group","input-group"].map(e=>rt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Mt.some(n=>n===it(e,ct)))},cn=t=>{const{target:s,type:e}=t;if(s&&y(s)){const n=je(s),o=n&&ne(n);if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Mn].includes(e)&&Gn(s)&&t.preventDefault(),!a&&e!==Es&&s!==n&&s!==c&&o.hide()}}},Fi=t=>{const{target:s}=t,e=s&&M(s,Jn),n=e&&ne(e);n&&(t.stopPropagation(),n.toggle(),e&&Gn(e)&&t.preventDefault())},ji=t=>{[as,rs].includes(t.code)&&t.preventDefault()};function zi(t){const{code:s}=t,e=je(this),n=e&&ne(e),{activeElement:o}=e&&E(e);if(n&&o){const{menu:i,open:c}=n,a=Wi(i);if(a&&a.length&&[as,rs].includes(s)){let l=a.indexOf(o);o===e?l=0:s===rs?l=l>1?l-1:0:s===as&&(l=l{(e?_:B)(this.element,N,Fi)});const{parentElement:o}=this.element,[i]=rt(Zn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return Qn}get defaults(){return Ri}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;if(!n){const c=je(e),a=c&&ne(c);a&&a.hide(),[es,sn,to].forEach(l=>{l.relatedTarget=e}),w(i,es),es.defaultPrevented||(g(o,m),g(i,m),O(e,De,"true"),eo(this),this.open=!n,ht(e),on(this),w(i,sn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;n&&([ss,nn].forEach(c=>{c.relatedTarget=e}),w(i,ss),ss.defaultPrevented||(b(o,m),b(i,m),O(e,De,"false"),this.open=!n,on(this),w(i,nn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(qt,"selector",Jn),d(qt,"init",_i),d(qt,"getInstance",ne);const U="modal",xs="Modal",Ps="Offcanvas",Ki="fixed-top",Xi="fixed-bottom",so="sticky-top",no="position-sticky",oo=t=>[...rt(Ki,t),...rt(Xi,t),...rt(so,t),...rt(no,t),...rt("is-fixed",t)],Yi=t=>{const s=Ht(t);I(s,{paddingRight:"",overflow:""});const e=oo(s);e.length&&e.forEach(n=>{I(n,{paddingRight:"",marginRight:""})})},io=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=ie(t);return Math.abs(e-s)},co=(t,s)=>{const e=Ht(t),n=parseInt(V(e,"paddingRight"),10),i=V(e,"overflow")==="hidden"&&n?0:io(t),c=oo(e);s&&(I(e,{overflow:"hidden",paddingRight:`${n+i}px`}),c.length&&c.forEach(a=>{const l=V(a,"paddingRight");if(a.style.paddingRight=`${parseInt(l,10)+i}px`,[so,no].some(r=>h(a,r))){const r=V(a,"marginRight");a.style.marginRight=`${parseInt(r,10)-i}px`}}))},Z="offcanvas",yt=$t({tagName:"div",className:"popup-container"}),ao=(t,s)=>{const e=L(s)&&s.nodeName==="BODY",n=L(s)&&!e?s:yt,o=e?s:Ht(t);L(t)&&(n===yt&&o.append(yt),n.append(t))},ro=(t,s)=>{const e=L(s)&&s.nodeName==="BODY",n=L(s)&&!e?s:yt;L(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Ds=(t,s)=>{const e=L(s)&&s.nodeName!=="BODY"?s:yt;return L(t)&&e.contains(t)},lo="backdrop",an=`${U}-${lo}`,rn=`${Z}-${lo}`,ho=`.${U}.${m}`,As=`.${Z}.${m}`,A=$t("div"),Bt=t=>P(`${ho},${As}`,E(t)),Ls=t=>{const s=t?an:rn;[an,rn].forEach(e=>{b(A,e)}),g(A,s)},fo=(t,s,e)=>{Ls(e),ao(A,Ht(t)),s&&g(A,R)},go=()=>{h(A,m)||(g(A,m),_t(A))},ze=()=>{b(A,m)},po=t=>{Bt(t)||(b(A,R),ro(A,Ht(t)),Yi(t))},uo=t=>y(t)&&V(t,"visibility")!=="hidden"&&t.offsetParent!==null,Ui=`.${U}`,mo=`[${ct}="${U}"]`,qi=`[${We}="${U}"]`,vo=`${U}-static`,Qi={backdrop:!0,keyboard:!0},pe=t=>F(t,xs),Zi=t=>new Qt(t),xe=$(`show.bs.${U}`),ln=$(`shown.bs.${U}`),ns=$(`hide.bs.${U}`),dn=$(`hidden.bs.${U}`),bo=t=>{const{element:s}=t,e=io(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;if(!a&&e){const l=St(s)?"paddingLeft":"paddingRight",r={};r[l]=`${e}px`,I(s,r)}co(s,a||n!==o)},wo=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,tc),e(ie(n),_e,o,st),e(E(n),Oe,Ji)},hn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;po(e),I(e,{paddingRight:"",display:""}),wo(t);const o=xe.relatedTarget||s.find(uo);o&&ht(o),dn.relatedTarget=n,w(e,dn)},fn=t=>{const{element:s,relatedTarget:e}=t;ht(s),wo(t,!0),ln.relatedTarget=e,w(s,ln)},gn=t=>{const{element:s,hasFade:e}=t;I(s,{display:"block"}),bo(t),Bt(s)||I(Ht(s),{overflow:"hidden"}),g(s,m),Nt(s,ke),O(s,Ne,"true"),e?x(s,()=>fn(t)):fn(t)},pn=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&h(A,m)&&!Bt(s)?(ze(),x(A,()=>hn(t))):hn(t)},Gi=t=>{const{target:s}=t,e=s&&M(s,mo),n=e&&X(e),o=n&&pe(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle())},Ji=({code:t,target:s})=>{const e=P(ho,E(s)),n=e&&pe(e);if(n){const{options:o}=n;o.keyboard&&t===Cs&&h(e,m)&&(n.relatedTarget=null,n.hide())}},tc=t=>{var n,o;const{currentTarget:s}=t,e=s?pe(s):null;if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:l}=i,{target:r}=t,f=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(r),v=r&&M(r,qi);c&&!p?u.set(s,()=>{g(s,vo),x(a,()=>ec(e))},17):(v||!f&&!c&&!p&&l)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},ec=t=>{const{element:s,modalDialog:e}=t,n=(ee(e)||0)+17;b(s,vo),u.set(s,()=>u.clear(s),n)};class Qt extends nt{constructor(e,n){super(e,n);d(this,"update",()=>{h(this.element,m)&&bo(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,Gi))});const{element:o}=this,i=P(`.${U}-dialog`,o);i&&(this.modalDialog=i,this.triggers=[...tt(mo,E(o))].filter(c=>X(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=h(o,R),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return xs}get defaults(){return Qi}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;if(!h(e,m)&&(xe.relatedTarget=i||void 0,w(e,xe),!xe.defaultPrevented)){const l=Bt(e);if(l&&l!==e){const r=pe(l)||F(l,Ps);r&&r.hide()}c?(Ds(A)?Ls(!0):fo(e,o,!0),a=ee(A),go(),setTimeout(()=>gn(this),a)):(gn(this),l&&h(A,m)&&ze())}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;h(e,m)&&(ns.relatedTarget=o||void 0,w(e,ns),ns.defaultPrevented||(b(e,m),O(e,ke,"true"),Nt(e,Ne),n?x(e,()=>pn(this)):pn(this)))}dispose(){const e={...this},{element:n,modalDialog:o}=e,i=()=>super.dispose();this._toggleEventListeners(),this.hide(),h(n,"fade")?x(o,i):i()}}d(Qt,"selector",Ui),d(Qt,"init",Zi),d(Qt,"getInstance",pe);const sc=`.${Z}`,Is=`[${ct}="${Z}"]`,nc=`[${We}="${Z}"]`,Ve=`${Z}-toggling`,oc={backdrop:!0,keyboard:!0,scroll:!1},ue=t=>F(t,Ps),ic=t=>new Zt(t),Pe=$(`show.bs.${Z}`),Eo=$(`shown.bs.${Z}`),os=$(`hide.bs.${Z}`),$o=$(`hidden.bs.${Z}`),cc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);co(s,e!==n)},To=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Oe,dc),e(n,N,lc)},un=t=>{const{element:s,options:e}=t;e.scroll||(cc(t),I(Ht(s),{overflow:"hidden"})),g(s,Ve),g(s,m),I(s,{visibility:"visible"}),x(s,()=>hc(t))},ac=t=>{const{element:s,options:e}=t,n=Bt(s);s.blur(),!n&&e.backdrop&&h(A,m)&&ze(),x(s,()=>fc(t))},rc=t=>{const s=M(t.target,Is),e=s&&X(s),n=e&&ue(e);n&&(n.relatedTarget=s,n.toggle(),s&&s.tagName==="A"&&t.preventDefault())},lc=t=>{const{target:s}=t,e=P(As,E(s)),n=P(nc,e),o=e&&ue(e);if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,l=M(s,Is),r=E(e).getSelection();(!A.contains(s)||a!=="static")&&(!(r&&r.toString().length)&&(!e.contains(s)&&a&&(!l||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide()),l&&l.tagName==="A"&&t.preventDefault())}},dc=({code:t,target:s})=>{const e=P(As,E(s)),n=e&&ue(e);n&&n.options.keyboard&&t===Cs&&(n.relatedTarget=null,n.hide())},hc=t=>{const{element:s}=t;b(s,Ve),Nt(s,ke),O(s,Ne,"true"),O(s,"role","dialog"),w(s,Eo),To(t,!0),ht(s)},fc=t=>{const{element:s,triggers:e}=t;O(s,ke,"true"),Nt(s,Ne),Nt(s,"role"),I(s,{visibility:""});const n=Pe.relatedTarget||e.find(uo);n&&ht(n),po(s),w(s,$o),b(s,Ve),Bt(s)||To(t)};class Zt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,rc))});const{element:o}=this;this.triggers=[...tt(Is,E(o))].filter(i=>X(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return Ps}get defaults(){return oc}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!h(e,m)&&(Pe.relatedTarget=o||void 0,Eo.relatedTarget=o||void 0,w(e,Pe),!Pe.defaultPrevented)){const c=Bt(e);if(c&&c!==e){const a=ue(c)||F(c,xs);a&&a.hide()}n.backdrop?(Ds(A)?Ls():fo(e,!0),i=ee(A),go(),setTimeout(()=>un(this),i)):(un(this),c&&h(A,m)&&ze())}}hide(){const{element:e,relatedTarget:n}=this;h(e,m)&&(os.relatedTarget=n||void 0,$o.relatedTarget=n||void 0,w(e,os),os.defaultPrevented||(g(e,Ve),b(e,m),ac(this)))}dispose(){const e={...this},{element:n,options:o}=e,i=o.backdrop?ee(A):0,c=()=>setTimeout(()=>super.dispose(),i+17);this._toggleEventListeners(),this.hide(),h(n,m)?x(n,c):c()}}d(Zt,"selector",sc),d(Zt,"init",ic),d(Zt,"getInstance",ue);const kt="popover",Ke="Popover",lt="tooltip",yo=t=>{const s=t===lt,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},Co={top:"top",bottom:"bottom",left:"start",right:"end"},vs=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;if(n){const a={...Co},l=St(e);I(n,{top:"",left:"",right:"",bottom:""});const r=t.name===Ke,{offsetWidth:f,offsetHeight:p}=n,{clientWidth:v,clientHeight:D,offsetWidth:q}=ft(e);let{placement:T}=i;const{clientWidth:j,offsetWidth:Y}=o,at=V(o,"position")==="fixed",S=Math.abs(at?j-Y:v-q),J=l&&at?S:0,ot=v-(l?0:S)-1,{width:W,height:z,left:H,right:Wt,top:pt}=we(e,!0),{x:k,y:ut}={x:H,y:pt};I(c,{top:"",left:"",right:"",bottom:""});let xt=0,ce="",mt=0,Xe="",Ft="",Te="",Ye="";const Pt=c.offsetWidth||0,vt=c.offsetHeight||0,Ue=Pt/2;let ae=pt-p-vt<0,re=pt+p+z+vt>=D,le=H-f-Pt=ot;const ye=["left","right"],qe=["top","bottom"];ae=ye.includes(T)?pt+z/2-p/2-vt<0:ae,re=ye.includes(T)?pt+p/2+z/2+vt>=D:re,le=qe.includes(T)?H+W/2-f/2=ot:de,T=ye.includes(T)&&le&&de?"top":T,T=T==="top"&&ae?"bottom":T,T=T==="bottom"&&re?"top":T,T=T==="left"&&le?"right":T,T=T==="right"&&de?"left":T,n.className.includes(T)||(n.className=n.className.replace(s,a[T])),ye.includes(T)?(T==="left"?mt=k-f-(r?Pt:0):mt=k+W+(r?Pt:0),ae&&re?(xt=0,ce=0,Ft=pt+z/2-vt/2):ae?(xt=ut,ce="",Ft=z/2-Pt):re?(xt=ut-p+z,ce="",Ft=p-z/2-Pt):(xt=ut-p/2+z/2,Ft=p/2-vt/2)):qe.includes(T)&&(T==="top"?xt=ut-p-(r?vt:0):xt=ut+z+(r?vt:0),le?(mt=0,Te=k+W/2-Ue):de?(mt="auto",Xe=0,Ye=W/2+ot-Wt-Ue):(mt=k-f/2+W/2,Te=f/2-Ue)),I(n,{top:`${xt}px`,bottom:ce===""?"":`${ce}px`,left:mt==="auto"?mt:`${mt}px`,right:Xe!==""?`${Xe}px`:""}),y(c)&&(Ft!==""&&(c.style.top=`${Ft}px`),Te!==""?c.style.left=`${Te}px`:Ye!==""&&(c.style.right=`${Ye}px`));const _o=$(`updated.bs.${se(t.name)}`);w(e,_o)}},bs={template:yo(lt),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},So="data-original-title",Dt="Tooltip",wt=(t,s,e)=>{if(be(s)&&s.length){let n=s.trim();ci(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else y(s)?t.append(s):(ai(s)||ii(s)&&s.every(L))&&t.append(...s)},gc=t=>{const s=t.name===Dt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:l,customClass:r,sanitizeFn:f,dismissible:p,content:v,btnClose:D}=o,q=s?lt:kt,T={...Co};let j=[],Y=[];St(n)&&(T.left="end",T.right="start");const Rt=`bs-${q}-${T[c]}`;let at;if(y(a))at=a;else{const J=$t("div");wt(J,a,f),at=J.firstChild}t.tooltip=y(at)?at.cloneNode(!0):void 0;const{tooltip:S}=t;if(S){O(S,"id",e),O(S,"role",lt);const J=s?`${lt}-inner`:`${kt}-body`,ot=s?null:P(`.${kt}-header`,S),W=P(`.${J}`,S);t.arrow=P(`.${q}-arrow`,S);const{arrow:z}=t;if(y(i))j=[i.cloneNode(!0)];else{const H=$t("div");wt(H,i,f),j=[...H.childNodes]}if(y(v))Y=[v.cloneNode(!0)];else{const H=$t("div");wt(H,v,f),Y=[...H.childNodes]}if(p)if(i)if(y(D))j=[...j,D.cloneNode(!0)];else{const H=$t("div");wt(H,D,f),j=[...j,H.firstChild]}else if(ot&&ot.remove(),y(D))Y=[...Y,D.cloneNode(!0)];else{const H=$t("div");wt(H,D,f),Y=[...Y,H.firstChild]}s?i&&W&&wt(W,i,f):(i&&ot&&wt(ot,j,f),v&&W&&wt(W,Y,f),t.btn=P(".btn-close",S)||void 0),g(S,"position-fixed"),g(z,"position-absolute"),h(S,q)||g(S,q),l&&!h(S,R)&&g(S,R),r&&!h(S,r)&&g(S,r),h(S,Rt)||g(S,Rt)}},pc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);)n=oi(n),Rn(n)||ri(n)||e.push(n);return e.find((o,i)=>V(o,"position")!=="relative"&&e.slice(i+1).every(c=>V(c,"position")==="static")?o:null)||E(t).body},uc=`[${ct}="${lt}"],[data-tip="${lt}"]`,Ho="title";let mn=t=>F(t,Dt);const mc=t=>new Ct(t),vc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;Nt(s,Nn),ro(e,n===o?n:o)},he=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Ds(s,e===n?e:n)},bc=(t,s)=>{const{element:e}=t;t._toggleEventListeners(),Ie(e,So)&&t.name===Dt&&Po(t),s&&s()},xo=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),ys,t.handleTouch,st),[Be,_e].forEach(o=>{e(ie(n),o,t.update,st)})},vn=t=>{const{element:s}=t,e=$(`shown.bs.${se(t.name)}`);xo(t,!0),w(s,e),u.clear(s,"in")},bn=t=>{const{element:s}=t,e=$(`hidden.bs.${se(t.name)}`);xo(t),vc(t),w(s,e),u.clear(s,"out")},wn=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,l=M(n,`.${U}`),r=M(n,`.${Z}`),f=ie(n),v=o===i&&c!==a?o:f;e(v,_e,t.update,st),e(v,Be,t.update,st),l&&e(l,`hide.bs.${U}`,t.handleHide),r&&e(r,`hide.bs.${Z}`,t.handleHide)},Po=(t,s)=>{const e=[So,Ho],{element:n}=t;O(n,e[s?0:1],s||it(n,e[0])||""),Nt(n,e[s?1:0])};class Ct extends nt{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{vs(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!he(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,r=!!(this.name!==Dt&&i.dismissible);a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{p===jo?(n(o,Mn,this.handleShow),n(o,Me,this.handleShow),r||(n(o,Ts,this.handleHide),n(E(o),ys,this.handleTouch,st))):p===N?n(o,p,r?this.handleShow:this.toggle):p===Es&&(n(o,$s,this.handleShow),r||n(o,On,this.handleHide),Zo&&n(o,N,this.handleFocus)),r&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Dt,c=i?lt:kt,a=i?Dt:Ke;mn=r=>F(r,a),this.enabled=!0,this.id=`${c}-${Wn(o,c)}`;const{options:l}=this;!l.title&&i||!i&&!l.content||(dt(bs,{titleAttr:""}),Ie(o,Ho)&&i&&typeof l.title=="string"&&Po(this,l.title),this.container=pc(o),this.offsetParent=["sticky","fixed"].some(r=>V(this.container,"position")===r)?this.container:E(this.element).body,gc(this),this._toggleEventListeners(!0))}get name(){return Dt}get defaults(){return bs}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:l}=e,r=u.get(o,"out"),f=i===c?i:c;u.clear(o,"out"),n&&!r&&!he(this)&&u.set(o,()=>{const p=$(`show.bs.${se(this.name)}`);w(o,p),p.defaultPrevented||(ao(n,f),O(o,Nn,`#${a}`),this.update(),wn(this,!0),h(n,m)||g(n,m),l?x(n,()=>vn(this)):vn(this))},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in"),n&&he(this)&&u.set(o,()=>{const a=$(`hide.bs.${se(this.name)}`);w(o,a),a.defaultPrevented||(this.update(),b(n,m),wn(this),i?x(n,()=>bn(this)):bn(this))},c+17,"out")}enable(){const{enabled:e}=this;e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,options:n,enabled:o}=this,{animation:i}=n;o&&(e&&he(this)&&i?(this.hide(),x(e,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!o)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>bc(o,()=>super.dispose()),17);n.animation&&he(o)?(this.options.delay=0,this.hide(),x(e,i)):i()}}d(Ct,"selector",uc),d(Ct,"init",mc),d(Ct,"getInstance",mn),d(Ct,"styleTip",vs);const wc=`[${ct}="${kt}"],[data-tip="${kt}"]`,Ec=dt({},bs,{template:yo(kt),content:"",dismissible:!1,btnClose:''}),$c=t=>F(t,Ke),Tc=t=>new At(t);class At extends Ct{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return Ec}}d(At,"selector",wc),d(At,"init",Tc),d(At,"getInstance",$c),d(At,"styleTip",vs);const yc="scrollspy",Do="ScrollSpy",Cc='[data-bs-spy="scroll"]',Sc={offset:10,target:null},Hc=t=>F(t,Do),xc=t=>new Gt(t),En=$(`activate.bs.${yc}`),Pc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,l=Ss(e),r=s&&Hs("A",s),f=e?Ao(e):i;if(t.scrollTop=l?e.scrollY:e.scrollTop,r&&(f!==i||o!==r.length)){let p,v,D;t.items=[],t.offsets=[],t.scrollHeight=f,t.maxScroll=t.scrollHeight-Dc(t),[...r].forEach(q=>{p=it(q,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&P(p,E(c)),v&&(t.items.push(q),D=we(v),t.offsets.push((l?D.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},Ao=t=>y(t)?t.scrollHeight:ft(t).scrollHeight,Dc=({element:t,scrollTarget:s})=>Ss(s)?s.innerHeight:we(t).height,Lo=t=>{[...Hs("A",t)].forEach(s=>{h(s,C)&&b(s,C)})},$n=(t,s)=>{const{target:e,element:n}=t;y(e)&&Lo(e),t.activeItem=s,g(s,C);const o=[];let i=s;for(;i!==Ht(n);)i=i.parentElement,(h(i,"nav")||h(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;a&&!h(a,C)&&g(a,C)}),En.relatedTarget=s,w(n,En)};class Gt extends nt{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;if(y(e)&&e.offsetHeight>0){Pc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const r=c[i-1];a!==r&&$n(this,r);return}const{offsets:l}=this;if(a&&n0){this.activeItem=null,e&&Lo(e);return}c.forEach((r,f)=>{a!==r&&n>=l[f]&&(typeof l[f+1]>"u"||n{(e?_:B)(this.scrollTarget,Be,this.refresh,st)});const{element:o,options:i}=this;this.target=P(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightF(t,Io),Ac=t=>new Jt(t),is=$(`show.bs.${$e}`),yn=$(`shown.bs.${$e}`),cs=$(`hide.bs.${$e}`),Cn=$(`hidden.bs.${$e}`),me=new Map,Sn=t=>{const{tabContent:s,nav:e}=t;s&&h(s,Ot)&&(s.style.height="",b(s,Ot)),e&&u.clear(e)},Hn=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=y(o)&&me.get(o)||{tab:null};if(e&&n&&h(n,R)){const{currentHeight:c,nextHeight:a}=me.get(s)||{currentHeight:0,nextHeight:0};c===a?Sn(t):setTimeout(()=>{e.style.height=`${a}px`,_t(e),x(e,()=>Sn(t))},50)}else o&&u.clear(o);yn.relatedTarget=i,w(s,yn)},xn=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&me.get(o)||{tab:null,content:null};let a=0;if(n&&e&&h(e,R)&&([c,e].forEach(l=>{y(l)&&g(l,"overflow-hidden")}),a=y(c)?c.scrollHeight:0),is.relatedTarget=i,Cn.relatedTarget=s,w(s,is),!is.defaultPrevented){if(e&&g(e,C),c&&b(c,C),n&&e&&h(e,R)){const l=e.scrollHeight;me.set(s,{currentHeight:a,nextHeight:l,tab:null,content:null}),g(n,Ot),n.style.height=`${a}px`,_t(n),[c,e].forEach(r=>{r&&b(r,"overflow-hidden")})}e&&e&&h(e,R)?setTimeout(()=>{g(e,m),x(e,()=>{Hn(t)})},1):(e&&g(e,m),Hn(t)),i&&w(i,Cn)}},Pn=t=>{const{nav:s}=t;if(!y(s))return{tab:null,content:null};const e=rt(C,s);let n=null;e.length===1&&!Mt.some(i=>h(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=y(n)?X(n):null;return{tab:n,content:o}},Dn=t=>{if(!y(t))return null;const s=M(t,`.${Mt.join(",.")}`);return s?P(`.${Mt[0]}-toggle`,s):null},Lc=t=>{const s=ko(t.target);s&&(t.preventDefault(),s.show())};class Jt extends nt{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Lc)});const{element:n}=this,o=X(n);if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=Dn(n);const{tab:a}=Pn(this);if(i&&!a){const l=P(Tn,i),r=l&&X(l);r&&(g(l,C),g(r,m),g(r,C),O(n,Qe,"true"))}this._toggleEventListeners(!0)}}get name(){return Io}show(){const{element:e,content:n,nav:o,dropdown:i}=this;if(!(o&&u.get(o))&&!h(e,C)){const{tab:c,content:a}=Pn(this);if(o&&me.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),cs.relatedTarget=e,y(c)&&(w(c,cs),!cs.defaultPrevented)){g(e,C),O(e,Qe,"true");const l=y(c)&&Dn(c);if(l&&h(l,C)&&b(l,C),o){const r=()=>{c&&(b(c,C),O(c,Qe,"false")),i&&!h(i,C)&&g(i,C)};a&&(h(a,R)||n&&h(n,R))?u.set(o,r,1):r()}a&&(b(a,m),h(a,R)?x(a,()=>xn(this)):xn(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(Jt,"selector",Tn),d(Jt,"init",Ac),d(Jt,"getInstance",ko);const G="toast",No="Toast",Ic=`.${G}`,kc=`[${We}="${G}"]`,Oo=`[${ct}="${G}"]`,oe="showing",Mo="hide",Nc={animation:!0,autohide:!0,delay:5e3},ks=t=>F(t,No),Oc=t=>new te(t),An=$(`show.bs.${G}`),Mc=$(`shown.bs.${G}`),Ln=$(`hide.bs.${G}`),_c=$(`hidden.bs.${G}`),In=t=>{const{element:s,options:e}=t;b(s,oe),u.clear(s,oe),w(s,Mc),e.autohide&&u.set(s,()=>t.hide(),e.delay,G)},kn=t=>{const{element:s}=t;b(s,oe),b(s,m),g(s,Mo),u.clear(s,G),w(s,_c)},Bc=t=>{const{element:s,options:e}=t;g(s,oe),e.animation?(_t(s),x(s,()=>kn(t))):kn(t)},Rc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,Mo),_t(s),g(s,m),g(s,oe),e.animation?x(s,()=>In(t)):In(t)},17,oe)},Wc=t=>{u.clear(t.element,G),t._toggleEventListeners()},Fc=t=>{const{target:s}=t,e=s&&M(s,Oo),n=e&&X(e),o=n&&ks(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show())},jc=t=>{const s=t.target,e=ks(s),{type:n,relatedTarget:o}=t;e&&s!==o&&!s.contains(o)&&([Me,$s].includes(n)?u.clear(s,G):u.set(s,()=>e.hide(),e.options.delay,G))};class te extends nt{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;e&&!n&&(w(e,An),An.defaultPrevented||Rc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;e&&n&&(w(e,Ln),Ln.defaultPrevented||Bc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:l}=this;c&&n(c,N,l),a.autohide&&[$s,On,Me,Ts].forEach(r=>n(o,r,jc)),i.length&&i.forEach(r=>n(r,N,Fc))});const{element:o,options:i}=this;i.animation&&!h(o,R)?g(o,R):!i.animation&&h(o,R)&&b(o,R),this.dismiss=P(kc,o),this.triggers=[...tt(Oo,E(o))].filter(c=>X(c)===o),this._toggleEventListeners(!0)}get name(){return No}get defaults(){return Nc}get isShown(){return h(this.element,m)}dispose(){const{element:e,isShown:n}=this;n&&b(e,m),Wc(this),super.dispose()}}d(te,"selector",Ic),d(te,"init",Oc),d(te,"getInstance",ks);const Ns=new Map;[Kt,Xt,Yt,Ut,qt,Qt,Zt,At,Gt,Jt,te,Ct].forEach(t=>Ns.set(t.prototype.name,t));const zc=(t,s)=>{[...s].forEach(e=>t(e))},Vc=(t,s)=>{const e=Lt.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},ws=t=>{const s=t&&t.nodeName?t:document,e=[...Hs("*",s)];Ns.forEach(n=>{const{init:o,selector:i}=n;zc(o,e.filter(c=>jn(c,i)))})},Kc=t=>{const s=t&&t.nodeName?t:document;Ns.forEach(e=>{Vc(e.prototype.name,s)})};document.body?ws():_(document,"DOMContentLoaded",()=>ws(),{once:!0});exports.Alert=Kt;exports.Button=Xt;exports.Carousel=Yt;exports.Collapse=Ut;exports.Dropdown=qt;exports.Modal=Qt;exports.Offcanvas=Zt;exports.Popover=At;exports.ScrollSpy=Gt;exports.Tab=Jt;exports.Toast=te;exports.Tooltip=Ct;exports.initCallback=ws;exports.removeDataAPI=Kc; +"use strict";var jo=Object.defineProperty;var zo=(t,s,e)=>s in t?jo(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var d=(t,s,e)=>zo(t,typeof s!="symbol"?s+"":s,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Mn="aria-describedby",Ie="aria-expanded",ve="aria-hidden",Ne="aria-modal",_s="aria-pressed",Je="aria-selected",Vo="DOMContentLoaded",Ts="focus",ys="focusin",_n="focusout",Oe="keydown",Xo="keyup",N="click",Bn="mousedown",Ko="hover",Me="mouseenter",Cs="mouseleave",Yo="pointerdown",Uo="pointermove",qo="pointerup",_e="resize",Be="scroll",Ss="touchstart",Zo="dragstart",Jo='a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]',ls="ArrowDown",rs="ArrowUp",Bs="ArrowLeft",Rs="ArrowRight",xs="Escape",Go="transitionDuration",Qo="transitionDelay",Ge="transitionend",Rn="transitionProperty",ti=navigator.userAgentData,Le=ti,{userAgent:ei}=navigator,ke=ei,Fs=/iPhone|iPad|iPod|Android/i;// istanbul ignore else @preserve +Le?Le.brands.some(t=>Fs.test(t.brand)):Fs.test(ke);const Ws=/(iPhone|iPod|iPad)/,si=Le?Le.brands.some(t=>Ws.test(t.brand)):Ws.test(ke);ke&&ke.includes("Firefox");const{head:Re}=document;["webkitPerspective","perspective"].some(t=>t in Re.style);const Fn=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Wn=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},ni=(t,s,e,n)=>{const o=i=>{/* istanbul ignore else @preserve */(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Wn(t,s,o,n))};Fn(t,s,o,n)},fe=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});// istanbul ignore next @preserve +ni(document,Vo,fe,s)}catch{}return t})();["webkitTransform","transform"].some(t=>t in Re.style);["webkitAnimation","animation"].some(t=>t in Re.style);["webkitTransition","transition"].some(t=>t in Re.style);const st=(t,s)=>t.getAttribute(s),ge=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),Nt=(t,s)=>t.removeAttribute(s),f=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},g=(t,s)=>t.classList.contains(s),be=t=>t!=null&&typeof t=="object"||!1,D=t=>be(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>D(t)&&t.nodeType===1||!1,jt=new Map,It={data:jt,set:(t,s,e)=>{if(!T(t))return;// istanbul ignore else @preserve +jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e)},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=It.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=It.getAllFor(s);if(!e||!T(t))return;e.delete(t);// istanbul ignore else @preserve +e.size===0&&jt.delete(s)}},W=(t,s)=>It.get(t,s),we=t=>typeof t=="string"||!1,Hs=t=>be(t)&&t.constructor.name==="Window"||!1,jn=t=>D(t)&&t.nodeType===9||!1,E=t=>Hs(t)?t.document:jn(t)?t:D(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),$t=t=>{if(!t)return;if(we(t))return E().createElement(t);const{tagName:s}=t,e=$t(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),V=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},oi=t=>{const s=V(t,Rn),e=V(t,Qo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},Ee=t=>{const s=V(t,Rn),e=V(t,Go),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},A=(t,s)=>{let e=0;const n=new Event(Ge),o=Ee(t),i=oi(t);if(o){const c=a=>{// istanbul ignore else @preserve +a.target===t&&(s.apply(t,[a]),t.removeEventListener(Ge,c),e=1)};t.addEventListener(Ge,c),setTimeout(()=>{// istanbul ignore next @preserve +e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),js=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,xe=t=>Object.entries(t),ee=t=>t.toLowerCase(),ii=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},r="title";return xe(i).forEach(([l,h])=>{const p=typeof l=="string"&&l.includes(n)?l.replace(n,"").replace(/[A-Z]/g,v=>ee(v)):l;a[p]=js(h)}),xe(o).forEach(([l,h])=>{o[l]=js(h)}),xe(s).forEach(([l,h])=>{// istanbul ignore else @preserve +l in o?c[l]=o[l]:l in a?c[l]=a[l]:c[l]=l===r?st(t,r):h}),c},zs=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});// istanbul ignore else @preserve +return be(s)&&dt(e,s),e},nt={passive:!0},_t=t=>t.offsetHeight,I=(t,s)=>{xe(s).forEach(([e,n])=>{if(n&&we(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},ds=t=>be(t)&&t.constructor.name==="Map"||!1,ci=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{if(!T(t))return;// istanbul ignore else @preserve +if(n&&n.length){// istanbul ignore else @preserve +bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))}else bt.set(t,setTimeout(s,e))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&ds(e)?e.get(s)||null:ci(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);if(s&&s.length&&ds(e)){clearTimeout(e.get(s)),e.delete(s);// istanbul ignore else @preserve +e.size===0&&bt.delete(t)}else clearTimeout(e),bt.delete(t)}},J=(t,s)=>(D(s)?s:E()).querySelectorAll(t),hs=new Map;function ai(t){const{shiftKey:s,code:e}=t,n=E(this),o=[...J(Jo,this)].filter(a=>!ge(a,"disabled")&&!st(a,ve));if(!o.length)return;const i=o[0],c=o[o.length-1];// istanbul ignore else @preserve +e==="Tab"&&(s&&n.activeElement===i?(c.focus(),t.preventDefault()):!s&&n.activeElement===c&&(i.focus(),t.preventDefault()))}const li=t=>hs.has(t)===!0,Fe=t=>{const s=li(t);(s?Wn:Fn)(t,"keydown",ai),s?hs.delete(t):hs.set(t,!0)},$e=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let r=1,l=1;if(s&&T(t)){const{offsetWidth:h,offsetHeight:p}=t;r=h>0?Math.round(e)/h:1,l=p>0?Math.round(n)/p:1}return{width:e/r,height:n/l,top:o/l,right:i/r,bottom:c/l,left:a/r,x:a/r,y:o/l}},xt=t=>E(t).body,ft=t=>E(t).documentElement,zn=t=>D(t)&&t.constructor.name==="ShadowRoot"||!1,ri=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||D(t)&&t.parentNode||zn(t)&&t.host||ft(t);let Vs=0,Xs=0;const zt=new Map,Vn=(t,s)=>{let e=s?Vs:Xs;if(s){const n=Vn(t),o=zt.get(n)||new Map;zt.has(n)||zt.set(n,o),ds(o)&&!o.has(s)?(o.set(s,e),Vs+=1):e=o.get(s)}else{const n=t.id||t;zt.has(n)?e=zt.get(n):(zt.set(n,e),Xs+=1)}return e},oe=t=>{var s;return t?jn(t)?t.defaultView:D(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},di=t=>Array.isArray(t)||!1,Xn=t=>{if(!D(t))return!1;const{top:s,bottom:e}=$e(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},hi=t=>typeof t=="function"||!1,fi=t=>be(t)&&t.constructor.name==="NodeList"||!1,St=t=>ft(t).dir==="rtl",gi=t=>D(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,H=(t,s)=>T(t)?t:(D(s)?s:E()).querySelector(t),Ps=(t,s)=>(D(s)?s:E()).getElementsByTagName(t),lt=(t,s)=>(s&&D(s)?s:E()).getElementsByClassName(t),Kn=(t,s)=>t.matches(s),Vt={},Yn=t=>{const{type:s,currentTarget:e}=t;[...Vt[s]].forEach(([n,o])=>{/* istanbul ignore else @preserve */e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{/* istanbul ignore else @preserve */Vt[s]||(Vt[s]=new Map);const o=Vt[s];/* istanbul ignore else @preserve */o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n);/* istanbul ignore else @preserve */c||t.addEventListener(s,Yn,n)},B=(t,s,e,n)=>{const o=Vt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;/* istanbul ignore else @preserve */i&&i.has(e)&&i.delete(e);/* istanbul ignore else @preserve */o&&(!i||!i.size)&&o.delete(t);/* istanbul ignore else @preserve */(!o||!o.size)&&delete Vt[s];/* istanbul ignore else @preserve */(!i||!i.size)&&t.removeEventListener(s,Yn,a)},R="fade",m="show",We="data-bs-dismiss",je="alert",Un="Alert",pi="5.0.15",ui=pi;class ot{constructor(s,e){d(this,"_toggleEventListeners",()=>{});let n;try{if(T(s))n=s;else if(we(s)){n=H(s);// istanbul ignore else @preserve +if(!n)throw Error(`"${s}" is not a valid selector.`)}else throw Error("your target is not an instance of HTMLElement.")}catch(i){throw Error(`${this.name} Error: ${i.message}`)}const o=It.get(n,this.name);// istanbul ignore else @preserve +o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&zs(this.defaults).length?ii(n,this.defaults,e||{},"bs"):{},It.set(n,this.name,this)}get version(){return ui}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){It.remove(this.element,this.name),zs(this).forEach(s=>{delete this[s]})}}const mi=`.${je}`,vi=`[${We}="${je}"]`,bi=t=>W(t,Un),wi=t=>new Xt(t),Ks=$(`close.bs.${je}`),Ei=$(`closed.bs.${je}`),Ys=t=>{const{element:s}=t;w(s,Ei),t._toggleEventListeners(),t.dispose(),s.remove()};class Xt extends ot{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;// istanbul ignore else @preserve +e&&g(e,m)&&(w(e,Ks),Ks.defaultPrevented||(b(e,m),g(e,R)?A(e,()=>Ys(this)):Ys(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;// istanbul ignore else @preserve +o&&n(o,N,i)});this.dismiss=H(vi,this.element),this._toggleEventListeners(!0)}get name(){return Un}dispose(){this._toggleEventListeners(),super.dispose()}}d(Xt,"selector",mi),d(Xt,"init",wi),d(Xt,"getInstance",bi);const C="active",ct="data-bs-toggle",$i="button",qn="Button",Ti=`[${ct}="${$i}"]`,yi=t=>W(t,qn),Ci=t=>new Kt(t);class Kt extends ot{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!g(n,"disabled")&&!st(n,"disabled")&&((o?b:f)(n,C),O(n,_s,o?"false":"true"),this.isActive=g(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=g(n,C),O(n,_s,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return qn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Kt,"selector",Ti),d(Kt,"init",Ci),d(Kt,"getInstance",yi);const fs="data-bs-target",Lt="carousel",Zn="Carousel",Us="data-bs-parent",Si="data-bs-container",K=t=>{const s=[fs,Us,Si,"href"],e=E(t);return s.map(n=>{const o=st(t,n);return o?n===Us?M(t,o):H(o,e):null}).filter(n=>n)[0]},Te=`[data-bs-ride="${Lt}"]`,Z=`${Lt}-item`,gs="data-bs-slide-to",Et="data-bs-slide",Tt="paused",qs={pause:"hover",keyboard:!1,touch:!0,interval:5e3},gt=t=>W(t,Zn),xi=t=>new Yt(t);let he=0,He=0,Qe=0;const ts=$(`slide.bs.${Lt}`),ps=$(`slid.bs.${Lt}`),Zs=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;// istanbul ignore else @preserve +if(t.isAnimating){const c=us(t),a=e==="left"?"next":"prev",r=e==="left"?"start":"end";f(o[s],C),b(o[s],`${Z}-${a}`),b(o[s],`${Z}-${r}`),b(o[c],C),b(o[c],`${Z}-${r}`),w(n,ps),u.clear(n,Et),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function Hi(){const t=gt(this);// istanbul ignore else @preserve +t&&!t.isPaused&&!u.get(this,Tt)&&f(this,Tt)}function Pi(){const t=gt(this);// istanbul ignore else @preserve +t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function Di(t){t.preventDefault();const s=M(this,Te)||K(this),e=gt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=+(st(this,gs)||0);// istanbul ignore else @preserve +this&&!g(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Ai(t){t.preventDefault();const s=M(this,Te)||K(this),e=gt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=st(this,Et);// istanbul ignore else @preserve +n==="next"?e.next():n==="prev"&&e.prev()}}const Ii=({code:t,target:s})=>{const e=E(s),[n]=[...J(Te,e)].filter(i=>Xn(i)),o=gt(n);// istanbul ignore next @preserve +if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=St(n),c=i?Bs:Rs,a=i?Rs:Bs;// istanbul ignore else @preserve +t===a?o.prev():t===c&&o.next()}};function Js(t){const{target:s}=t,e=gt(this);// istanbul ignore next @preserve +e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function Li(t){const{target:s}=t,e=gt(this);// istanbul ignore else @preserve +if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;// istanbul ignore else @preserve +if(![...n,...o].every(i=>i===s||i.contains(s))){he=t.pageX;// istanbul ignore else @preserve +this.contains(s)&&(e.isTouch=!0,Jn(e,!0))}}}const ki=t=>{He=t.pageX},Ni=t=>{var o;const{target:s}=t,e=E(s),n=[...J(Te,e)].map(i=>gt(i)).find(i=>i.isTouch);// istanbul ignore else @preserve +if(n){const{element:i,index:c}=n,a=St(i);if(Qe=t.pageX,n.isTouch=!1,Jn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(he-Qe)>120){// istanbul ignore else @preserve +Hehe&&n.to(c+(a?1:-1))}he=0,He=0,Qe=0}},es=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C));// istanbul ignore else @preserve +t.indicators[s]&&f(e[s],C)},Jn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),Uo,ki,nt),n(E(e),qo,Ni,nt)},us=t=>{const{slides:s,element:e}=t,n=H(`.${Z}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class Yt extends ot{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:r,pause:l,interval:h,keyboard:p}=o,v=e?_:B;l&&h&&(v(n,Me,Hi),v(n,Cs,Pi)),r&&i.length>2&&(v(n,Yo,Li,nt),v(n,Ss,Js,{passive:!1}),v(n,Zo,Js,{passive:!1}));// istanbul ignore else @preserve +c.length&&c.forEach(P=>{// istanbul ignore else @preserve +P&&v(P,N,Ai)});// istanbul ignore else @preserve +a.length&&a.forEach(P=>{v(P,N,Di)}),p&&v(E(n),Oe,Ii)});const{element:o}=this;this.direction=St(o)?"right":"left",this.isTouch=!1,this.slides=lt(Z,o);const{slides:i}=this;if(i.length>=2){const c=us(this),a=[...i].find(h=>Kn(h,`.${Z}-next,.${Z}-next`));this.index=c;const r=E(o);this.controls=[...J(`[${Et}]`,o),...J(`[${Et}][${fs}="#${o.id}"]`,r)].filter((h,p,v)=>p===v.indexOf(h)),this.indicator=H(`.${Lt}-indicators`,o),this.indicators=[...this.indicator?J(`[${gs}]`,this.indicator):[],...J(`[${gs}][${fs}="#${o.id}"]`,r)].filter((h,p,v)=>p===v.indexOf(h));const{options:l}=this;this.options.interval=l.interval===!0?qs.interval:l.interval;// istanbul ignore next @preserve - impossible to test +a?this.index=[...i].indexOf(a):c<0&&(this.index=0,f(i[0],C),this.indicators.length&&es(this,0));// istanbul ignore else @preserve +this.indicators.length&&es(this,this.index),this._toggleEventListeners(!0),l.interval&&this.cycle()}}get name(){return Zn}get defaults(){return qs}get isPaused(){return g(this.element,Tt)}get isAnimating(){return H(`.${Z}-next,.${Z}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,Lt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{// istanbul ignore else @preserve +this.element&&!this.isPaused&&!this.isTouch&&Xn(e)&&this.to(i+1)},n.interval,Lt)}pause(){const{element:e,options:n}=this;// istanbul ignore else @preserve +!this.isPaused&&n.interval&&(f(e,Tt),u.set(e,()=>{},1,Tt))}next(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index+1)}prev(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=us(this),a=St(n);let r=e;if(!this.isAnimating&&c!==r&&!u.get(n,Et)){// istanbul ignore else @preserve +cr||c===o.length-1&&r===0)&&(this.direction=a?"left":"right");const{direction:l}=this;r<0?r=o.length-1:r>=o.length&&(r=0);const h=l==="left"?"next":"prev",p=l==="left"?"start":"end",v={relatedTarget:o[r],from:c,to:r,direction:l};dt(ts,v),dt(ps,v),w(n,ts),ts.defaultPrevented||(this.index=r,es(this,r),Ee(o[r])&&g(n,"slide")?u.set(n,()=>{f(o[r],`${Z}-${h}`),_t(o[r]),f(o[r],`${Z}-${p}`),f(o[c],`${Z}-${p}`),A(o[r],()=>this.slides&&this.slides.length&&Zs(this))},0,Et):(f(o[r],C),b(o[c],C),u.set(n,()=>{u.clear(n,Et);// istanbul ignore else @preserve +n&&i.interval&&!this.isPaused&&this.cycle(),w(n,ps)},0,Et)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose();// istanbul ignore next @preserve - impossible to test +n.isAnimating&&A(n.slides[n.index],()=>{Zs(n)})}}d(Yt,"selector",Te),d(Yt,"init",xi),d(Yt,"getInstance",gt);const Ot="collapsing",X="collapse",Gn="Collapse",Oi=`.${X}`,Qn=`[${ct}="${X}"]`,Mi={parent:null},Pe=t=>W(t,Gn),_i=t=>new Ut(t),Gs=$(`show.bs.${X}`),Bi=$(`shown.bs.${X}`),Qs=$(`hide.bs.${X}`),Ri=$(`hidden.bs.${X}`),Fi=t=>{const{element:s,parent:e,triggers:n}=t;w(s,Gs),Gs.defaultPrevented||(u.set(s,fe,17),e&&u.set(e,fe,17),f(s,Ot),b(s,X),I(s,{height:`${s.scrollHeight}px`}),A(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,Ie,"true")),b(s,Ot),f(s,X),f(s,m),I(s,{height:""}),w(s,Bi)}))},tn=t=>{const{element:s,parent:e,triggers:n}=t;w(s,Qs),Qs.defaultPrevented||(u.set(s,fe,17),e&&u.set(e,fe,17),I(s,{height:`${s.scrollHeight}px`}),b(s,X),b(s,m),f(s,Ot),_t(s),I(s,{height:"0px"}),A(s,()=>{u.clear(s);// istanbul ignore else @preserve +e&&u.clear(e),n.forEach(o=>O(o,Ie,"false")),b(s,Ot),f(s,X),I(s,{height:""}),w(s,Ri)}))},Wi=t=>{const{target:s}=t,e=s&&M(s,Qn),n=e&&K(e),o=n&&Pe(n);// istanbul ignore else @preserve +o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Ut extends ot{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,Wi))});const{element:o,options:i}=this,c=E(o);this.triggers=[...J(Qn,c)].filter(a=>K(a)===o),this.parent=T(i.parent)?i.parent:we(i.parent)?K(o)||H(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return Gn}get defaults(){return Mi}hide(){const{triggers:e,element:n}=this;// istanbul ignore else @preserve +if(!u.get(n)){tn(this);// istanbul ignore else @preserve +e.length&&e.forEach(o=>f(o,`${X}d`))}}show(){const{element:e,parent:n,triggers:o}=this;let i,c;if(n&&(i=[...J(`.${X}.${m}`,n)].find(a=>Pe(a)),c=i&&Pe(i)),(!n||!u.get(n))&&!u.get(e)){c&&i!==e&&(tn(c),c.triggers.forEach(a=>{f(a,`${X}d`)})),Fi(this);// istanbul ignore else @preserve +o.length&&o.forEach(a=>b(a,`${X}d`))}}toggle(){g(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",Oi),d(Ut,"init",_i),d(Ut,"getInstance",Pe);const Mt=["dropdown","dropup","dropstart","dropend"],to="Dropdown",eo="dropdown-menu",so=t=>{const s=M(t,"A");return t.tagName==="A"&&ge(t,"href")&&st(t,"href").slice(-1)==="#"||s&&ge(s,"href")&&st(s,"href").slice(-1)==="#"},[et,ms,vs,bs]=Mt,no=`[${ct}="${et}"]`,se=t=>W(t,to),ji=t=>new qt(t),zi=`${eo}-end`,en=[et,ms],sn=[vs,bs],nn=["A","BUTTON"],Vi={offset:5,display:"dynamic"},ss=$(`show.bs.${et}`),on=$(`shown.bs.${et}`),ns=$(`hide.bs.${et}`),cn=$(`hidden.bs.${et}`),oo=$(`updated.bs.${et}`),io=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;// istanbul ignore else @preserve: this test requires a navbar +if(V(e,"position")!=="static"){const c=St(s),a=g(e,zi);["margin","top","bottom","left","right"].forEach(k=>{const ut={};ut[k]="",I(e,ut)});let l=Mt.find(k=>g(n,k))||et;const h={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:P}=e,{clientWidth:q,clientHeight:y}=ft(s),{left:j,top:Y,width:Rt,height:at}=$e(s),S=j-v-i<0,tt=j+v+Rt+i>=q,it=Y+P+i>=y,F=Y+P+at+i>=y,z=Y-P-i<0,x=(!c&&a||c&&!a)&&j+Rt-v<0,Ft=(c&&a||!c&&!a)&&j+v>=q;if(sn.includes(l)&&S&&tt&&(l=et),l===vs&&(c?tt:S)&&(l=bs),l===bs&&(c?S:tt)&&(l=vs),l===ms&&z&&!F&&(l=et),l===et&&F&&!z&&(l=ms),sn.includes(l)&&it&&dt(p[l],{top:"auto",bottom:0}),en.includes(l)&&(x||Ft)){let k={left:"auto",right:"auto"};// istanbul ignore else @preserve +!x&&Ft&&!c&&(k={left:"auto",right:0});// istanbul ignore else @preserve +x&&!Ft&&c&&(k={left:0,right:"auto"});// istanbul ignore else @preserve +k&&dt(p[l],k)}const pt=h[l];if(I(e,{...p[l],margin:`${pt.map(k=>k&&`${k}px`).join(" ")}`}),en.includes(l)&&a){// istanbul ignore else @preserve +a&&I(e,p[!c&&x||c&&Ft?"menuStart":"menuEnd"])}w(n,oo)}},Xi=t=>[...t.children].map(s=>{if(s&&nn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&nn.includes(e.tagName)?e:null}).filter(s=>s),an=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,ln),n(o,Ts,ln),n(o,Oe,Yi),n(o,Xo,Ui);// istanbul ignore else @preserve +e.display==="dynamic"&&[Be,_e].forEach(i=>{n(oe(s),i,qi,nt)})},ze=t=>{const s=[...Mt,"btn-group","input-group"].map(e=>lt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Mt.some(n=>n===st(e,ct)))},ln=t=>{const{target:s,type:e}=t;// istanbul ignore else @preserve +if(s&&T(s)){const n=ze(s),o=n&&se(n);// istanbul ignore else @preserve +if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Bn].includes(e)&&so(s)&&t.preventDefault();// istanbul ignore else @preserve +!a&&e!==Ts&&s!==n&&s!==c&&o.hide()}}},Ki=t=>{const{target:s}=t,e=s&&M(s,no),n=e&&se(e);// istanbul ignore else @preserve +if(n){t.stopPropagation(),n.toggle();// istanbul ignore else @preserve +e&&so(e)&&t.preventDefault()}},Yi=t=>{// istanbul ignore else @preserve +[ls,rs].includes(t.code)&&t.preventDefault()};function Ui(t){const{code:s}=t,e=ze(this),n=e&&se(e),{activeElement:o}=e&&E(e);// istanbul ignore else @preserve +if(n&&o){const{menu:i,open:c}=n,a=Xi(i);if(a&&a.length&&[ls,rs].includes(s)){let r=a.indexOf(o);// istanbul ignore else @preserve +o===e?r=0:s===rs?r=r>1?r-1:0:s===ls&&(r=r{(e?_:B)(this.element,N,Ki)});const{parentElement:o}=this.element,[i]=lt(eo,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return to}get defaults(){return Vi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +if(!n){const c=ze(e),a=c&&se(c);a&&a.hide(),[ss,on,oo].forEach(r=>{r.relatedTarget=e}),w(i,ss),ss.defaultPrevented||(f(o,m),f(i,m),O(e,Ie,"true"),io(this),this.open=!n,ht(e),an(this),w(i,on))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +n&&([ns,cn].forEach(c=>{c.relatedTarget=e}),w(i,ns),ns.defaultPrevented||(b(o,m),b(i,m),O(e,Ie,"false"),this.open=!n,an(this),w(i,cn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(qt,"selector",no),d(qt,"init",ji),d(qt,"getInstance",se);const U="modal",Ds="Modal",As="Offcanvas",Zi="fixed-top",Ji="fixed-bottom",co="sticky-top",ao="position-sticky",lo=t=>[...lt(Zi,t),...lt(Ji,t),...lt(co,t),...lt(ao,t),...lt("is-fixed",t)],Gi=t=>{const s=xt(t);I(s,{paddingRight:"",overflow:""});const e=lo(s);// istanbul ignore else @preserve +e.length&&e.forEach(n=>{I(n,{paddingRight:"",marginRight:""})})},ro=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=oe(t);return Math.abs(e-s)},ho=(t,s)=>{const e=xt(t),n=parseInt(V(e,"paddingRight"),10),i=V(e,"overflow")==="hidden"&&n?0:ro(t),c=lo(e);// istanbul ignore else @preserve +if(s){I(e,{overflow:"hidden",paddingRight:`${n+i}px`});// istanbul ignore else @preserve +c.length&&c.forEach(a=>{const r=V(a,"paddingRight");a.style.paddingRight=`${parseInt(r,10)+i}px`;// istanbul ignore else @preserve +if([co,ao].some(l=>g(a,l))){const l=V(a,"marginRight");a.style.marginRight=`${parseInt(l,10)-i}px`}})}},G="offcanvas",yt=$t({tagName:"div",className:"popup-container"}),fo=(t,s)=>{const e=D(s)&&s.nodeName==="BODY",n=D(s)&&!e?s:yt,o=e?s:xt(t);// istanbul ignore else @preserve +D(t)&&(n===yt&&o.append(yt),n.append(t))},go=(t,s)=>{const e=D(s)&&s.nodeName==="BODY",n=D(s)&&!e?s:yt;// istanbul ignore else @preserve +D(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Is=(t,s)=>{const e=D(s)&&s.nodeName!=="BODY"?s:yt;return D(t)&&e.contains(t)},po="backdrop",rn=`${U}-${po}`,dn=`${G}-${po}`,uo=`.${U}.${m}`,Ls=`.${G}.${m}`,L=$t("div"),Bt=t=>H(`${uo},${Ls}`,E(t)),ks=t=>{const s=t?rn:dn;[rn,dn].forEach(e=>{b(L,e)}),f(L,s)},mo=(t,s,e)=>{ks(e),fo(L,xt(t)),s&&f(L,R)},vo=()=>{g(L,m)||(f(L,m),_t(L))},Ve=()=>{b(L,m)},bo=t=>{Bt(t)||(b(L,R),go(L,xt(t)),Gi(t))},wo=t=>T(t)&&V(t,"visibility")!=="hidden"&&t.offsetParent!==null,Qi=`.${U}`,Eo=`[${ct}="${U}"]`,tc=`[${We}="${U}"]`,$o=`${U}-static`,ec={backdrop:!0,keyboard:!0},pe=t=>W(t,Ds),sc=t=>new Zt(t),De=$(`show.bs.${U}`),hn=$(`shown.bs.${U}`),os=$(`hide.bs.${U}`),fn=$(`hidden.bs.${U}`),To=t=>{const{element:s}=t,e=ro(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;// istanbul ignore next @preserve: impossible to test? +if(!a&&e){const l={[St(s)?"paddingLeft":"paddingRight"]:`${e}px`};I(s,l)}ho(s,a||n!==o)},yo=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,ic),e(oe(n),_e,o,nt),e(E(n),Oe,oc)},gn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;bo(e),I(e,{paddingRight:"",display:""}),yo(t);const o=De.relatedTarget||s.find(wo);// istanbul ignore else @preserve +o&&ht(o),fn.relatedTarget=n,w(e,fn),Fe(e)},pn=t=>{const{element:s,relatedTarget:e}=t;ht(s),yo(t,!0),hn.relatedTarget=e,w(s,hn),Fe(s)},un=t=>{const{element:s,hasFade:e}=t;I(s,{display:"block"}),To(t);// istanbul ignore else @preserve +Bt(s)||I(xt(s),{overflow:"hidden"}),f(s,m),Nt(s,ve),O(s,Ne,"true"),e?A(s,()=>pn(t)):pn(t)},mn=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&g(L,m)&&!Bt(s)?(Ve(),A(L,()=>gn(t))):gn(t)},nc=t=>{const{target:s}=t,e=s&&M(s,Eo),n=e&&K(e),o=n&&pe(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle()}},oc=({code:t,target:s})=>{const e=H(uo,E(s)),n=e&&pe(e);// istanbul ignore else @preserve +if(n){const{options:o}=n;// istanbul ignore else @preserve +o.keyboard&&t===xs&&g(e,m)&&(n.relatedTarget=null,n.hide())}},ic=t=>{var n,o;const{currentTarget:s}=t,e=s&&pe(s);// istanbul ignore else @preserve +if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:r}=i,{target:l}=t,h=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(l),v=l&&M(l,tc);// istanbul ignore else @preserve +c&&!p?u.set(s,()=>{f(s,$o),A(a,()=>cc(e))},17):(v||!h&&!c&&!p&&r)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},cc=t=>{const{element:s,modalDialog:e}=t,n=(Ee(e)||0)+17;b(s,$o),u.set(s,()=>u.clear(s),n)};class Zt extends ot{constructor(e,n){super(e,n);d(this,"update",()=>{// istanbul ignore else @preserve +g(this.element,m)&&To(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,nc))});const{element:o}=this,i=H(`.${U}-dialog`,o);// istanbul ignore else @preserve +i&&(this.modalDialog=i,this.triggers=[...J(Eo,E(o))].filter(c=>K(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=g(o,R),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return Ds}get defaults(){return ec}toggle(){g(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;// istanbul ignore else @preserve +if(!g(e,m)&&(De.relatedTarget=i||void 0,w(e,De),!De.defaultPrevented)){const r=Bt(e);// istanbul ignore else @preserve +if(r&&r!==e){const l=pe(r)||W(r,As);// istanbul ignore else @preserve +l&&l.hide()}if(c)Is(L)?ks(!0):mo(e,o,!0),a=Ee(L),vo(),setTimeout(()=>un(this),a);else{un(this);// istanbul ignore else @preserve +r&&g(L,m)&&Ve()}}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;// istanbul ignore else @preserve +if(g(e,m)){os.relatedTarget=o||void 0,w(e,os);// istanbul ignore else @preserve +os.defaultPrevented||(b(e,m),O(e,ve,"true"),Nt(e,Ne),n?A(e,()=>mn(this)):mn(this))}}dispose(){const e={...this},{modalDialog:n,hasFade:o}=e,i=()=>setTimeout(()=>super.dispose(),17);this.hide(),this._toggleEventListeners(),o?A(n,i):i()}}d(Zt,"selector",Qi),d(Zt,"init",sc),d(Zt,"getInstance",pe);const ac=`.${G}`,Ns=`[${ct}="${G}"]`,lc=`[${We}="${G}"]`,Xe=`${G}-toggling`,rc={backdrop:!0,keyboard:!0,scroll:!1},ue=t=>W(t,As),dc=t=>new Jt(t),Ae=$(`show.bs.${G}`),Co=$(`shown.bs.${G}`),is=$(`hide.bs.${G}`),So=$(`hidden.bs.${G}`),hc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);ho(s,e!==n)},xo=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Oe,uc),e(n,N,pc)},vn=t=>{const{element:s,options:e}=t;// istanbul ignore else @preserve +e.scroll||(hc(t),I(xt(s),{overflow:"hidden"})),f(s,Xe),f(s,m),I(s,{visibility:"visible"}),A(s,()=>mc(t))},fc=t=>{const{element:s,options:e}=t,n=Bt(s);s.blur(),!n&&e.backdrop&&g(L,m)&&Ve(),A(s,()=>vc(t))},gc=t=>{const s=M(t.target,Ns),e=s&&K(s),n=e&&ue(e);// istanbul ignore else @preserve +if(n){n.relatedTarget=s,n.toggle();// istanbul ignore else @preserve +s&&s.tagName==="A"&&t.preventDefault()}},pc=t=>{const{target:s}=t,e=H(Ls,E(s)),n=H(lc,e),o=e&&ue(e);// istanbul ignore else @preserve +if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,r=M(s,Ns),l=E(e).getSelection();// istanbul ignore else: a filter is required here @preserve +if(!L.contains(s)||a!=="static"){// istanbul ignore else @preserve +!(l&&l.toString().length)&&(!e.contains(s)&&a&&(!r||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide());// istanbul ignore next @preserve +r&&r.tagName==="A"&&t.preventDefault()}}},uc=({code:t,target:s})=>{const e=H(Ls,E(s)),n=e&&ue(e);// istanbul ignore else @preserve +if(n){// istanbul ignore else @preserve +n.options.keyboard&&t===xs&&(n.relatedTarget=null,n.hide())}},mc=t=>{const{element:s}=t;b(s,Xe),Nt(s,ve),O(s,Ne,"true"),O(s,"role","dialog"),w(s,Co),xo(t,!0),ht(s),Fe(s)},vc=t=>{const{element:s,triggers:e}=t;O(s,ve,"true"),Nt(s,Ne),Nt(s,"role"),I(s,{visibility:""});const n=Ae.relatedTarget||e.find(wo);// istanbul ignore else @preserve +n&&ht(n),bo(s),w(s,So),b(s,Xe),Fe(s),Bt(s)||xo(t)};class Jt extends ot{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,gc))});const{element:o}=this;this.triggers=[...J(Ns,E(o))].filter(i=>K(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return As}get defaults(){return rc}toggle(){g(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!g(e,m)&&(Ae.relatedTarget=o||void 0,Co.relatedTarget=o||void 0,w(e,Ae),!Ae.defaultPrevented)){const c=Bt(e);if(c&&c!==e){const a=ue(c)||W(c,Ds);// istanbul ignore else @preserve +a&&a.hide()}if(n.backdrop)Is(L)?ks():mo(e,!0),i=Ee(L),vo(),setTimeout(()=>vn(this),i);else{vn(this);// istanbul ignore next @preserve - this test was done on Modal +c&&g(L,m)&&Ve()}}}hide(){const{element:e,relatedTarget:n}=this;g(e,m)&&(is.relatedTarget=n||void 0,So.relatedTarget=n||void 0,w(e,is),is.defaultPrevented||(f(e,Xe),b(e,m),fc(this)))}dispose(){const{element:e}=this,n=g(e,m),o=()=>setTimeout(()=>super.dispose(),1);if(this.hide(),this._toggleEventListeners(),n){A(e,o);// istanbul ignore next @preserve +}else o()}}d(Jt,"selector",ac),d(Jt,"init",dc),d(Jt,"getInstance",ue);const kt="popover",Ke="Popover",rt="tooltip",Ho=t=>{const s=t===rt,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},Po={top:"top",bottom:"bottom",left:"start",right:"end"},ws=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;// istanbul ignore else @preserve +if(n){const a={...Po},r=St(e);I(n,{top:"",left:"",right:"",bottom:""});const l=t.name===Ke,{offsetWidth:h,offsetHeight:p}=n,{clientWidth:v,clientHeight:P,offsetWidth:q}=ft(e);let{placement:y}=i;const{clientWidth:j,offsetWidth:Y}=o,at=V(o,"position")==="fixed",S=Math.abs(at?j-Y:v-q),tt=r&&at?S:0,it=v-(r?0:S)-1,{width:F,height:z,left:x,right:Ft,top:pt}=$e(e,!0),{x:k,y:ut}={x,y:pt};I(c,{top:"",left:"",right:"",bottom:""});let Ht=0,ie="",mt=0,Ye="",Wt="",Ce="",Ue="";const Pt=c.offsetWidth||0,vt=c.offsetHeight||0,qe=Pt/2;let ce=pt-p-vt<0,ae=pt+p+z+vt>=P,le=x-h-Pt=it;const Se=["left","right"],Ze=["top","bottom"];ce=Se.includes(y)?pt+z/2-p/2-vt<0:ce,ae=Se.includes(y)?pt+p/2+z/2+vt>=P:ae,le=Ze.includes(y)?x+F/2-h/2=it:re,y=Se.includes(y)&&le&&re?"top":y,y=y==="top"&&ce?"bottom":y,y=y==="bottom"&&ae?"top":y,y=y==="left"&&le?"right":y,y=y==="right"&&re?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y]));// istanbul ignore else @preserve +Se.includes(y)?(y==="left"?mt=k-h-(l?Pt:0):mt=k+F+(l?Pt:0),ce&&ae?(Ht=0,ie=0,Wt=pt+z/2-vt/2):ce?(Ht=ut,ie="",Wt=z/2-Pt):ae?(Ht=ut-p+z,ie="",Wt=p-z/2-Pt):(Ht=ut-p/2+z/2,Wt=p/2-vt/2)):Ze.includes(y)&&(y==="top"?Ht=ut-p-(l?vt:0):Ht=ut+z+(l?vt:0),le?(mt=0,Ce=k+F/2-qe):re?(mt="auto",Ye=0,Ue=F/2+it-Ft-qe):(mt=k-h/2+F/2,Ce=h/2-qe)),I(n,{top:`${Ht}px`,bottom:ie===""?"":`${ie}px`,left:mt==="auto"?mt:`${mt}px`,right:Ye!==""?`${Ye}px`:""});// istanbul ignore else @preserve +T(c)&&(Wt!==""&&(c.style.top=`${Wt}px`),Ce!==""?c.style.left=`${Ce}px`:Ue!==""&&(c.style.right=`${Ue}px`));const Wo=$(`updated.bs.${ee(t.name)}`);w(e,Wo)}},Es={template:Ho(rt),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},Do="data-original-title",Dt="Tooltip",wt=(t,s,e)=>{// istanbul ignore else @preserve +if(we(s)&&s.length){let n=s.trim();hi(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(fi(s)||di(s)&&s.every(D))&&t.append(...s)},bc=t=>{const s=t.name===Dt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:r,customClass:l,sanitizeFn:h,dismissible:p,content:v,btnClose:P}=o,q=s?rt:kt,y={...Po};let j=[],Y=[];St(n)&&(y.left="end",y.right="start");const Rt=`bs-${q}-${y[c]}`;let at;if(T(a))at=a;else{const tt=$t("div");wt(tt,a,h),at=tt.firstChild}t.tooltip=T(at)?at.cloneNode(!0):void 0;const{tooltip:S}=t;// istanbul ignore else @preserve +if(S){O(S,"id",e),O(S,"role",rt);const tt=s?`${rt}-inner`:`${kt}-body`,it=s?null:H(`.${kt}-header`,S),F=H(`.${tt}`,S);t.arrow=H(`.${q}-arrow`,S);const{arrow:z}=t;if(T(i))j=[i.cloneNode(!0)];else{const x=$t("div");wt(x,i,h),j=[...x.childNodes]}if(T(v))Y=[v.cloneNode(!0)];else{const x=$t("div");wt(x,v,h),Y=[...x.childNodes]}if(p)if(i)if(T(P))j=[...j,P.cloneNode(!0)];else{const x=$t("div");wt(x,P,h),j=[...j,x.firstChild]}else{// istanbul ignore else @preserve +if(it&&it.remove(),T(P))Y=[...Y,P.cloneNode(!0)];else{const x=$t("div");wt(x,P,h),Y=[...Y,x.firstChild]}}// istanbul ignore else @preserve +if(s)i&&F&&wt(F,i,h);else{// istanbul ignore else @preserve +i&&it&&wt(it,j,h);// istanbul ignore else @preserve +v&&F&&wt(F,Y,h),t.btn=H(".btn-close",S)||void 0}f(S,"position-fixed"),f(z,"position-absolute");// istanbul ignore else @preserve +g(S,q)||f(S,q);// istanbul ignore else @preserve +r&&!g(S,R)&&f(S,R);// istanbul ignore else @preserve +l&&!g(S,l)&&f(S,l);// istanbul ignore else @preserve +g(S,Rt)||f(S,Rt)}},wc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);){n=ri(n);// istanbul ignore else @preserve +zn(n)||gi(n)||e.push(n)}return e.find((o,i)=>V(o,"position")!=="relative"&&e.slice(i+1).every(c=>V(c,"position")==="static")?o:null)||E(t).body},Ec=`[${ct}="${rt}"],[data-tip="${rt}"]`,Ao="title";let bn=t=>W(t,Dt);const $c=t=>new Ct(t),Tc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;Nt(s,Mn),go(e,n===o?n:o)},de=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Is(s,e===n?e:n)},yc=(t,s)=>{const{element:e}=t;t._toggleEventListeners();// istanbul ignore else @preserve +ge(e,Do)&&t.name===Dt&&Lo(t);// istanbul ignore else @preserve +s&&s()},Io=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),Ss,t.handleTouch,nt),[Be,_e].forEach(o=>{e(oe(n),o,t.update,nt)})},wn=t=>{const{element:s}=t,e=$(`shown.bs.${ee(t.name)}`);Io(t,!0),w(s,e),u.clear(s,"in")},En=t=>{const{element:s}=t,e=$(`hidden.bs.${ee(t.name)}`);Io(t),Tc(t),w(s,e),u.clear(s,"out")},$n=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,r=M(n,`.${U}`),l=M(n,`.${G}`);// istanbul ignore else @preserve +const h=oe(n),v=o===i&&c!==a?o:h;e(v,_e,t.update,nt),e(v,Be,t.update,nt),r&&e(r,`hide.bs.${U}`,t.handleHide),l&&e(l,`hide.bs.${G}`,t.handleHide)},Lo=(t,s)=>{const e=[Do,Ao],{element:n}=t;O(n,e[s?0:1],s||st(n,e[0])||""),Nt(n,e[s?1:0])};class Ct extends ot{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{ws(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!de(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;// istanbul ignore if @preserve +n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,l=!!(this.name!==Dt&&i.dismissible);// istanbul ignore else @preserve +a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{// istanbul ignore else @preserve +if(p===Ko){n(o,Bn,this.handleShow),n(o,Me,this.handleShow);// istanbul ignore else @preserve +l||(n(o,Cs,this.handleHide),n(E(o),Ss,this.handleTouch,nt))}else if(p===N)n(o,p,l?this.handleShow:this.toggle);else if(p===Ts){n(o,ys,this.handleShow);// istanbul ignore else @preserve +l||n(o,_n,this.handleHide);// istanbul ignore else @preserve +si&&n(o,N,this.handleFocus)}// istanbul ignore else @preserve +l&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Dt,c=i?rt:kt,a=i?Dt:Ke;// istanbul ignore next @preserve: this is to set Popover too +bn=l=>W(l,a),this.enabled=!0,this.id=`${c}-${Vn(o,c)}`;const{options:r}=this;if(!(!r.title&&i||!i&&!r.content)){dt(Es,{titleAttr:""});// istanbul ignore else @preserve +ge(o,Ao)&&i&&typeof r.title=="string"&&Lo(this,r.title),this.container=wc(o),this.offsetParent=["sticky","fixed"].some(l=>V(this.container,"position")===l)?this.container:E(this.element).body,bc(this),this._toggleEventListeners(!0)}}get name(){return Dt}get defaults(){return Es}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:r}=e,l=u.get(o,"out"),h=i===c?i:c;u.clear(o,"out"),n&&!l&&!de(this)&&u.set(o,()=>{const p=$(`show.bs.${ee(this.name)}`);w(o,p);// istanbul ignore else @preserve +if(!p.defaultPrevented){fo(n,h),O(o,Mn,`#${a}`),this.update(),$n(this,!0);// istanbul ignore else @preserve +g(n,m)||f(n,m);// istanbul ignore else @preserve +r?A(n,()=>wn(this)):wn(this)}},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in");// istanbul ignore else @preserve +n&&de(this)&&u.set(o,()=>{const a=$(`hide.bs.${ee(this.name)}`);w(o,a);// istanbul ignore else @preserve +if(!a.defaultPrevented){this.update(),b(n,m),$n(this);// istanbul ignore else @preserve +i?A(n,()=>En(this)):En(this)}},c+17,"out")}enable(){const{enabled:e}=this;// istanbul ignore else @preserve +e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,enabled:n}=this;// istanbul ignore else @preserve +n&&(e&&de(this)&&this.hide(),this._toggleEventListeners(),this.enabled=!n)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>yc(o,()=>super.dispose()),17);n.animation&&de(o)?(this.options.delay=0,this.hide(),A(e,i)):i()}}d(Ct,"selector",Ec),d(Ct,"init",$c),d(Ct,"getInstance",bn),d(Ct,"styleTip",ws);const Cc=`[${ct}="${kt}"],[data-tip="${kt}"]`,Sc=dt({},Es,{template:Ho(kt),content:"",dismissible:!1,btnClose:''}),xc=t=>W(t,Ke),Hc=t=>new At(t);class At extends Ct{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;// istanbul ignore else @preserve +e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return Sc}}d(At,"selector",Cc),d(At,"init",Hc),d(At,"getInstance",xc),d(At,"styleTip",ws);const Pc="scrollspy",ko="ScrollSpy",Dc='[data-bs-spy="scroll"]',Ac={offset:10,target:null},Ic=t=>W(t,ko),Lc=t=>new Gt(t),Tn=$(`activate.bs.${Pc}`),kc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,r=Hs(e),l=s&&Ps("A",s),h=e?No(e):i;t.scrollTop=r?e.scrollY:e.scrollTop;// istanbul ignore else @preserve +if(l&&(h!==i||o!==l.length)){let p,v,P;t.items=[],t.offsets=[],t.scrollHeight=h,t.maxScroll=t.scrollHeight-Nc(t),[...l].forEach(q=>{p=st(q,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&H(p,E(c)),v&&(t.items.push(q),P=$e(v),t.offsets.push((r?P.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},No=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Nc=({element:t,scrollTarget:s})=>Hs(s)?s.innerHeight:$e(t).height,Oo=t=>{[...Ps("A",t)].forEach(s=>{g(s,C)&&b(s,C)})},yn=(t,s)=>{const{target:e,element:n}=t;// istanbul ignore else @preserve +T(e)&&Oo(e),t.activeItem=s,f(s,C);const o=[];let i=s;for(;i!==xt(n);)i=i.parentElement,(g(i,"nav")||g(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;// istanbul ignore else @preserve +a&&!g(a,C)&&f(a,C)}),Tn.relatedTarget=s,w(n,Tn)};class Gt extends ot{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;// istanbul ignore else @preserve +if(T(e)&&e.offsetHeight>0){kc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const l=c[i-1];// istanbul ignore else @preserve +a!==l&&yn(this,l);return}const{offsets:r}=this;// istanbul ignore else @preserve +if(a&&n0){this.activeItem=null;// istanbul ignore else @preserve +e&&Oo(e);return}c.forEach((l,h)=>{a!==l&&n>=r[h]&&(typeof r[h+1]>"u"||n{(e?_:B)(this.scrollTarget,Be,this.refresh,nt)});const{element:o,options:i}=this;this.target=H(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightW(t,Mo),Oc=t=>new Qt(t),cs=$(`show.bs.${ye}`),Sn=$(`shown.bs.${ye}`),as=$(`hide.bs.${ye}`),xn=$(`hidden.bs.${ye}`),me=new Map,Hn=t=>{const{tabContent:s,nav:e}=t;// istanbul ignore else @preserve +s&&g(s,Ot)&&(s.style.height="",b(s,Ot));// istanbul ignore else @preserve +e&&u.clear(e)},Pn=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&me.get(o)||{tab:null};// istanbul ignore next @preserve +// istanbul ignore else @preserve +if(e&&n&&g(n,R)){const{currentHeight:c,nextHeight:a}=me.get(s)||{currentHeight:0,nextHeight:0};// istanbul ignore next @preserve +// istanbul ignore else @preserve: vitest won't validate this branch +c!==a?setTimeout(()=>{e.style.height=`${a}px`,_t(e),A(e,()=>Hn(t))},50):Hn(t)}else o&&u.clear(o);Sn.relatedTarget=i,w(s,Sn)},Dn=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&me.get(o)||{tab:null,content:null};let a=0;// istanbul ignore else @preserve +n&&e&&g(e,R)&&([c,e].forEach(r=>{// istanbul ignore else @preserve +T(r)&&f(r,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),cs.relatedTarget=i,xn.relatedTarget=s,w(s,cs);// istanbul ignore else @preserve +if(!cs.defaultPrevented){// istanbul ignore else @preserve +e&&f(e,C);// istanbul ignore else @preserve +c&&b(c,C);// istanbul ignore else @preserve +if(n&&e&&g(e,R)){const r=e.scrollHeight;me.set(s,{currentHeight:a,nextHeight:r,tab:null,content:null}),f(n,Ot),n.style.height=`${a}px`,_t(n),[c,e].forEach(l=>{// istanbul ignore else @preserve +l&&b(l,"overflow-hidden")})}if(e&&e&&g(e,R))setTimeout(()=>{f(e,m),A(e,()=>{Pn(t)})},1);else{// istanbul ignore else @preserve +e&&f(e,m),Pn(t)}// istanbul ignore else @preserve +i&&w(i,xn)}},An=t=>{const{nav:s}=t;// istanbul ignore next @preserve +if(!T(s))return{tab:null,content:null};const e=lt(C,s);let n=null;// istanbul ignore else @preserve +e.length===1&&!Mt.some(i=>g(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?K(n):null;return{tab:n,content:o}},In=t=>{// istanbul ignore next @preserve +if(!T(t))return null;const s=M(t,`.${Mt.join(",.")}`);return s?H(`.${Mt[0]}-toggle`,s):null},Mc=t=>{const s=_o(t.target);// istanbul ignore else @preserve +s&&(t.preventDefault(),s.show())};class Qt extends ot{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Mc)});const{element:n}=this,o=K(n);// istanbul ignore else @preserve +if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=In(n);const{tab:a}=An(this);if(i&&!a){const r=H(Cn,i),l=r&&K(r);// istanbul ignore else @preserve +l&&(f(r,C),f(l,m),f(l,C),O(n,Je,"true"))}this._toggleEventListeners(!0)}}get name(){return Mo}show(){const{element:e,content:n,nav:o,dropdown:i}=this;// istanbul ignore else @preserve +if(!(o&&u.get(o))&&!g(e,C)){const{tab:c,content:a}=An(this);// istanbul ignore else @preserve +o&&me.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),as.relatedTarget=e;// istanbul ignore else @preserve +if(T(c)){w(c,as);// istanbul ignore else @preserve +if(!as.defaultPrevented){f(e,C),O(e,Je,"true");const r=T(c)&&In(c);r&&g(r,C)&&b(r,C);// istanbul ignore else @preserve +if(o){const l=()=>{// istanbul ignore else @preserve +c&&(b(c,C),O(c,Je,"false")),i&&!g(i,C)&&f(i,C)};a&&(g(a,R)||n&&g(n,R))?u.set(o,l,1):l()}// istanbul ignore else @preserve +a&&(b(a,m),g(a,R)?A(a,()=>Dn(this)):Dn(this))}}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(Qt,"selector",Cn),d(Qt,"init",Oc),d(Qt,"getInstance",_o);const Q="toast",Bo="Toast",_c=`.${Q}`,Bc=`[${We}="${Q}"]`,Ro=`[${ct}="${Q}"]`,ne="showing",Fo="hide",Rc={animation:!0,autohide:!0,delay:5e3},Os=t=>W(t,Bo),Fc=t=>new te(t),Ln=$(`show.bs.${Q}`),Wc=$(`shown.bs.${Q}`),kn=$(`hide.bs.${Q}`),jc=$(`hidden.bs.${Q}`),Nn=t=>{const{element:s,options:e}=t;b(s,ne),u.clear(s,ne),w(s,Wc);// istanbul ignore else @preserve +e.autohide&&u.set(s,()=>t.hide(),e.delay,Q)},On=t=>{const{element:s}=t;b(s,ne),b(s,m),f(s,Fo),u.clear(s,Q),w(s,jc)},zc=t=>{const{element:s,options:e}=t;f(s,ne),e.animation?(_t(s),A(s,()=>On(t))):On(t)},Vc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,Fo),_t(s),f(s,m),f(s,ne),e.animation?A(s,()=>Nn(t)):Nn(t)},17,ne)},Xc=t=>{const{target:s}=t,e=s&&M(s,Ro),n=e&&K(e),o=n&&Os(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show()}},Kc=t=>{const s=t.target,e=Os(s),{type:n,relatedTarget:o}=t;// istanbul ignore else @preserve: a solid filter is required +e&&s!==o&&!s.contains(o)&&([Me,ys].includes(n)?u.clear(s,Q):u.set(s,()=>e.hide(),e.options.delay,Q))};class te extends ot{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&!n&&(w(e,Ln),Ln.defaultPrevented||Vc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&n&&(w(e,kn),kn.defaultPrevented||zc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:r}=this;// istanbul ignore else @preserve +c&&n(c,N,r);// istanbul ignore else @preserve +a.autohide&&[ys,_n,Me,Cs].forEach(l=>n(o,l,Kc));// istanbul ignore else @preserve +i.length&&i.forEach(l=>n(l,N,Xc))});const{element:o,options:i}=this;i.animation&&!g(o,R)?f(o,R):!i.animation&&g(o,R)&&b(o,R),this.dismiss=H(Bc,o),this.triggers=[...J(Ro,E(o))].filter(c=>K(c)===o),this._toggleEventListeners(!0)}get name(){return Bo}get defaults(){return Rc}get isShown(){return g(this.element,m)}dispose(){const{element:e,isShown:n}=this;this._toggleEventListeners(),u.clear(e,Q),n&&b(e,m),super.dispose()}}d(te,"selector",_c),d(te,"init",Fc),d(te,"getInstance",Os);const Ms=new Map;[Xt,Kt,Yt,Ut,qt,Zt,Jt,At,Gt,Qt,te,Ct].forEach(t=>Ms.set(t.prototype.name,t));const Yc=(t,s)=>{[...s].forEach(e=>t(e))},Uc=(t,s)=>{const e=It.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},$s=t=>{const s=t&&t.nodeName?t:document,e=[...Ps("*",s)];Ms.forEach(n=>{const{init:o,selector:i}=n;Yc(o,e.filter(c=>Kn(c,i)))})},qc=t=>{const s=t&&t.nodeName?t:document;Ms.forEach(e=>{Uc(e.prototype.name,s)})};document.body?$s():_(document,"DOMContentLoaded",()=>$s(),{once:!0});exports.Alert=Xt;exports.Button=Kt;exports.Carousel=Yt;exports.Collapse=Ut;exports.Dropdown=qt;exports.Modal=Zt;exports.Offcanvas=Jt;exports.Popover=At;exports.ScrollSpy=Gt;exports.Tab=Qt;exports.Toast=te;exports.Tooltip=Ct;exports.initCallback=$s;exports.removeDataAPI=qc; //# sourceMappingURL=bootstrap-native.cjs.map diff --git a/dist/bootstrap-native.cjs.map b/dist/bootstrap-native.cjs.map index 8b94e486..2e736313 100644 --- a/dist/bootstrap-native.cjs.map +++ b/dist/bootstrap-native.cjs.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap-native.cjs","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.3/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.5/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const pe = \"aria-checked\", me = \"aria-description\", fe = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Ne = \"aria-valuemax\", ke = \"aria-valuenow\", Me = \"aria-valuetext\", q = \"abort\", G = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", mt = \"mouseenter\", ft = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Nt = \"pointerleave\", kt = \"pointermove\", Mt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Ot = \"select\", Lt = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ft = \"unload\", Te = {\n DOMContentLoaded: P,\n DOMMouseScroll: Y,\n abort: q,\n beforeunload: G,\n blur: J,\n change: K,\n click: it,\n contextmenu: X,\n dblclick: ut,\n error: Z,\n focus: $,\n focusin: _,\n focusout: tt,\n gesturechange: et,\n gestureend: nt,\n gesturestart: ot,\n hover: pt,\n keydown: st,\n keypress: ct,\n keyup: rt,\n load: at,\n mousedown: lt,\n mousemove: bt,\n mousein: gt,\n mouseout: vt,\n mouseenter: mt,\n mouseleave: ft,\n mouseover: Et,\n mouseup: dt,\n mousewheel: ht,\n move: yt,\n orientationchange: wt,\n pointercancel: At,\n pointerdown: St,\n pointerleave: Nt,\n pointermove: kt,\n pointerup: Mt,\n readystatechange: Tt,\n reset: Dt,\n resize: Ct,\n scroll: zt,\n select: Ot,\n selectend: Lt,\n selectstart: It,\n submit: xt,\n touchcancel: Ht,\n touchend: Pt,\n touchmove: Bt,\n touchstart: Vt,\n unload: Ft\n}, De = \"drag\", Ce = \"dragstart\", Oe = \"dragenter\", Le = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), Pe = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, Fe = { in: \"focusin\", out: \"focusout\" }, Ue = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", je = \"ArrowLeft\", qe = \"ArrowRight\", Ge = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"NumpadEnter\", $e = \"Escape\", _e = \"Insert\", tn = \"Meta\", en = \"Pause\", nn = \"ScrollLock\", on = \"Shift\", sn = \"Space\", cn = \"Tab\", Ut = \"animationDuration\", Wt = \"animationDelay\", F = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", U = \"transitionProperty\", rn = \"addEventListener\", an = \"removeEventListener\", un = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, ln = \"offsetHeight\", dn = \"offsetWidth\", pn = \"scrollHeight\", mn = \"scrollWidth\", fn = \"tabindex\", jt = navigator.userAgentData, A = jt, { userAgent: qt } = navigator, S = qt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst gn = O, x = /(iPhone|iPod|iPad)/, vn = A ? A.brands.some((t) => x.test(t.brand)) : (\n /* istanbul ignore next */\n x.test(S)\n), En = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next */\n !1\n), { head: N } = document, bn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), Gt = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n const s = (r) => {\n (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n };\n Gt(t, e, s, o);\n}, Xt = () => {\n}, hn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n Kt(document, P, Xt, e);\n } catch {\n }\n return t;\n})(), yn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), wn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, An = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Sn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), Yt = (t, e) => t.getAttribute(e), Nn = (t, e, n) => e.getAttributeNS(t, n), kn = (t, e) => t.hasAttribute(e), Mn = (t, e, n) => e.hasAttributeNS(t, n), Tn = (t, e, n) => t.setAttribute(e, n), Dn = (t, e, n, o) => e.setAttributeNS(t, n, o), Cn = (t, e) => t.removeAttribute(e), On = (t, e, n) => e.removeAttributeNS(t, n), Ln = (t, ...e) => {\n t.classList.add(...e);\n}, In = (t, ...e) => {\n t.classList.remove(...e);\n}, zn = (t, e) => t.classList.contains(e), { body: xn } = document, { documentElement: Vn } = document, Bn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!u(t)) return;\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!u(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n }\n}, Hn = (t, e) => L.get(t, e), k = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, M = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n if (!t) return;\n if (k(t))\n return d().createElement(t);\n const { tagName: e } = t, n = Zt(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, M(n, o);\n}, $t = (t, e) => {\n if (!t || !e) return;\n if (k(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = $t(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, M(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Pn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, _t = (t) => {\n const e = g(t, F), n = g(t, Wt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, te = (t) => {\n const e = g(t, F), n = g(t, Ut), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Fn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = te(t), r = _t(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ee = (t) => {\n const e = g(t, U), n = g(t, Qt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, ne = (t) => {\n const e = g(t, U), n = g(t, Rt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Un = (t, e) => {\n let n = 0;\n const o = new Event(C), s = ne(t), r = ee(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, Wn = (t) => Float32Array.from(Array.from(t)), Rn = (t) => Float64Array.from(Array.from(t)), Qn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), jn = (t, e, n, o) => {\n const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n return w(r).forEach(([c, m]) => {\n const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (j) => oe(j)) : c;\n l[y] = V(m);\n }), w(s).forEach(([c, m]) => {\n s[c] = V(m);\n }), w(e).forEach(([c, m]) => {\n c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : m;\n }), a;\n}, qn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Gn = (t) => Object.keys(t), Jn = (t) => Object.values(t), Kn = (t) => Object.fromEntries(t), Xn = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n return v(e) && M(n, e), n;\n}, Yn = { passive: !0 }, Zn = (t) => t.offsetHeight, $n = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && k(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, M(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, f = /* @__PURE__ */ new Map(), _n = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n u(t) && (o && o.length ? (f.has(t) || f.set(t, /* @__PURE__ */ new Map()), f.get(t).set(o, setTimeout(e, n))) : f.set(t, setTimeout(e, n)));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!u(t)) return null;\n const n = f.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : se(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!u(t)) return;\n const n = f.get(t);\n e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && f.delete(t)) : (clearTimeout(n), f.delete(t));\n }\n}, to = (t) => t.toUpperCase(), h = (t, e) => {\n const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n let p = 1, c = 1;\n if (e && u(t)) {\n const { offsetWidth: m, offsetHeight: y } = t;\n p = m > 0 ? Math.round(n) / m : (\n /* istanbul ignore next */\n 1\n ), c = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / c,\n top: s / c,\n right: r / p,\n bottom: a / c,\n left: l / p,\n x: l / p,\n y: s / c\n };\n}, eo = (t) => d(t).body, T = (t) => d(t).documentElement, no = (t) => d(t).head, oo = (t) => {\n const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, so = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n if (!u(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, co = (t, e, n) => {\n const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n if (o) {\n const a = h(e, !0);\n r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - r.x,\n y: s.top + n.y - r.y,\n width: s.width,\n height: s.height\n };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n let n = e ? B : H;\n if (e) {\n const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, ro = (t) => {\n var e;\n return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, ao = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, io = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, uo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n return e <= o && n >= 0;\n}, lo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && r <= n && a <= e;\n}, po = (t) => ie(t) && t.every(u) || !1, mo = (t) => typeof t == \"function\" || !1, fo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, go = (t) => u(t) && t.tagName === \"IMG\" || !1, vo = (t) => {\n if (!k(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, Eo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, bo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, ho = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, yo = (t) => T(t).dir === \"rtl\", wo = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Ao = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, So = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), No = (t) => [...de(\"*\", t)].filter(ue), ko = (t, e) => d(e).getElementById(t) || null, Mo = (t, e) => (i(e) ? e : d()).querySelectorAll(t), To = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n t\n), Do = (t, e) => t.matches(e), Co = \"2.0.3\";\nexport {\n Bn as ArrayFrom,\n P as DOMContentLoadedEvent,\n Y as DOMMouseScrollEvent,\n L as Data,\n Wn as Float32ArrayFrom,\n Rn as Float64ArrayFrom,\n M as ObjectAssign,\n w as ObjectEntries,\n Kn as ObjectFromEntries,\n qn as ObjectHasOwn,\n Gn as ObjectKeys,\n Jn as ObjectValues,\n _n as Timer,\n q as abortEvent,\n Ln as addClass,\n rn as addEventListener,\n Wt as animationDelay,\n Ut as animationDuration,\n D as animationEndEvent,\n F as animationName,\n pe as ariaChecked,\n fe as ariaDescribedBy,\n me as ariaDescription,\n ge as ariaExpanded,\n ve as ariaHasPopup,\n Ee as ariaHidden,\n be as ariaLabel,\n he as ariaLabelledBy,\n ye as ariaModal,\n we as ariaPressed,\n Ae as ariaSelected,\n Ne as ariaValueMax,\n Se as ariaValueMin,\n ke as ariaValueNow,\n Me as ariaValueText,\n G as beforeunloadEvent,\n un as bezierEasings,\n J as blurEvent,\n K as changeEvent,\n le as closest,\n X as contextmenuEvent,\n Xn as createCustomEvent,\n Zt as createElement,\n $t as createElementNS,\n Q as dispatchEvent,\n Pn as distinct,\n xn as documentBody,\n Vn as documentElement,\n N as documentHead,\n De as dragEvent,\n ze as dragendEvent,\n Oe as dragenterEvent,\n Le as dragleaveEvent,\n Ie as dragoverEvent,\n Ce as dragstartEvent,\n Fn as emulateAnimationEnd,\n Un as emulateTransitionEnd,\n Z as errorEvent,\n Qn as focus,\n $ as focusEvent,\n Fe as focusEvents,\n _ as focusinEvent,\n tt as focusoutEvent,\n et as gesturechangeEvent,\n nt as gestureendEvent,\n ot as gesturestartEvent,\n Yt as getAttribute,\n Nn as getAttributeNS,\n h as getBoundingClientRect,\n No as getCustomElements,\n d as getDocument,\n eo as getDocumentBody,\n T as getDocumentElement,\n no as getDocumentHead,\n _t as getElementAnimationDelay,\n te as getElementAnimationDuration,\n ko as getElementById,\n g as getElementStyle,\n ee as getElementTransitionDelay,\n ne as getElementTransitionDuration,\n To as getElementsByClassName,\n de as getElementsByTagName,\n Hn as getInstance,\n oo as getNodeScroll,\n so as getParentNode,\n co as getRectRelativeToOffsetParent,\n ae as getUID,\n ro as getWindow,\n kn as hasAttribute,\n Mn as hasAttributeNS,\n zn as hasClass,\n vn as isApple,\n ie as isArray,\n ao as isCanvas,\n ue as isCustomElement,\n R as isDocument,\n io as isElement,\n uo as isElementInScrollRange,\n lo as isElementInViewport,\n po as isElementsArray,\n En as isFirefox,\n mo as isFunction,\n fo as isHTMLCollection,\n u as isHTMLElement,\n go as isHTMLImageElement,\n vo as isJSON,\n I as isMap,\n bo as isMedia,\n gn as isMobile,\n i as isNode,\n ho as isNodeList,\n se as isNumber,\n v as isObject,\n yo as isRTL,\n wo as isSVGElement,\n re as isScaledElement,\n ce as isShadowRoot,\n k as isString,\n Ao as isTableElement,\n Eo as isWeakMap,\n W as isWindow,\n We as keyAlt,\n Re as keyArrowDown,\n je as keyArrowLeft,\n qe as keyArrowRight,\n Qe as keyArrowUp,\n Ge as keyBackspace,\n Je as keyCapsLock,\n Ke as keyControl,\n Xe as keyDelete,\n Ye as keyEnter,\n $e as keyEscape,\n _e as keyInsert,\n tn as keyMeta,\n Ze as keyNumpadEnter,\n en as keyPause,\n nn as keyScrollLock,\n on as keyShift,\n sn as keySpace,\n cn as keyTab,\n Ue as keyboardEventKeys,\n st as keydownEvent,\n ct as keypressEvent,\n rt as keyupEvent,\n at as loadEvent,\n xe as loadstartEvent,\n Do as matches,\n Be as mouseClickEvents,\n He as mouseHoverEvents,\n Ve as mouseSwipeEvents,\n it as mouseclickEvent,\n ut as mousedblclickEvent,\n lt as mousedownEvent,\n mt as mouseenterEvent,\n pt as mousehoverEvent,\n gt as mouseinEvent,\n ft as mouseleaveEvent,\n bt as mousemoveEvent,\n vt as mouseoutEvent,\n Et as mouseoverEvent,\n dt as mouseupEvent,\n ht as mousewheelEvent,\n yt as moveEvent,\n Te as nativeEvents,\n Xt as noop,\n jn as normalizeOptions,\n V as normalizeValue,\n Jt as off,\n ln as offsetHeight,\n dn as offsetWidth,\n Gt as on,\n Kt as one,\n wt as orientationchangeEvent,\n Yn as passiveHandler,\n At as pointercancelEvent,\n St as pointerdownEvent,\n Nt as pointerleaveEvent,\n kt as pointermoveEvent,\n Mt as pointerupEvent,\n So as querySelector,\n Mo as querySelectorAll,\n Tt as readystatechangeEvent,\n Zn as reflow,\n Cn as removeAttribute,\n On as removeAttributeNS,\n In as removeClass,\n an as removeEventListener,\n Dt as resetEvent,\n Ct as resizeEvent,\n zt as scrollEvent,\n pn as scrollHeight,\n mn as scrollWidth,\n Ot as selectEvent,\n Lt as selectendEvent,\n It as selectstartEvent,\n Tn as setAttribute,\n Dn as setAttributeNS,\n $n as setElementStyle,\n xt as submitEvent,\n bn as support3DTransform,\n An as supportAnimation,\n hn as supportPassive,\n wn as supportTouch,\n yn as supportTransform,\n Sn as supportTransition,\n fn as tabindex,\n oe as toLowerCase,\n to as toUpperCase,\n Pe as touchEvents,\n Ht as touchcancelEvent,\n Pt as touchendEvent,\n Bt as touchmoveEvent,\n Vt as touchstartEvent,\n Qt as transitionDelay,\n Rt as transitionDuration,\n C as transitionEndEvent,\n U as transitionProperty,\n Ft as unloadEvent,\n S as userAgent,\n A as userAgentData,\n Co as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n getInstance,\n removeClass,\n hasClass,\n addClass,\n setAttribute,\n mouseclickEvent,\n ariaPressed,\n getAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n getDocumentBody,\n getDocumentElement,\n getDocument,\n getWindow,\n removeClass,\n hasClass,\n addClass,\n getElementsByTagName,\n getAttribute,\n querySelector,\n isHTMLElement,\n isWindow,\n createCustomEvent,\n getInstance,\n scrollEvent,\n passiveHandler,\n dispatchEvent,\n getBoundingClientRect,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement, ops?: Record) => T,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) (instance as T & { dispose: () => void }).dispose();\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), { once: true });\n}\n"],"names":["fe","ge","Ee","ye","we","Ae","P","$","_","tt","st","rt","it","lt","pt","mt","ft","St","kt","Mt","Ct","zt","Vt","Ce","Re","Qe","je","qe","$e","Rt","Qt","C","U","jt","A","qt","S","z","x","vn","N","Gt","e","n","o","s","Jt","Kt","r","Xt","Yt","kn","Tn","Cn","Ln","In","zn","v","i","u","E","L","Hn","k","W","R","d","M","Zt","Q","g","ee","ne","Un","a","l","Qn","V","w","oe","jn","p","c","m","y","j","Gn","Xn","Yn","Zn","$n","I","se","f","_n","h","eo","T","ce","so","B","H","b","ae","ro","ie","uo","mo","ho","yo","Ao","le","So","de","Mo","To","Do","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","keyArrowRight","keyArrowLeft","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","isHTMLElement","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","pad","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","delay","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","completeDisposeToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"bootstrap-native.cjs","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.5/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.6/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const he = \"aria-checked\", ye = \"aria-description\", we = \"aria-describedby\", Ae = \"aria-expanded\", Se = \"aria-haspopup\", X = \"aria-hidden\", Ne = \"aria-label\", Me = \"aria-labelledby\", Te = \"aria-modal\", ke = \"aria-pressed\", De = \"aria-selected\", Ce = \"aria-valuemin\", Oe = \"aria-valuemax\", Le = \"aria-valuenow\", Ie = \"aria-valuetext\", Y = \"abort\", Z = \"beforeunload\", $ = \"blur\", _ = \"change\", tt = \"contextmenu\", P = \"DOMContentLoaded\", et = \"DOMMouseScroll\", nt = \"error\", ot = \"focus\", st = \"focusin\", ct = \"focusout\", rt = \"gesturechange\", at = \"gestureend\", it = \"gesturestart\", ut = \"keydown\", lt = \"keypress\", dt = \"keyup\", pt = \"load\", ft = \"click\", mt = \"dblclick\", gt = \"mousedown\", vt = \"mouseup\", Et = \"hover\", bt = \"mouseenter\", ht = \"mouseleave\", yt = \"mousein\", wt = \"mouseout\", At = \"mouseover\", St = \"mousemove\", Nt = \"mousewheel\", Mt = \"move\", Tt = \"orientationchange\", kt = \"pointercancel\", Dt = \"pointerdown\", Ct = \"pointerleave\", Ot = \"pointermove\", Lt = \"pointerup\", It = \"readystatechange\", xt = \"reset\", zt = \"resize\", Vt = \"select\", Bt = \"selectend\", Ft = \"selectstart\", Ht = \"scroll\", Pt = \"submit\", Ut = \"touchstart\", Wt = \"touchmove\", Rt = \"touchcancel\", Qt = \"touchend\", jt = \"unload\", xe = {\n DOMContentLoaded: P,\n DOMMouseScroll: et,\n abort: Y,\n beforeunload: Z,\n blur: $,\n change: _,\n click: ft,\n contextmenu: tt,\n dblclick: mt,\n error: nt,\n focus: ot,\n focusin: st,\n focusout: ct,\n gesturechange: rt,\n gestureend: at,\n gesturestart: it,\n hover: Et,\n keydown: ut,\n keypress: lt,\n keyup: dt,\n load: pt,\n mousedown: gt,\n mousemove: St,\n mousein: yt,\n mouseout: wt,\n mouseenter: bt,\n mouseleave: ht,\n mouseover: At,\n mouseup: vt,\n mousewheel: Nt,\n move: Mt,\n orientationchange: Tt,\n pointercancel: kt,\n pointerdown: Dt,\n pointerleave: Ct,\n pointermove: Ot,\n pointerup: Lt,\n readystatechange: It,\n reset: xt,\n resize: zt,\n scroll: Ht,\n select: Vt,\n selectend: Bt,\n selectstart: Ft,\n submit: Pt,\n touchcancel: Rt,\n touchend: Qt,\n touchmove: Wt,\n touchstart: Ut,\n unload: jt\n}, ze = \"drag\", Ve = \"dragstart\", Be = \"dragenter\", Fe = \"dragleave\", He = \"dragover\", Pe = \"dragend\", Ue = \"loadstart\", We = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Re = { down: \"mousedown\", up: \"mouseup\" }, Qe = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), je = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, qe = { in: \"focusin\", out: \"focusout\" }, qt = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]', Ge = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, Ke = \"Alt\", Je = \"ArrowDown\", Xe = \"ArrowUp\", Ye = \"ArrowLeft\", Ze = \"ArrowRight\", $e = \"Backspace\", _e = \"CapsLock\", tn = \"Control\", en = \"Delete\", nn = \"Enter\", on = \"NumpadEnter\", sn = \"Escape\", cn = \"Insert\", rn = \"Meta\", an = \"Pause\", un = \"ScrollLock\", ln = \"Shift\", dn = \"Space\", pn = \"Tab\", Gt = \"animationDuration\", Kt = \"animationDelay\", U = \"animationName\", D = \"animationend\", Jt = \"transitionDuration\", Xt = \"transitionDelay\", C = \"transitionend\", W = \"transitionProperty\", fn = \"addEventListener\", mn = \"removeEventListener\", gn = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, vn = \"offsetHeight\", En = \"offsetWidth\", bn = \"scrollHeight\", hn = \"scrollWidth\", yn = \"tabindex\", Yt = navigator.userAgentData, A = Yt, { userAgent: Zt } = navigator, S = Zt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\n// istanbul ignore else @preserve\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst wn = O, V = /(iPhone|iPod|iPad)/, An = A ? A.brands.some((t) => V.test(t.brand)) : (\n /* istanbul ignore next @preserve */\n V.test(S)\n), Sn = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next @preserve */\n !1\n), { head: N } = document, Nn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), R = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Q = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, $t = (t, e, n, o) => {\n const s = (c) => {\n /* istanbul ignore else @preserve */\n (c.target === t || c.currentTarget === t) && (n.apply(t, [c]), Q(t, e, s, o));\n };\n R(t, e, s, o);\n}, _t = () => {\n}, Mn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n // istanbul ignore next @preserve\n $t(document, P, _t, e);\n } catch {\n }\n return t;\n})(), Tn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), kn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, Dn = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Cn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), j = (t, e) => t.getAttribute(e), On = (t, e, n) => e.getAttributeNS(t, n), te = (t, e) => t.hasAttribute(e), Ln = (t, e, n) => e.hasAttributeNS(t, n), In = (t, e, n) => t.setAttribute(e, n), xn = (t, e, n, o) => e.setAttributeNS(t, n, o), zn = (t, e) => t.removeAttribute(e), Vn = (t, e, n) => e.removeAttributeNS(t, n), Bn = (t, ...e) => {\n t.classList.add(...e);\n}, Fn = (t, ...e) => {\n t.classList.remove(...e);\n}, Hn = (t, e) => t.classList.contains(e), { body: Pn } = document, { documentElement: Un } = document, Wn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, l = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!l(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n if (!n || !l(t)) return;\n n.delete(t);\n // istanbul ignore else @preserve\n n.size === 0 && E.delete(e);\n }\n}, Rn = (t, e) => L.get(t, e), M = (t) => typeof t == \"string\" || !1, q = (t) => v(t) && t.constructor.name === \"Window\" || !1, G = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => q(t) ? t.document : G(t) ? t : i(t) ? t.ownerDocument : window.document, T = (t, ...e) => Object.assign(t, ...e), ee = (t) => {\n if (!t) return;\n if (M(t))\n return d().createElement(t);\n const { tagName: e } = t, n = ee(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, T(n, o);\n}, ne = (t, e) => {\n if (!t || !e) return;\n if (M(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = ne(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, T(o, s);\n}, K = (t, e) => t.dispatchEvent(e), Qn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, oe = (t) => {\n const e = g(t, U), n = g(t, Kt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, se = (t) => {\n const e = g(t, U), n = g(t, Gt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, jn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = se(t), c = oe(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else {\n // istanbul ignore next @preserve\n e.apply(t, [o]);\n }\n}, ce = (t) => {\n const e = g(t, W), n = g(t, Xt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, re = (t) => {\n const e = g(t, W), n = g(t, Jt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, qn = (t, e) => {\n let n = 0;\n const o = new Event(C), s = re(t), c = ce(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else\n e.apply(t, [o]);\n}, Gn = (t) => Float32Array.from(Array.from(t)), Kn = (t) => Float64Array.from(Array.from(t)), Jn = (t, e) => t.focus(e), B = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), ae = (t) => t.toLowerCase(), Xn = (t, e, n, o) => {\n const s = { ...n }, c = { ...t.dataset }, a = { ...e }, u = {}, p = \"title\";\n return w(c).forEach(([r, f]) => {\n const y = o && typeof r == \"string\" && r.includes(o) ? r.replace(o, \"\").replace(/[A-Z]/g, (J) => ae(J)) : (\n /* istanbul ignore next @preserve */\n r\n );\n u[y] = B(f);\n }), w(s).forEach(([r, f]) => {\n s[r] = B(f);\n }), w(e).forEach(([r, f]) => {\n // istanbul ignore else @preserve\n r in s ? a[r] = s[r] : r in u ? a[r] = u[r] : a[r] = r === p ? j(t, p) : f;\n }), a;\n}, Yn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Zn = (t) => Object.keys(t), $n = (t) => Object.values(t), _n = (t) => Object.fromEntries(t), to = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n // istanbul ignore else @preserve\n return v(e) && T(n, e), n;\n}, eo = { passive: !0 }, no = (t) => t.offsetHeight, oo = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && M(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, T(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, ie = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), so = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n if (o && o.length) {\n // istanbul ignore else @preserve\n m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n));\n } else\n m.set(t, setTimeout(e, n));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!l(t)) return null;\n const n = m.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : ie(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!l(t)) return;\n const n = m.get(t);\n if (e && e.length && I(n)) {\n clearTimeout(n.get(e)), n.delete(e);\n // istanbul ignore else @preserve\n n.size === 0 && m.delete(t);\n } else\n clearTimeout(n), m.delete(t);\n }\n}, co = (t) => t.toUpperCase(), ue = (t, e) => (i(e) ? e : d()).querySelectorAll(t), x = /* @__PURE__ */ new Map();\nfunction le(t) {\n const { shiftKey: e, code: n } = t, o = d(this), s = [...ue(qt, this)].filter(\n (u) => !te(u, \"disabled\") && !j(u, X)\n );\n if (!s.length) return;\n const c = s[0], a = s[s.length - 1];\n // istanbul ignore else @preserve\n n === \"Tab\" && (e && o.activeElement === c ? (a.focus(), t.preventDefault()) : !e && o.activeElement === a && (c.focus(), t.preventDefault()));\n}\nconst de = (t) => x.has(t) === !0, ro = (t) => {\n const e = de(t);\n (e ? Q : R)(t, \"keydown\", le), e ? x.delete(t) : x.set(t, !0);\n}, h = (t, e) => {\n const { width: n, height: o, top: s, right: c, bottom: a, left: u } = t.getBoundingClientRect();\n let p = 1, r = 1;\n if (e && l(t)) {\n const { offsetWidth: f, offsetHeight: y } = t;\n p = f > 0 ? Math.round(n) / f : (\n /* istanbul ignore next */\n 1\n ), r = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / r,\n top: s / r,\n right: c / p,\n bottom: a / r,\n left: u / p,\n x: u / p,\n y: s / r\n };\n}, ao = (t) => d(t).body, k = (t) => d(t).documentElement, io = (t) => d(t).head, uo = (t) => {\n const e = q(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, pe = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, lo = (t) => t.nodeName === \"HTML\" ? t : l(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\npe(t) && t.host || // ShadowRoot detected\nk(t), fe = (t) => {\n if (!l(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, po = (t, e, n) => {\n const o = l(e), s = h(t, o && fe(e)), c = { x: 0, y: 0 };\n // istanbul ignore else @preserve\n if (o) {\n const a = h(e, !0);\n c.x = a.x + e.clientLeft, c.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - c.x,\n y: s.top + n.y - c.y,\n width: s.width,\n height: s.height\n };\n};\nlet F = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), me = (t, e) => {\n let n = e ? F : H;\n if (e) {\n const o = me(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), F += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, fo = (t) => {\n var e;\n return t ? G(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ge = (t) => Array.isArray(t) || !1, mo = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ve = (t) => l(t) && !!t.shadowRoot || !1, go = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, vo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = k(t);\n return e <= o && n >= 0;\n}, Eo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = k(t), { top: o, left: s, bottom: c, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && c <= n && a <= e;\n}, bo = (t) => ge(t) && t.every(l) || !1, ho = (t) => typeof t == \"function\" || !1, yo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, wo = (t) => l(t) && t.tagName === \"IMG\" || !1, Ao = (t) => {\n if (!M(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, So = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, No = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, Mo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, To = (t) => k(t).dir === \"rtl\", ko = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Do = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, Ee = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nEe(t.getRootNode().host, e) : null, Co = (t, e) => l(t) ? t : (i(e) ? e : d()).querySelector(t), be = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), Oo = (t) => [...be(\"*\", t)].filter(ve), Lo = (t, e) => d(e).getElementById(t) || null, Io = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(t), xo = (t, e) => t.matches(e), zo = \"2.0.5\";\nexport {\n Wn as ArrayFrom,\n P as DOMContentLoadedEvent,\n et as DOMMouseScrollEvent,\n L as Data,\n Gn as Float32ArrayFrom,\n Kn as Float64ArrayFrom,\n T as ObjectAssign,\n w as ObjectEntries,\n _n as ObjectFromEntries,\n Yn as ObjectHasOwn,\n Zn as ObjectKeys,\n $n as ObjectValues,\n so as Timer,\n Y as abortEvent,\n Bn as addClass,\n fn as addEventListener,\n Kt as animationDelay,\n Gt as animationDuration,\n D as animationEndEvent,\n U as animationName,\n he as ariaChecked,\n we as ariaDescribedBy,\n ye as ariaDescription,\n Ae as ariaExpanded,\n Se as ariaHasPopup,\n X as ariaHidden,\n Ne as ariaLabel,\n Me as ariaLabelledBy,\n Te as ariaModal,\n ke as ariaPressed,\n De as ariaSelected,\n Oe as ariaValueMax,\n Ce as ariaValueMin,\n Le as ariaValueNow,\n Ie as ariaValueText,\n Z as beforeunloadEvent,\n gn as bezierEasings,\n $ as blurEvent,\n _ as changeEvent,\n Ee as closest,\n tt as contextmenuEvent,\n to as createCustomEvent,\n ee as createElement,\n ne as createElementNS,\n K as dispatchEvent,\n Qn as distinct,\n Pn as documentBody,\n Un as documentElement,\n N as documentHead,\n ze as dragEvent,\n Pe as dragendEvent,\n Be as dragenterEvent,\n Fe as dragleaveEvent,\n He as dragoverEvent,\n Ve as dragstartEvent,\n jn as emulateAnimationEnd,\n qn as emulateTransitionEnd,\n nt as errorEvent,\n Jn as focus,\n ot as focusEvent,\n qe as focusEvents,\n qt as focusableSelector,\n st as focusinEvent,\n ct as focusoutEvent,\n rt as gesturechangeEvent,\n at as gestureendEvent,\n it as gesturestartEvent,\n j as getAttribute,\n On as getAttributeNS,\n h as getBoundingClientRect,\n Oo as getCustomElements,\n d as getDocument,\n ao as getDocumentBody,\n k as getDocumentElement,\n io as getDocumentHead,\n oe as getElementAnimationDelay,\n se as getElementAnimationDuration,\n Lo as getElementById,\n g as getElementStyle,\n ce as getElementTransitionDelay,\n re as getElementTransitionDuration,\n Io as getElementsByClassName,\n be as getElementsByTagName,\n Rn as getInstance,\n uo as getNodeScroll,\n lo as getParentNode,\n po as getRectRelativeToOffsetParent,\n me as getUID,\n fo as getWindow,\n te as hasAttribute,\n Ln as hasAttributeNS,\n Hn as hasClass,\n de as hasFocusTrap,\n An as isApple,\n ge as isArray,\n mo as isCanvas,\n ve as isCustomElement,\n G as isDocument,\n go as isElement,\n vo as isElementInScrollRange,\n Eo as isElementInViewport,\n bo as isElementsArray,\n Sn as isFirefox,\n ho as isFunction,\n yo as isHTMLCollection,\n l as isHTMLElement,\n wo as isHTMLImageElement,\n Ao as isJSON,\n I as isMap,\n No as isMedia,\n wn as isMobile,\n i as isNode,\n Mo as isNodeList,\n ie as isNumber,\n v as isObject,\n To as isRTL,\n ko as isSVGElement,\n fe as isScaledElement,\n pe as isShadowRoot,\n M as isString,\n Do as isTableElement,\n So as isWeakMap,\n q as isWindow,\n Ke as keyAlt,\n Je as keyArrowDown,\n Ye as keyArrowLeft,\n Ze as keyArrowRight,\n Xe as keyArrowUp,\n $e as keyBackspace,\n _e as keyCapsLock,\n tn as keyControl,\n en as keyDelete,\n nn as keyEnter,\n sn as keyEscape,\n cn as keyInsert,\n rn as keyMeta,\n on as keyNumpadEnter,\n an as keyPause,\n un as keyScrollLock,\n ln as keyShift,\n dn as keySpace,\n pn as keyTab,\n Ge as keyboardEventKeys,\n ut as keydownEvent,\n lt as keypressEvent,\n dt as keyupEvent,\n pt as loadEvent,\n Ue as loadstartEvent,\n xo as matches,\n Re as mouseClickEvents,\n Qe as mouseHoverEvents,\n We as mouseSwipeEvents,\n ft as mouseclickEvent,\n mt as mousedblclickEvent,\n gt as mousedownEvent,\n bt as mouseenterEvent,\n Et as mousehoverEvent,\n yt as mouseinEvent,\n ht as mouseleaveEvent,\n St as mousemoveEvent,\n wt as mouseoutEvent,\n At as mouseoverEvent,\n vt as mouseupEvent,\n Nt as mousewheelEvent,\n Mt as moveEvent,\n xe as nativeEvents,\n _t as noop,\n Xn as normalizeOptions,\n B as normalizeValue,\n Q as off,\n vn as offsetHeight,\n En as offsetWidth,\n R as on,\n $t as one,\n Tt as orientationchangeEvent,\n eo as passiveHandler,\n kt as pointercancelEvent,\n Dt as pointerdownEvent,\n Ct as pointerleaveEvent,\n Ot as pointermoveEvent,\n Lt as pointerupEvent,\n Co as querySelector,\n ue as querySelectorAll,\n It as readystatechangeEvent,\n no as reflow,\n zn as removeAttribute,\n Vn as removeAttributeNS,\n Fn as removeClass,\n mn as removeEventListener,\n xt as resetEvent,\n zt as resizeEvent,\n Ht as scrollEvent,\n bn as scrollHeight,\n hn as scrollWidth,\n Vt as selectEvent,\n Bt as selectendEvent,\n Ft as selectstartEvent,\n In as setAttribute,\n xn as setAttributeNS,\n oo as setElementStyle,\n Pt as submitEvent,\n Nn as support3DTransform,\n Dn as supportAnimation,\n Mn as supportPassive,\n kn as supportTouch,\n Tn as supportTransform,\n Cn as supportTransition,\n yn as tabindex,\n ae as toLowerCase,\n co as toUpperCase,\n ro as toggleFocusTrap,\n je as touchEvents,\n Rt as touchcancelEvent,\n Qt as touchendEvent,\n Wt as touchmoveEvent,\n Ut as touchstartEvent,\n Xt as transitionDelay,\n Jt as transitionDuration,\n C as transitionEndEvent,\n W as transitionProperty,\n jt as unloadEvent,\n S as userAgent,\n A as userAgentData,\n zo as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n /* istanbul ignore else @preserve */\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n /* istanbul ignore else @preserve */\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n /* istanbul ignore else @preserve */\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n);\n /* istanbul ignore else @preserve */\n a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n /* istanbul ignore else @preserve */\n o && o.has(i) && o.delete(i);\n /* istanbul ignore else @preserve */\n s && (!o || !o.size) && s.delete(t);\n /* istanbul ignore else @preserve */\n (!s || !s.size) && delete e[c];\n /* istanbul ignore else @preserve */\n (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n addClass,\n ariaPressed,\n getAttribute,\n getInstance,\n hasClass,\n mouseclickEvent,\n removeClass,\n setAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\ntype Component =\n | Alert\n | Button\n | Carousel\n | Collapse\n | Dropdown\n | Modal\n | Offcanvas\n | Popover\n | ScrollSpy\n | Tab\n | Toast\n | Tooltip;\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement) => Component,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) {\n (instance as T & { dispose: () => void }).dispose();\n }\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), {\n once: true,\n });\n}\n"],"names":["we","Ae","X","Te","ke","De","P","ot","st","ct","ut","dt","ft","gt","Et","bt","ht","Dt","Ot","Lt","zt","Ht","Ut","Ve","qt","Je","Xe","Ye","Ze","sn","Jt","Xt","C","W","Yt","A","Zt","S","z","V","An","N","R","e","n","o","s","Q","$t","c","_t","j","te","In","zn","Bn","Fn","Hn","v","i","l","E","L","Rn","M","q","G","d","T","ee","K","g","ce","re","qn","a","u","Jn","B","w","ae","Xn","p","r","f","y","J","Zn","to","eo","no","oo","I","ie","m","so","ue","x","le","de","ro","h","ao","k","pe","lo","F","H","b","me","fo","ge","vo","ho","Mo","To","Do","Ee","Co","be","Io","xo","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","arrowKeyNext","keyArrowLeft","keyArrowRight","arrowKeyPrev","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","toggleFocusTrap","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","isOpen","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","delay","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"wPAAK,MAA+CA,GAAK,mBAAoBC,GAAK,gBAAuCC,GAAI,cAA0DC,GAAK,aAAcC,GAAK,eAAgBC,GAAK,gBAAyLC,GAAI,mBAAyDC,GAAK,QAASC,GAAK,UAAWC,GAAK,WAA0EC,GAAK,UAA4BC,GAAK,QAAsBC,EAAK,QAA0BC,GAAK,YAA6BC,GAAK,QAASC,GAAK,aAAcC,GAAK,aAAmKC,GAAK,cAAoCC,GAAK,cAAeC,GAAK,YAAoDC,GAAK,SAA+DC,GAAK,SAAyBC,GAAK,aAmD1lCC,GAAK,YAauBC,GAAK,oFAuClCC,GAAK,YAAaC,GAAK,UAAWC,GAAK,YAAaC,GAAK,aAAkHC,GAAK,SAAyMC,GAAK,qBAAsBC,GAAK,kBAAmBC,GAAI,gBAAiBC,GAAI,qBA0B9WC,GAAK,UAAU,cAAeC,GAAID,GAAI,CAAE,UAAWE,EAAE,EAAK,UAAWC,GAAID,GAAIE,GAAI,4BAEvL;AACAH,GAAQA,GAAE,OAAO,KAAM,GAAMG,GAAE,KAAK,EAAE,KAAK,CAAC,EAAQA,GAAE,KAAKD,EAAC,EACvD,MAASE,GAAI,qBAAsBC,GAAKL,GAAIA,GAAE,OAAO,KAAM,GAAMI,GAAE,KAAK,EAAE,KAAK,CAAC,EAEnFA,GAAE,KAAKF,EAAC,EACFA,IAAIA,GAAE,SAAS,SAAS,EAG7B,KAAA,CAAE,KAAMI,IAAM,SAAe,CAAC,oBAAqB,aAAa,EAAE,KAAM,GAAM,KAAKA,GAAE,KAAK,EAAG,MAAAC,GAAI,CAAC,EAAGC,EAAGC,EAAGC,IAAM,CAClH,MAAMC,EAAID,GAAK,GACf,EAAE,iBAAiBF,EAAGC,EAAGE,CAAC,CAC5B,EAAGC,GAAI,CAAC,EAAGJ,EAAGC,EAAGC,IAAM,CACrB,MAAMC,EAAID,GAAK,GACf,EAAE,oBAAoBF,EAAGC,EAAGE,CAAC,CAC/B,EAAGE,GAAK,CAAC,EAAGL,EAAGC,EAAGC,IAAM,CACtB,MAAMC,EAAKG,GAAM,CACnB,qCACKA,EAAE,SAAW,GAAKA,EAAE,gBAAkB,KAAOL,EAAE,MAAM,EAAG,CAACK,CAAC,CAAC,EAAGF,GAAE,EAAGJ,EAAGG,EAAGD,CAAC,EAC/E,EACEH,GAAE,EAAGC,EAAGG,EAAGD,CAAC,CACd,EAAGK,GAAK,IAAM,CACd,GAAS,IAAM,CACb,IAAI,EAAI,GACR,GAAI,CACF,MAAMP,EAAI,OAAO,eAAe,CAAA,EAAI,UAAW,CAC7C,IAAK,KAAO,EAAI,GAAI,EAC1B,CAAK,EACL;AACIK,GAAG,SAAU1C,GAAG4C,GAAIP,CAAC,CACzB,MAAU,CACP,CACD,OAAO,CACT,GAAI,EAAO,CAAC,kBAAmB,WAAW,EAAE,KAAM,GAAM,KAAKF,GAAE,KAAK,EAC9B,CAAC,kBAAmB,WAAW,EAAE,KAAM,GAAM,KAAKA,GAAE,KAAK,EAAQ,CAAC,mBAAoB,YAAY,EAAE,KAAM,GAAM,KAAKA,GAAE,KAAK,EAAE,MAACU,GAAI,CAAC,EAAGR,IAAM,EAAE,aAAaA,CAAC,EAA6CS,GAAK,CAAC,EAAGT,IAAM,EAAE,aAAaA,CAAC,EAA6CU,EAAK,CAAC,EAAGV,EAAGC,IAAM,EAAE,aAAaD,EAAGC,CAAC,EAAmDU,GAAK,CAAC,EAAGX,IAAM,EAAE,gBAAgBA,CAAC,EAAgDY,EAAK,CAAC,KAAMZ,IAAM,CACtf,EAAE,UAAU,IAAI,GAAGA,CAAC,CACtB,EAAGa,EAAK,CAAC,KAAMb,IAAM,CACnB,EAAE,UAAU,OAAO,GAAGA,CAAC,CACzB,EAAGc,EAAK,CAAC,EAAGd,IAAM,EAAE,UAAU,SAASA,CAAC,EAA2Fe,GAAK,GAAM,GAAK,MAAQ,OAAO,GAAK,UAAY,GAAIC,EAAK,GAAMD,GAAE,CAAC,GAAK,OAAO,EAAE,UAAY,UAAY,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAAE,KAAMf,GAAM,EAAE,WAAaA,CAAC,GAAK,GAAIiB,EAAK,GAAMD,EAAE,CAAC,GAAK,EAAE,WAAa,GAAK,GAAIE,GAAoB,IAAI,IAAOC,GAAI,CAChY,KAAMD,GAQN,IAAK,CAAC,EAAGlB,EAAGC,IAAM,CAChB,GAAI,CAACgB,EAAE,CAAC,EAAG,OACf;AACIC,GAAE,IAAIlB,CAAC,GAAKkB,GAAE,IAAIlB,EAAmB,IAAI,GAAK,EAAGkB,GAAE,IAAIlB,CAAC,EAAE,IAAI,EAAGC,CAAC,CACnE,EAOD,UAAY,GAAMiB,GAAE,IAAI,CAAC,GAAK,KAQ9B,IAAK,CAAC,EAAGlB,IAAM,CACb,GAAI,CAACiB,EAAE,CAAC,GAAK,CAACjB,EAAG,OAAO,KACxB,MAAMC,EAAIkB,GAAE,UAAUnB,CAAC,EACvB,OAAO,GAAKC,GAAKA,EAAE,IAAI,CAAC,GAAK,IAC9B,EAOD,OAAQ,CAAC,EAAGD,IAAM,CAChB,MAAMC,EAAIkB,GAAE,UAAUnB,CAAC,EACvB,GAAI,CAACC,GAAK,CAACgB,EAAE,CAAC,EAAG,OACjBhB,EAAE,OAAO,CAAC,EACd;AACIA,EAAE,OAAS,GAAKiB,GAAE,OAAOlB,CAAC,CAC3B,CACH,EAAGoB,EAAK,CAAC,EAAGpB,IAAMmB,GAAE,IAAI,EAAGnB,CAAC,EAAGqB,GAAK,GAAM,OAAO,GAAK,UAAY,GAAIC,GAAK,GAAMP,GAAE,CAAC,GAAK,EAAE,YAAY,OAAS,UAAY,GAAIQ,GAAK,GAAMP,EAAE,CAAC,GAAK,EAAE,WAAa,GAAK,GAAIQ,EAAK,GAAMF,GAAE,CAAC,EAAI,EAAE,SAAWC,GAAE,CAAC,EAAI,EAAIP,EAAE,CAAC,EAAI,EAAE,cAAgB,OAAO,SAAUS,GAAI,CAAC,KAAMzB,IAAM,OAAO,OAAO,EAAG,GAAGA,CAAC,EAAG0B,GAAM,GAAM,CAClT,GAAI,CAAC,EAAG,OACR,GAAIL,GAAE,CAAC,EACL,OAAOG,EAAG,EAAC,cAAc,CAAC,EAC5B,KAAM,CAAE,QAASxB,CAAG,EAAG,EAAGC,EAAIyB,GAAG1B,CAAC,EAClC,GAAI,CAACC,EAAG,OACR,MAAMC,EAAI,CAAE,GAAG,GACf,OAAO,OAAOA,EAAE,QAASuB,GAAExB,EAAGC,CAAC,CACjC,EAQGyB,EAAI,CAAC,EAAG3B,IAAM,EAAE,cAAcA,CAAC,EAAyC4B,EAAI,CAAC,EAAG5B,IAAM,CACvF,MAAMC,EAAI,iBAAiB,CAAC,EAAGC,EAAIF,EAAE,QAAQ,SAAU,QAAQ,EAAE,QAAQ,WAAY,KAAK,EAAE,YAAW,EACvG,OAAOC,EAAE,iBAAiBC,CAAC,CAC7B,EAkCG2B,GAAM,GAAM,CACb,MAAM7B,EAAI4B,EAAE,EAAGtC,EAAC,EAAGW,EAAI2B,EAAE,EAAGxC,EAAE,EAAGc,EAAID,EAAE,SAAS,IAAI,EAElD,EACE,IAAKE,EAAIH,GAAKA,IAAM,OAAS,WAAWC,CAAC,EAAIC,EAE/C,EAEF,OAAO,OAAO,MAAMC,CAAC,EAEnB,EACEA,CACN,EAAG2B,GAAM,GAAM,CACb,MAAM9B,EAAI4B,EAAE,EAAGtC,EAAC,EAAGW,EAAI2B,EAAE,EAAGzC,EAAE,EAAGe,EAAID,EAAE,SAAS,IAAI,EAElD,EACE,IAAKE,EAAIH,GAAKA,IAAM,OAAS,WAAWC,CAAC,EAAIC,EAE/C,EAEF,OAAO,OAAO,MAAMC,CAAC,EAEnB,EACEA,CACN,EAAG4B,EAAK,CAAC,EAAG/B,IAAM,CAChB,IAAIC,EAAI,EACR,MAAMC,EAAI,IAAI,MAAMb,EAAC,EAAGc,EAAI2B,GAAG,CAAC,EAAGxB,EAAIuB,GAAG,CAAC,EAC3C,GAAI1B,EAAG,CACL,MAAM6B,EAAKC,GAAM,CACrB;AACMA,EAAE,SAAW,IAAMjC,EAAE,MAAM,EAAG,CAACiC,CAAC,CAAC,EAAG,EAAE,oBAAoB5C,GAAG2C,CAAC,EAAG/B,EAAI,EAC3E,EACI,EAAE,iBAAiBZ,GAAG2C,CAAC,EAAG,WAAW,IAAM,CAC/C;AACM/B,GAAK0B,EAAE,EAAGzB,CAAC,CACjB,EAAOC,EAAIG,EAAI,EAAE,CACd,MACCN,EAAE,MAAM,EAAG,CAACE,CAAC,CAAC,CAClB,EAA+FgC,GAAK,CAAC,EAAGlC,IAAM,EAAE,MAAMA,CAAC,EAAGmC,GAAK,GAAM,CAAC,OAAQ,EAAE,EAAE,SAAS,CAAC,EAAI,GAAK,CAAC,QAAS,EAAE,EAAE,SAAS,CAAC,EAAI,GAAK,CAAC,OAAQ,GAAI,KAAM,MAAM,EAAE,SAAS,CAAC,EAAI,KAAO,IAAM,IAAM,CAAC,OAAO,MAAM,CAAC,CAAC,EAAI,CAAC,EAAI,EAAGC,GAAK,GAAM,OAAO,QAAQ,CAAC,EAAGC,GAAM,GAAM,EAAE,YAAW,EAAIC,GAAK,CAAC,EAAGtC,EAAGC,EAAGC,IAAM,CAC5W,MAAMC,EAAI,CAAE,GAAGF,CAAG,EAAEK,EAAI,CAAE,GAAG,EAAE,OAAS,EAAE0B,EAAI,CAAE,GAAGhC,CAAG,EAAEiC,EAAI,CAAE,EAAEM,EAAI,QACpE,OAAOH,GAAE9B,CAAC,EAAE,QAAQ,CAAC,CAACkC,EAAGC,CAAC,IAAM,CAC9B,MAAMC,EAAS,OAAOF,GAAK,UAAYA,EAAE,SAAStC,CAAC,EAAIsC,EAAE,QAAQtC,EAAG,EAAE,EAAE,QAAQ,SAAWyC,GAAMN,GAAGM,CAAC,CAAC,EAEpGH,EAEFP,EAAES,CAAC,EAAIP,GAAEM,CAAC,CACd,CAAG,EAAGL,GAAEjC,CAAC,EAAE,QAAQ,CAAC,CAACqC,EAAGC,CAAC,IAAM,CAC3BtC,EAAEqC,CAAC,EAAIL,GAAEM,CAAC,CACd,CAAG,EAAGL,GAAEpC,CAAC,EAAE,QAAQ,CAAC,CAACwC,EAAGC,CAAC,IAAM,CAC/B;AACID,KAAKrC,EAAI6B,EAAEQ,CAAC,EAAIrC,EAAEqC,CAAC,EAAIA,KAAKP,EAAID,EAAEQ,CAAC,EAAIP,EAAEO,CAAC,EAAIR,EAAEQ,CAAC,EAAIA,IAAMD,EAAI/B,GAAE,EAAG+B,CAAC,EAAIE,CAC1E,CAAA,EAAGT,CACN,EAA2DY,GAAM,GAAM,OAAO,KAAK,CAAC,EAAoEC,EAAK,CAAC,EAAG7C,IAAM,CACrK,MAAMC,EAAI,IAAI,YAAY,EAAG,CAC3B,WAAY,GACZ,QAAS,EACb,CAAG,EACH;AACE,OAAOc,GAAEf,CAAC,GAAKyB,GAAExB,EAAGD,CAAC,EAAGC,CAC1B,EAAG6C,GAAK,CAAE,QAAS,EAAE,EAAIC,GAAM,GAAM,EAAE,aAAcC,EAAK,CAAC,EAAGhD,IAAM,CAClEoC,GAAEpC,CAAC,EAAE,QAAQ,CAAC,CAACC,EAAGC,CAAC,IAAM,CACvB,GAAIA,GAAKmB,GAAEpB,CAAC,GAAKA,EAAE,SAAS,IAAI,EAC9B,EAAE,MAAM,YAAYA,EAAGC,CAAC,MACrB,CACH,MAAMC,EAAI,CAAA,EACVA,EAAEF,CAAC,EAAIC,EAAGuB,GAAE,EAAE,MAAOtB,CAAC,CACvB,CACL,CAAG,CACH,EAAG8C,GAAK,GAAMlC,GAAE,CAAC,GAAK,EAAE,YAAY,OAAS,OAAS,GAAImC,GAAM,GAAM,OAAO,GAAK,UAAY,GAAIC,GAAoB,IAAI,IAAOC,EAAK,CASpI,IAAK,CAAC,EAAGpD,EAAGC,EAAGC,IAAM,CACnB,GAAI,CAACe,EAAE,CAAC,EAAG,OACf;AACI,GAAIf,GAAKA,EAAE,OAAQ,CACvB;AACMiD,GAAE,IAAI,CAAC,GAAKA,GAAE,IAAI,EAAmB,IAAI,GAAK,EAAGA,GAAE,IAAI,CAAC,EAAE,IAAIjD,EAAG,WAAWF,EAAGC,CAAC,CAAC,CAClF,MACCkD,GAAE,IAAI,EAAG,WAAWnD,EAAGC,CAAC,CAAC,CAC5B,EAQD,IAAK,CAAC,EAAGD,IAAM,CACb,GAAI,CAACiB,EAAE,CAAC,EAAG,OAAO,KAClB,MAAMhB,EAAIkD,GAAE,IAAI,CAAC,EACjB,OAAOnD,GAAKC,GAAKgD,GAAEhD,CAAC,EAAIA,EAAE,IAAID,CAAC,GAC/B,KAAOkD,GAAGjD,CAAC,EAAIA,EAAI,IACpB,EAOD,MAAO,CAAC,EAAGD,IAAM,CACf,GAAI,CAACiB,EAAE,CAAC,EAAG,OACX,MAAMhB,EAAIkD,GAAE,IAAI,CAAC,EACjB,GAAInD,GAAKA,EAAE,QAAUiD,GAAEhD,CAAC,EAAG,CACzB,aAAaA,EAAE,IAAID,CAAC,CAAC,EAAGC,EAAE,OAAOD,CAAC,EACxC;AACMC,EAAE,OAAS,GAAKkD,GAAE,OAAO,CAAC,CAC3B,MACC,aAAalD,CAAC,EAAGkD,GAAE,OAAO,CAAC,CAC9B,CACH,EAAgCE,EAAK,CAAC,EAAGrD,KAAOgB,EAAEhB,CAAC,EAAIA,EAAIwB,EAAC,GAAI,iBAAiB,CAAC,EAAG8B,GAAoB,IAAI,IAC7G,SAASC,GAAG,EAAG,CACb,KAAM,CAAE,SAAUvD,EAAG,KAAMC,CAAG,EAAG,EAAGC,EAAIsB,EAAE,IAAI,EAAGrB,EAAI,CAAC,GAAGkD,EAAGxE,GAAI,IAAI,CAAC,EAAE,OACpEoD,GAAM,CAACxB,GAAGwB,EAAG,UAAU,GAAK,CAACzB,GAAEyB,EAAG1E,EAAC,CACxC,EACE,GAAI,CAAC4C,EAAE,OAAQ,OACf,MAAMG,EAAIH,EAAE,CAAC,EAAG6B,EAAI7B,EAAEA,EAAE,OAAS,CAAC,EACpC;AACEF,IAAM,QAAUD,GAAKE,EAAE,gBAAkBI,GAAK0B,EAAE,QAAS,EAAE,eAAc,GAAM,CAAChC,GAAKE,EAAE,gBAAkB8B,IAAM1B,EAAE,MAAK,EAAI,EAAE,eAAgB,GAC9I,CACK,MAACkD,GAAM,GAAMF,GAAE,IAAI,CAAC,IAAM,GAAIG,GAAM,GAAM,CAC7C,MAAMzD,EAAIwD,GAAG,CAAC,GACbxD,EAAII,GAAIL,IAAG,EAAG,UAAWwD,EAAE,EAAGvD,EAAIsD,GAAE,OAAO,CAAC,EAAIA,GAAE,IAAI,EAAG,EAAE,CAC9D,EAAGI,GAAI,CAAC,EAAG1D,IAAM,CACf,KAAM,CAAE,MAAOC,EAAG,OAAQC,EAAG,IAAKC,EAAG,MAAOG,EAAG,OAAQ0B,EAAG,KAAMC,CAAC,EAAK,EAAE,wBACxE,IAAIM,EAAI,EAAGC,EAAI,EACf,GAAIxC,GAAKiB,EAAE,CAAC,EAAG,CACb,KAAM,CAAE,YAAawB,EAAG,aAAcC,CAAC,EAAK,EAC5CH,EAAIE,EAAI,EAAI,KAAK,MAAMxC,CAAC,EAAIwC,EAE1B,EACCD,EAAIE,EAAI,EAAI,KAAK,MAAMxC,CAAC,EAAIwC,EAE7B,CAEH,CACD,MAAO,CACL,MAAOzC,EAAIsC,EACX,OAAQrC,EAAIsC,EACZ,IAAKrC,EAAIqC,EACT,MAAOlC,EAAIiC,EACX,OAAQP,EAAIQ,EACZ,KAAMP,EAAIM,EACV,EAAGN,EAAIM,EACP,EAAGpC,EAAIqC,CACX,CACA,EAAGmB,GAAM,GAAMnC,EAAE,CAAC,EAAE,KAAMoC,GAAK,GAAMpC,EAAE,CAAC,EAAE,gBAGvCqC,GAAM,GAAM7C,EAAE,CAAC,GAAK,EAAE,YAAY,OAAS,cAAgB,GAAI8C,GAAM,GAAM,EAAE,WAAa,OAAS,EAAI7C,EAAE,CAAC,GAAK,EAAE,cACpHD,EAAE,CAAC,GAAK,EAAE,YACV6C,GAAG,CAAC,GAAK,EAAE,MACXD,GAAE,CAAC,EAkBH,IAAIG,GAAI,EAAGC,GAAI,EACV,MAACC,GAAoB,IAAI,IAAOC,GAAK,CAAC,EAAGlE,IAAM,CAClD,IAAIC,EAAID,EAAI+D,GAAIC,GAChB,GAAIhE,EAAG,CACL,MAAME,EAAIgE,GAAG,CAAC,EAAG/D,EAAI8D,GAAE,IAAI/D,CAAC,GAAqB,IAAI,IACrD+D,GAAE,IAAI/D,CAAC,GAAK+D,GAAE,IAAI/D,EAAGC,CAAC,EAAG8C,GAAE9C,CAAC,GAAK,CAACA,EAAE,IAAIH,CAAC,GAAKG,EAAE,IAAIH,EAAGC,CAAC,EAAG8D,IAAK,GAAK9D,EAAIE,EAAE,IAAIH,CAAC,CACpF,KAAS,CACL,MAAME,EAAI,EAAE,IAAM,EAClB+D,GAAE,IAAI/D,CAAC,EAAID,EAAIgE,GAAE,IAAI/D,CAAC,GAAK+D,GAAE,IAAI/D,EAAGD,CAAC,EAAG+D,IAAK,EAC9C,CACD,OAAO/D,CACT,EAAGkE,GAAM,GAAM,CACb,IAAInE,EACJ,OAAO,EAAIuB,GAAE,CAAC,EAAI,EAAE,YAAcP,EAAE,CAAC,GAAKhB,EAAI,GAAK,KAAO,OAAS,EAAE,gBAAkB,KAAO,OAASA,EAAE,YAAc,EAAI,MAC7H,EAAGoE,GAAM,GAAM,MAAM,QAAQ,CAAC,GAAK,GAAmLC,GAAM,GAAM,CAChO,GAAI,CAACrD,EAAE,CAAC,EAAG,MAAO,GAClB,KAAM,CAAE,IAAKhB,EAAG,OAAQC,CAAG,EAAGyD,GAAE,CAAC,EAAG,CAAE,aAAcxD,CAAG,EAAG0D,GAAE,CAAC,EAC7D,OAAO5D,GAAKE,GAAKD,GAAK,CACxB,EAI0CqE,GAAM,GAAM,OAAO,GAAK,YAAc,GAQ0FC,GAAM,GAAMxD,GAAE,CAAC,GAAK,EAAE,YAAY,OAAS,YAAc,GAAIyD,GAAM,GAAMZ,GAAE,CAAC,EAAE,MAAQ,MAAqEa,GAAM,GAAMzD,EAAE,CAAC,GAAK,CAAC,QAAS,KAAM,IAAI,EAAE,SAAS,EAAE,QAAQ,GAAK,GAAI0D,EAAK,CAAC,EAAG1E,IAAM,EAAI,EAAE,QAAQA,CAAC,GACza0E,EAAG,EAAE,cAAc,KAAM1E,CAAC,EAAI,KAAM2E,EAAK,CAAC,EAAG3E,IAAMiB,EAAE,CAAC,EAAI,GAAKD,EAAEhB,CAAC,EAAIA,EAAIwB,EAAG,GAAE,cAAc,CAAC,EAAGoD,GAAK,CAAC,EAAG5E,KAAOgB,EAAEhB,CAAC,EAAIA,EAAIwB,EAAG,GAAE,qBAAqB,CAAC,EAA0FqD,GAAK,CAAC,EAAG7E,KAAOA,GAAKgB,EAAEhB,CAAC,EAAIA,EAAIwB,EAAC,GAAI,uBAAuB,CAAC,EAAGsD,GAAK,CAAC,EAAG9E,IAAM,EAAE,QAAQA,CAAC,ECzdrUA,GAAI,CAAE,EAAEyC,GAAK,GAAM,CACvB,KAAM,CAAE,KAAMnC,EAAG,cAAeU,CAAC,EAAK,EACtC,CAAC,GAAGhB,GAAEM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAGH,CAAC,IAAM,CAChC,oCACIa,IAAM,GAAK,CAAC,GAAGb,CAAC,EAAE,QAAQ,CAAC,CAACD,EAAG8B,CAAC,IAAM,CACpC9B,EAAE,MAAM,EAAG,CAAC,CAAC,CAAC,EAAG,OAAO8B,GAAK,UAAYA,EAAE,MAAQQ,EAAE,EAAGlC,EAAGJ,EAAG8B,CAAC,CACrE,CAAK,CACL,CAAG,CACH,EAAGd,EAAI,CAAC,EAAGZ,EAAGU,EAAG,IAAM,CACvB,oCACEhB,GAAEM,CAAC,IAAMN,GAAEM,CAAC,EAAoB,IAAI,KACpC,MAAMH,EAAIH,GAAEM,CAAC,EACf,oCACEH,EAAE,IAAI,CAAC,GAAKA,EAAE,IAAI,EAAmB,IAAI,GAAK,EAC9C,MAAMD,EAAIC,EAAE,IAAI,CAAC,EAAG,CAAE,KAAM6B,CAAG,EAAG9B,EAClCA,EAAE,IAAIc,EAAG,CAAC,EACZ,oCACEgB,GAAK,EAAE,iBAAiB1B,EAAGmC,GAAG,CAAC,CACjC,EAAGD,EAAI,CAAC,EAAGlC,EAAGU,EAAG,IAAM,CACrB,MAAMb,EAAIH,GAAEM,CAAC,EAAGJ,EAAIC,GAAKA,EAAE,IAAI,CAAC,EAAG6B,EAAI9B,GAAKA,EAAE,IAAIc,CAAC,EAAGQ,EAAIQ,IAAM,OAASA,EAAI,EAC/E,oCACE9B,GAAKA,EAAE,IAAIc,CAAC,GAAKd,EAAE,OAAOc,CAAC,EAC7B,oCACEb,IAAM,CAACD,GAAK,CAACA,EAAE,OAASC,EAAE,OAAO,CAAC,EACpC,qCACG,CAACA,GAAK,CAACA,EAAE,OAAS,OAAOH,GAAEM,CAAC,EAC/B,qCACG,CAACJ,GAAK,CAACA,EAAE,OAAS,EAAE,oBACnBI,EACAmC,GACAjB,CACJ,CACA,EC7BMuD,EAAY,OCAZC,EAAY,OCAZC,GAAgB,kBCFhBC,GAAc,QCAdC,GAAiB,oBCCjBC,GAAUC,GCMhB,MAAqBC,EAAc,CAQjC,YAAYC,EAA8BC,EAAsB,CAoDhEC,EAAA,6BAAwB,IAAM,CAAA,GAnDxB,IAAAC,EAEA,GAAA,CACE,GAAAC,EAAcJ,CAAM,EACZG,EAAAH,UACDK,GAASL,CAAM,EAAG,CAC3BG,EAAUG,EAA2BN,CAAM,EAAA;AAE3C,GAAI,CAACG,EAAS,MAAM,MAAM,IAAIH,CAAM,4BAA4B,CAAA,KAEhE,OAAM,MAAM,gDAAgD,QAEvDvF,EAAG,CACV,MAAM,MAAM,GAAG,KAAK,IAAI,WAAYA,EAAY,OAAO,EAAE,CAC3D,CAEA,MAAM8F,EAAeC,GAAK,IAAiBL,EAAS,KAAK,IAAI,EAAA;AAEzDI,GAGFA,EAAa,sBAAsB,EAGrC,KAAK,QAAUJ,EACf,KAAK,QACH,KAAK,UAAYM,GAAW,KAAK,QAAQ,EAAE,OACvCC,GAAiBP,EAAS,KAAK,SAAUF,GAAU,GAAI,IAAI,EAE3D,CAAC,EAEPO,GAAK,IAAIL,EAAS,KAAK,KAAM,IAAI,CACnC,CAGA,IAAI,SAAU,CACL,OAAAN,EACT,CAGA,IAAI,MAAO,CACF,MAAA,eACT,CAGA,IAAI,UAAW,CACb,MAAO,EACT,CASA,SAAU,CACRW,GAAK,OAAoB,KAAK,QAAS,KAAK,IAAI,EACrCC,GAAA,IAAI,EAAE,QAAgBE,GAAA,CAC/B,OAAO,KAAKA,CAAI,CAAA,CACjB,CACH,CACF,CCrDA,MAAMC,GAAgB,IAAIjB,EAAW,GAC/BkB,GAAuB,IAAInB,EAAa,KAAKC,EAAW,KAMxDmB,GAAoBX,GAAyBY,EAAmBZ,EAASP,EAAc,EAKvFoB,GAAqBb,GAAyB,IAAIc,GAAMd,CAAO,EAI/De,GAAkBC,EAAqD,YAAYxB,EAAW,EAAE,EAChGyB,GAAmBD,EAAqD,aAAaxB,EAAW,EAAE,EASlG0B,GAAsBC,GAAgB,CACpC,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACpBC,EAAcpB,EAASiB,EAAgB,EAEvCE,EAAK,sBAAsB,EAC3BA,EAAK,QAAQ,EACbnB,EAAQ,OAAO,CACjB,EAKA,MAAqBc,WAAclB,EAAc,CAM/C,YAAYC,EAA8B,CACxC,MAAMA,CAAM,EAHdE,EAAA,gBAwBAA,EAAA,aAAQ,IAAM,CACN,KAAA,CAAE,QAAAC,CAAY,EAAA,KAAA;AAGhBA,GAAWqB,EAASrB,EAASV,CAAS,IACxC8B,EAAcpB,EAASe,EAAe,EAEjCA,GAAgB,mBACnBO,EAAYtB,EAASV,CAAS,EAE1B+B,EAASrB,EAASX,CAAS,EAC7BkC,EAAqBvB,EAAS,IAAMkB,GAAmB,IAAI,CAAC,KACpC,IAAI,GAElC,GAOFnB,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,QAAAC,EAAS,MAAAC,CAAU,EAAA,KAAA;AAEvBD,GAASH,EAAOG,EAASE,EAAiBD,CAAK,CAAA,GA3CnD,KAAK,QAAU1B,EAAcO,GAAsB,KAAK,OAAO,EAG/D,KAAK,sBAAsB,EAAI,CACjC,CAGA,IAAI,MAAO,CACF,OAAAjB,EACT,CAsCA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CA5DEM,EADmBe,GACZ,WAAWL,IAClBV,EAFmBe,GAEZ,OAAOD,IACdd,EAHmBe,GAGZ,cAAcH,IChEvB,MAAMoB,EAAc,SCAdC,GAAe,iBCFfC,GAAe,SCAfC,GAAkB,SCuBlBC,GAAiB,IAAIH,EAAY,KAAKC,EAAY,KAMlDG,GAAqBpC,GAAyBY,EAAoBZ,EAASkC,EAAe,EAG1FG,GAAsBrC,GAAyB,IAAIsC,GAAOtC,CAAO,EAKvE,MAAqBsC,WAAe1C,EAAc,CAUhD,YAAYC,EAA8B,CACxC,MAAMA,CAAM,EANdE,EAAA,gBAAW,IAiCXA,EAAA,cAAU,GAAc,CAClB,KAAK,iBAEH,KAAA,CAAE,QAAAC,EAAS,SAAAuC,CAAa,EAAA,KAC1B,CAAClB,EAASrB,EAAS,UAAU,GAAK,CAACwC,GAAaxC,EAAS,UAAU,KACtDuC,EAAWjB,EAAcmB,GACjCzC,EAAS+B,CAAW,EAC3BW,EAAa1C,EAAS2C,GAAaJ,EAAW,QAAU,MAAM,EACzD,KAAA,SAAWlB,EAASrB,EAAS+B,CAAW,EAC/C,GAUFhC,EAAA,6BAAyByB,GAAkB,EAC1BA,EAAME,EAAcC,GAC5B,KAAK,QAASG,EAAiB,KAAK,MAAM,CAAA,GA7C3C,KAAA,CAAE,QAAA9B,CAAY,EAAA,KAGf,KAAA,SAAWqB,EAASrB,EAAS+B,CAAW,EAC7CW,EAAa1C,EAAS2C,GAAa,OAAO,CAAC,CAAC,KAAK,QAAQ,CAAC,EAG1D,KAAK,sBAAsB,EAAI,CACjC,CAKA,IAAI,MAAO,CACF,OAAAT,EACT,CAkCA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CAlEEnC,EADmBuC,GACZ,WAAWH,IAClBpC,EAFmBuC,GAEZ,OAAOD,IACdtC,EAHmBuC,GAGZ,cAAcF,ICtCvB,MAAMQ,GAAe,iBCFfC,GAAiB,WCAjBC,GAAoB,WCEpBC,GAAe,iBCAfC,GAAkB,oBCUlBC,EAAoBjD,GAAyB,CACjD,MAAMkD,EAAa,CAACN,GAAcG,GAAcC,GAAiB,MAAM,EACjEG,EAAMC,EAAYpD,CAAO,EAExB,OAAAkD,EACJ,IAAWG,GAAA,CACJ,MAAAC,EAAWd,GAAaxC,EAASqD,CAAG,EAC1C,OAAIC,EACKD,IAAQN,GAAeQ,EAAQvD,EAASsD,CAAQ,EAAInD,EAAcmD,EAAUH,CAAG,EAEjF,IAAA,CACR,EACA,OAAYvF,GAAAA,CAAC,EAAE,CAAC,CACrB,EC+BM4F,GAAmB,kBAAkBX,EAAc,KACnDY,EAAe,GAAGZ,EAAc,QAChCa,GAAgB,mBAChBC,GAAc,gBACdC,GAAc,SAEdC,GAAoC,CACxC,MAAO,QACP,SAAU,GACV,MAAO,GACP,SAAU,GACZ,EAMMC,GAAuB9D,GAAyBY,EAAsBZ,EAAS8C,EAAiB,EAKhGiB,GAAwB/D,GAAyB,IAAIgE,GAAShE,CAAO,EAE3E,IAAIiE,GAAS,EACTC,GAAW,EACXC,GAAO,EAIX,MAAMC,GAAqBpD,EAA0D,YAAY6B,EAAc,EAAE,EAC3GwB,GAAoBrD,EAA0D,WAAW6B,EAAc,EAAE,EASzGyB,GAAgCnD,GAAmB,CACvD,KAAM,CAAE,MAAAoD,EAAO,UAAAC,EAAW,QAAAxE,EAAS,OAAAyE,EAAQ,QAAAC,CAAY,EAAAvD,EAAA;AAGvD,GAAIA,EAAK,YAAa,CACd,MAAAwD,EAAaC,GAAezD,CAAI,EAChC0D,EAAcL,IAAc,OAAS,OAAS,OAC9CM,EAAiBN,IAAc,OAAS,QAAU,MAE/C/B,EAAAgC,EAAOF,CAAK,EAAGxC,CAAW,EACnCT,EAAYmD,EAAOF,CAAK,EAAG,GAAGd,CAAY,IAAIoB,CAAW,EAAE,EAC3DvD,EAAYmD,EAAOF,CAAK,EAAG,GAAGd,CAAY,IAAIqB,CAAc,EAAE,EAElDxD,EAAAmD,EAAOE,CAAU,EAAG5C,CAAW,EAC3CT,EAAYmD,EAAOE,CAAU,EAAG,GAAGlB,CAAY,IAAIqB,CAAc,EAAE,EAEnE1D,EAAcpB,EAASqE,EAAiB,EAClCU,EAAA,MAAM/E,EAAS2D,EAAW,EAG5BxC,EAAK,OAAS,CAACiC,EAAYpD,CAAO,EAAE,QAAU0E,EAAQ,UAAY,CAACvD,EAAK,UAC1EA,EAAK,MAAM,CAEf,CACF,EAMA,SAAS6D,IAAwC,CACzC,MAAA7D,EAAO2C,GAAoB,IAAI,EAAA;AAEjC3C,GAAQ,CAACA,EAAK,UAAY,CAAC4D,EAAM,IAAI,KAAMnB,EAAW,GACxDnB,EAAS,KAAMmB,EAAW,CAE9B,CAMA,SAASqB,IAAyC,CAC1C,MAAA9D,EAAO2C,GAAoB,IAAI,EAAA;AAEjC3C,GAAQA,EAAK,UAAY,CAAC4D,EAAM,IAAI,KAAMnB,EAAW,GACvDzC,EAAK,MAAM,CAEf,CAOA,SAAS+D,GAA4C5K,EAAe,CAClEA,EAAE,eAAe,EACjB,MAAM0F,EAAWuD,EAAQ,KAAMC,EAAgB,GAAKP,EAAiB,IAAI,EACnE9B,EAAO2C,GAAoB9D,CAAO,EAAA;AAGpC,GAAAmB,GAAQ,CAACA,EAAK,YAAa,CAC7B,MAAMgE,EAAW,EACf3C,GAAa,KAAMkB,EAAa,GAEhC,GAAA;AAKA,MACA,CAACrC,EAAS,KAAMU,CAAW,GAC3B,CAAC,OAAO,MAAMoD,CAAQ,GAGtBhE,EAAK,GAAGgE,CAAQ,CAEpB,CACF,CAOA,SAASC,GAA2C9K,EAAe,CACjEA,EAAE,eAAe,EACjB,MAAM0F,EAAUuD,EAAQ,KAAMC,EAAgB,GAAMP,EAAiB,IAAI,EACnE9B,EAAO2C,GAAoB9D,CAAO,EAAA;AAGpC,GAAAmB,GAAQ,CAACA,EAAK,YAAa,CACvB,MAAA0D,EAAcrC,GAAa,KAAMmB,EAAW,EAAA;AAG9CkB,IAAgB,OAClB1D,EAAK,KAAK,EACD0D,IAAgB,QACzB1D,EAAK,KAAK,CAEd,CACF,CAOA,MAAMkE,GAAqB,CAAC,CAAE,KAAAC,EAAM,OAAAzF,KAA+C,CAC3E,MAAAsD,EAAMC,EAAYvD,CAAM,EACxB,CAACG,CAAO,EAAI,CAAC,GAAGuF,EAAiB/B,GAAkBL,CAAG,CAAC,EAAE,OAAYvF,GAAA4H,GAAuB5H,CAAC,CAAC,EAC9FuD,EAAO2C,GAAoB9D,CAAO,EAAA;AAGpC,GAAAmB,GAAQ,CAACA,EAAK,aAAe,CAAC,kBAAkB,KAAKtB,EAAO,QAAQ,EAAG,CACnE,MAAA4F,EAAMC,GAAM1F,CAAO,EACnB2F,EAAgBF,EAAsBG,GAAhBC,GACtBC,EAAgBL,EAAqBI,GAAfD,GAAe;AAGvCN,IAASQ,EAAc3E,EAAK,KAAK,EAC5BmE,IAASK,GAAcxE,EAAK,KAAK,CAC5C,CACF,EASA,SAAS4E,GAAuCzL,EAA2B,CACnE,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACb6G,EAAO2C,GAAoB,IAAI,EAAA;AAInC3C,GACAA,EAAK,UACHA,EAAK,WAAa,CAACA,EAAK,UAAU,SAAStB,CAAc,GAAM,CAACsB,EAAK,SAAS,SAAStB,CAAqB,KAE9GvF,EAAE,yBAAyB,EAC3BA,EAAE,gBAAgB,EAClBA,EAAE,eAAe,EAErB,CASA,SAAS0L,GAA8C1L,EAAiB,CAChE,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACb6G,EAAO2C,GAAoB,IAAI,EAAA;AAGrC,GAAI3C,GAAQ,CAACA,EAAK,aAAe,CAACA,EAAK,QAAS,CAExC,KAAA,CAAE,SAAA8E,EAAU,WAAAC,CAAe,EAAA/E,EAAA;AAEjC,GAAI,CAAC,CAAC,GAAG8E,EAAU,GAAGC,CAAU,EAAE,MAAMC,GAAMA,IAAOtG,GAAUsG,EAAG,SAAStG,CAAc,CAAC,EAAG,CAC3FoE,GAAS3J,EAAE,MAAA;AAGP,KAAK,SAASuF,CAAc,IAC9BsB,EAAK,QAAU,GACfiF,GAA4BjF,EAAM,EAAI,EAE1C,CACF,CACF,CAOA,MAAMkF,GAA8B/L,GAAoB,CACtD4J,GAAW5J,EAAE,KACf,EAOMgM,GAA4BhM,GAAoB,OAC9C,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACb6I,EAAMC,EAAYvD,CAAc,EAChCsB,EAAO,CAAC,GAAGoE,EAAiB/B,GAAkBL,CAAG,CAAC,EACrD,IAAIvI,GAAKkJ,GAAoBlJ,CAAC,CAAa,EAC3C,KAAK,GAAK,EAAE,OAAO,EAAA;AAItB,GAAIuG,EAAM,CACF,KAAA,CAAE,QAAAnB,EAAS,MAAAuE,CAAU,EAAApD,EACrBsE,EAAMC,GAAM1F,CAAO,EAMzB,GALAmE,GAAO7J,EAAE,MAET6G,EAAK,QAAU,GACfiF,GAA4BjF,CAAI,EAG9B,GAACoF,EAAApD,EAAI,aAAA,IAAJ,MAAAoD,EAAoB,WAAW,SAChCvG,EAAQ,SAASH,CAAqB,GACtC,KAAK,IAAIoE,GAASE,EAAI,EAAI,IAC1B,CAAA;AAGID,GAAWD,GACb9C,EAAK,GAAGoD,GAASkB,EAAM,GAAK,EAAE,EACrBvB,GAAWD,IACpB9C,EAAK,GAAGoD,GAASkB,EAAM,EAAI,GAAG,CAElC,CAGSxB,GAAA,EACEC,GAAA,EACJC,GAAA,CACT,CACF,EAUMqC,GAA4B,CAACrF,EAAgBoD,IAAkB,CAC7D,KAAA,CAAE,WAAA2B,CAAe,EAAA/E,EACtB,CAAA,GAAG+E,CAAU,EAAE,WAAa5E,EAAY1D,EAAGmE,CAAW,CAAC,EAAA;AAGpDZ,EAAK,WAAWoD,CAAK,KAAY2B,EAAW3B,CAAK,EAAGxC,CAAW,CACrE,EAQMqE,GAA8B,CAACjF,EAAgBK,IAAkB,CAC/D,KAAA,CAAE,QAAAxB,CAAY,EAAAmB,EACdM,EAASD,EAAME,EAAcC,EACnCF,EAAO2B,EAAYpD,CAAO,EAAGyG,GAAkBJ,GAA4BK,EAAc,EACzFjF,EAAO2B,EAAYpD,CAAO,EAAG2G,GAAgBL,GAA0BI,EAAc,CACvF,EAQM9B,GAAkBzD,GAAmB,CACnC,KAAA,CAAE,OAAAsD,EAAQ,QAAAzE,CAAY,EAAAmB,EACtBwD,EAAaxE,EAAc,IAAIsD,CAAY,IAAI1B,CAAW,GAAI/B,CAAO,EACpE,OAAAC,EAAc0E,CAAU,EAAI,CAAC,GAAGF,CAAM,EAAE,QAAQE,CAAU,EAAI,EACvE,EAKA,MAAqBX,WAAiBpE,EAAc,CAiBlD,YAAYC,EAA8BC,EAAmC,CAC3E,MAAMD,EAAQC,CAAM,EA+PtBC,EAAA,6BAAyByB,GAAkB,CACzC,KAAM,CAAE,QAAAxB,EAAS,QAAA0E,EAAS,OAAAD,EAAQ,SAAAwB,EAAU,WAAAC,CAAe,EAAA,KACrD,CAAE,MAAAU,EAAO,MAAAC,EAAO,SAAAC,EAAU,SAAAC,GAAarC,EACvCjD,EAASD,EAAME,EAAcC,EAE/BkF,GAASC,IACJrF,EAAAzB,EAASgH,GAAiBhC,EAAoB,EAC9CvD,EAAAzB,EAASiH,GAAiBhC,EAAqB,GAGpD2B,GAASnC,EAAO,OAAS,IACpBhD,EAAAzB,EAASkH,GAAkBlB,GAA4BU,EAAc,EAC5EjF,EAAOzB,EAASmH,GAAiBpB,GAAqB,CAAE,QAAS,GAAO,EACxEtE,EAAOzB,EAASoH,GAAgBrB,GAAqB,CAAE,QAAS,GAAO,GACzE;AAGIE,EAAS,QACXA,EAAS,QAAiBoB,GAAA,CAAA;AAEpBA,GAAO5F,EAAO4F,EAAOvF,EAAiBsD,EAAuB,CAAA,CAClE,EACH;AAGIc,EAAW,QACbA,EAAW,QAAqBoB,GAAA,CACvB7F,EAAA6F,EAAWxF,EAAiBoD,EAAwB,CAAA,CAC5D,EAGC6B,GACFtF,EAAO2B,EAAYpD,CAAO,EAAGuH,GAAclC,EAAkB,CAC/D,GA7RM,KAAA,CAAE,QAAArF,CAAY,EAAA,KAGpB,KAAK,UAAY0F,GAAM1F,CAAO,EAAI,QAAU,OAC5C,KAAK,QAAU,GAIV,KAAA,OAASwH,GAAuB/D,EAAczD,CAAO,EACpD,KAAA,CAAE,OAAAyE,CAAW,EAAA,KAIf,GAAAA,EAAO,QAAU,EAAG,CAChB,MAAAgD,EAAc7C,GAAe,IAAI,EAEjC8C,EAAiB,CAAC,GAAGjD,CAAM,EAAE,KAAKhK,GAAKkN,GAAQlN,EAAG,IAAIgJ,CAAY,UAAUA,CAAY,OAAO,CAAC,EACtG,KAAK,MAAQgE,EAGP,MAAAtE,EAAMC,EAAYpD,CAAO,EAE/B,KAAK,SAAW,CACd,GAAGuF,EAAiB,IAAI5B,EAAW,IAAK3D,CAAO,EAC/C,GAAGuF,EAAiB,IAAI5B,EAAW,KAAKf,EAAY,MAAM5C,EAAQ,EAAE,KAAMmD,CAAG,CAAA,EAC7E,OAAO,CAACvI,EAAGU,EAAGsM,IAAOtM,IAAMsM,EAAG,QAAQhN,CAAC,CAAC,EAE1C,KAAK,UAAYuF,EAAc,IAAI0C,EAAc,cAAe7C,CAAO,EAGvE,KAAK,WAAa,CAChB,GAAI,KAAK,UACLuF,EAAiB,IAAI7B,EAAa,IAAK,KAAK,SAAS,EAErD,CAAC,EACL,GAAG6B,EAAiB,IAAI7B,EAAa,KAAKd,EAAY,MAAM5C,EAAQ,EAAE,KAAMmD,CAAG,CAAA,EAC/E,OAAO,CAACvI,EAAGU,EAAGsM,IAAOtM,IAAMsM,EAAG,QAAQhN,CAAC,CAAC,EAGpC,KAAA,CAAE,QAAA8J,CAAY,EAAA,KAGpB,KAAK,QAAQ,SAAWA,EAAQ,WAAa,GAAOb,GAAiB,SAAWa,EAAQ,SAAA;AAIpFgD,EACF,KAAK,MAAQ,CAAC,GAAGjD,CAAM,EAAE,QAAQiD,CAAc,EACtCD,EAAc,IACvB,KAAK,MAAQ,EACJhF,EAAAgC,EAAO,CAAC,EAAG1C,CAAW,EAC3B,KAAK,WAAW,QAAQyE,GAA0B,KAAM,CAAC,GAC/D;AAGI,KAAK,WAAW,QAAkCA,GAAA,KAAM,KAAK,KAAK,EAGtE,KAAK,sBAAsB,EAAI,EAG3B9B,EAAQ,UAAU,KAAK,MAAM,CACnC,CACF,CAKA,IAAI,MAAO,CACF,OAAA5B,EACT,CAIA,IAAI,UAAW,CACN,OAAAe,EACT,CAKA,IAAI,UAAW,CACN,OAAAxC,EAAS,KAAK,QAASuC,EAAW,CAC3C,CAKA,IAAI,aAAc,CACT,OAAAzD,EAAc,IAAIsD,CAAY,UAAUA,CAAY,QAAS,KAAK,OAAO,IAAM,IACxF,CAKA,OAAQ,CACN,KAAM,CAAE,QAAAzD,EAAS,QAAA0E,EAAS,SAAAmD,EAAU,MAAAtD,GAAU,KAExCQ,EAAA,MAAM/E,EAAS6C,EAAc,EAC/BgF,IACI9C,EAAA,MAAM/E,EAAS4D,EAAW,EAChCtC,EAAYtB,EAAS4D,EAAW,GAG5BmB,EAAA,IACJ/E,EACA,IAAM,CAAA;AAIA,KAAK,SAAW,CAAC,KAAK,UAAY,CAAC,KAAK,SAAWwF,GAAuBxF,CAAO,GAC9E,KAAA,GAAGuE,EAAQ,CAAC,CAErB,EACAG,EAAQ,SACR7B,EAAA,CAEJ,CAGA,OAAQ,CACA,KAAA,CAAE,QAAA7C,EAAS,QAAA0E,CAAY,EAAA,KAAA;AAEzB,CAAC,KAAK,UAAYA,EAAQ,WAC5BjC,EAASzC,EAAS4D,EAAW,EACvBmB,EAAA,IACJ/E,EACA,IAAM,CAEN,EACA,EACA4D,EAAA,EAGN,CAGA,MAAO,CAAA;AAEA,KAAK,aACH,KAAA,GAAG,KAAK,MAAQ,CAAC,CAE1B,CAGA,MAAO,CAAA;AAEA,KAAK,aACH,KAAA,GAAG,KAAK,MAAQ,CAAC,CAE1B,CAOA,GAAGkE,EAAa,CACd,KAAM,CAAE,QAAA9H,EAAS,OAAAyE,EAAQ,QAAAC,CAAA,EAAY,KAC/BC,EAAaC,GAAe,IAAI,EAChCa,EAAMC,GAAM1F,CAAO,EACzB,IAAI+H,EAAOD,EAKP,GAAA,CAAC,KAAK,aAAenD,IAAeoD,GAAQ,CAAChD,EAAM,IAAI/E,EAAS2D,EAAW,EAAG,CAAA;AAG5EgB,EAAaoD,GAASpD,IAAe,GAAKoD,IAAStD,EAAO,OAAS,EAChE,KAAA,UAAYgB,EAAM,QAAU,QACxBd,EAAaoD,GAASpD,IAAeF,EAAO,OAAS,GAAKsD,IAAS,KACvE,KAAA,UAAYtC,EAAM,OAAS,SAE5B,KAAA,CAAE,UAAAjB,CAAc,EAAA,KAGlBuD,EAAO,EACTA,EAAOtD,EAAO,OAAS,EACdsD,GAAQtD,EAAO,SACjBsD,EAAA,GAIH,MAAAlD,EAAcL,IAAc,OAAS,OAAS,OAC9CM,EAAiBN,IAAc,OAAS,QAAU,MAElDwD,EAAkB,CACtB,cAAevD,EAAOsD,CAAI,EAC1B,KAAMpD,EACN,GAAIoD,EACJ,UAAAvD,CAAA,EAIFyD,GAAa7D,GAAoB4D,CAAe,EAChDC,GAAa5D,GAAmB2D,CAAe,EAG/C5G,EAAcpB,EAASoE,EAAkB,EACpCA,GAAmB,mBAEtB,KAAK,MAAQ2D,EACbvB,GAA0B,KAAMuB,CAAI,EAEhCG,GAA6BzD,EAAOsD,CAAI,CAAC,GAAK1G,EAASrB,EAAS,OAAO,EACnE+E,EAAA,IACJ/E,EACA,IAAM,CACJyC,EAASgC,EAAOsD,CAAI,EAAG,GAAGtE,CAAY,IAAIoB,CAAW,EAAE,EAChDsD,GAAA1D,EAAOsD,CAAI,CAAC,EACnBtF,EAASgC,EAAOsD,CAAI,EAAG,GAAGtE,CAAY,IAAIqB,CAAc,EAAE,EAC1DrC,EAASgC,EAAOE,CAAU,EAAG,GAAGlB,CAAY,IAAIqB,CAAc,EAAE,EAGhEvD,EACEkD,EAAOsD,CAAI,EACX,IAAM,KAAK,QAAU,KAAK,OAAO,QAAUzD,GAA6B,IAAI,CAAA,CAEhF,EACA,EACAX,EAAA,GAGOlB,EAAAgC,EAAOsD,CAAI,EAAGhG,CAAW,EACtBT,EAAAmD,EAAOE,CAAU,EAAG5C,CAAW,EAErCgD,EAAA,IACJ/E,EACA,IAAM,CACE+E,EAAA,MAAM/E,EAAS2D,EAAW,EAAA;AAG5B3D,GAAW0E,EAAQ,UAAY,CAAC,KAAK,UACvC,KAAK,MAAM,EAGbtD,EAAcpB,EAASqE,EAAiB,CAC1C,EACA,EACAV,EAAA,GAIR,CACF,CA4CA,SAAU,CACF,KAAA,CAAE,YAAAyE,CAAgB,EAAA,KAElBC,EAAQ,CACZ,GAAG,KACH,YAAAD,CAAA,EAEF,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,EAAA;AAGVC,EAAM,aACR9G,EAAqB8G,EAAM,OAAOA,EAAM,KAAK,EAAG,IAAM,CACpD/D,GAA6B+D,CAAK,CAAA,CACnC,CAEL,CACF,CAtUEtI,EADmBiE,GACZ,WAAWR,IAClBzD,EAFmBiE,GAEZ,OAAOD,IACdhE,EAHmBiE,GAGZ,cAAcF,IChXvB,MAAMwE,GAAkB,aCHlBC,EAAiB,WCAjBC,GAAoB,WCsCpBC,GAAmB,IAAIF,CAAc,GACrCG,GAAyB,IAAI1G,EAAY,KAAKuG,CAAc,KAC5DI,GAAmB,CAAE,OAAQ,MAM7BC,GAAuB5I,GAAyBY,EAAsBZ,EAASwI,EAAiB,EAKhGK,GAAwB7I,GAAyB,IAAI8I,GAAS9I,CAAO,EAIrE+I,GAAoB/H,EAAwD,WAAWuH,CAAc,EAAE,EACvGS,GAAqBhI,EAAwD,YAAYuH,CAAc,EAAE,EACzGU,GAAoBjI,EAAwD,WAAWuH,CAAc,EAAE,EACvGW,GAAsBlI,EAAwD,aAAauH,CAAc,EAAE,EAS3GY,GAAkBhI,GAAmB,CACzC,KAAM,CAAE,QAAAnB,EAAS,OAAAoJ,EAAQ,SAAAC,CAAA,EAAalI,EAEtCC,EAAcpB,EAAS+I,EAAiB,EACnCA,GAAkB,mBACfhE,EAAA,IAAI/E,EAASsJ,GAAM,EAAE,EACvBF,GAAQrE,EAAM,IAAIqE,EAAQE,GAAM,EAAE,EAEtC7G,EAASzC,EAASsI,EAAe,EACjChH,EAAYtB,EAASuI,CAAc,EAEnCgB,EAAgBvJ,EAAS,CAAE,OAAQ,GAAGA,EAAQ,YAAY,KAAM,EAEhEuB,EAAqBvB,EAAS,IAAM,CAClC+E,EAAM,MAAM/E,CAAO,EACfoJ,GAAcrE,EAAA,MAAMqE,CAAM,EAE9BC,EAAS,QAAeG,GAAA9G,EAAa8G,EAAKC,GAAc,MAAM,CAAC,EAE/DnI,EAAYtB,EAASsI,EAAe,EACpC7F,EAASzC,EAASuI,CAAc,EAChC9F,EAASzC,EAASV,CAAS,EAE3BiK,EAAgBvJ,EAAS,CAAE,OAAQ,EAAI,CAAA,EAEvCoB,EAAcpB,EAASgJ,EAAkB,CAAA,CAC1C,EAEL,EAOMU,GAAmBvI,GAAmB,CAC1C,KAAM,CAAE,QAAAnB,EAAS,OAAAoJ,EAAQ,SAAAC,CAAA,EAAalI,EAEtCC,EAAcpB,EAASiJ,EAAiB,EAEnCA,GAAkB,mBACflE,EAAA,IAAI/E,EAASsJ,GAAM,EAAE,EACvBF,GAAQrE,EAAM,IAAIqE,EAAQE,GAAM,EAAE,EAEtCC,EAAgBvJ,EAAS,CAAE,OAAQ,GAAGA,EAAQ,YAAY,KAAM,EAEhEsB,EAAYtB,EAASuI,CAAc,EACnCjH,EAAYtB,EAASV,CAAS,EAC9BmD,EAASzC,EAASsI,EAAe,EAEjCH,GAAOnI,CAAO,EACduJ,EAAgBvJ,EAAS,CAAE,OAAQ,KAAO,CAAA,EAE1CuB,EAAqBvB,EAAS,IAAM,CAClC+E,EAAM,MAAM/E,CAAO,EAAA;AAEfoJ,GAAcrE,EAAA,MAAMqE,CAAM,EAE9BC,EAAS,QAAeG,GAAA9G,EAAa8G,EAAKC,GAAc,OAAO,CAAC,EAEhEnI,EAAYtB,EAASsI,EAAe,EACpC7F,EAASzC,EAASuI,CAAc,EAEhCgB,EAAgBvJ,EAAS,CAAE,OAAQ,EAAI,CAAA,EAEvCoB,EAAcpB,EAASkJ,EAAmB,CAAA,CAC3C,EAEL,EASMS,GAAwBrP,GAAkB,CACxC,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACbsP,EAAU/J,GAAU0D,EAAQ1D,EAAuB6I,EAAsB,EACzE1I,EAAU4J,GAAW3G,EAAiB2G,CAAO,EAC7CzI,EAAOnB,GAAW4I,GAAoB5I,CAAO,EAAA;AAE/CmB,KAAW,SAGXyI,GAAWA,EAAQ,UAAY,OAAO,gBAC5C,EAMA,MAAqBd,WAAiBlJ,EAAc,CAYlD,YAAYC,EAA8BC,EAAmC,CAC3E,MAAMD,EAAQC,CAAM,EAwFtBC,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,SAAA0H,CAAa,EAAA,KAAA;AAGjBA,EAAS,QACXA,EAAS,QAAeG,GAAA/H,EAAO+H,EAAK1H,EAAiB6H,EAAoB,CAAC,CAC5E,GA5FM,KAAA,CAAE,QAAA3J,EAAS,QAAA0E,CAAY,EAAA,KACvBvB,EAAMC,EAAYpD,CAAO,EAG/B,KAAK,SAAW,CAAC,GAAGuF,EAAiBmD,GAAwBvF,CAAG,CAAC,EAAE,OAAOqG,GAAOvG,EAAiBuG,CAAG,IAAMxJ,CAAO,EAGlH,KAAK,OAASC,EAAcyE,EAAQ,MAAM,EACtCA,EAAQ,OACRxE,GAASwE,EAAQ,MAAM,EACvBzB,EAAiBjD,CAAO,GAAKG,EAAcuE,EAAQ,OAAQvB,CAAG,EAC9D,KAGJ,KAAK,sBAAsB,EAAI,CACjC,CAKA,IAAI,MAAO,CACF,OAAAqF,EACT,CAIA,IAAI,UAAW,CACN,OAAAG,EACT,CAKA,MAAO,CACC,KAAA,CAAE,SAAAU,EAAU,QAAArJ,CAAY,EAAA,KAAA;AAE9B,GAAI,CAAC+E,EAAM,IAAI/E,CAAO,EAAG,CACvB0J,GAAgB,IAAI,EAAA;AAEhBL,EAAS,QACXA,EAAS,QAAeG,GAAA/G,EAAS+G,EAAK,GAAGjB,CAAc,GAAG,CAAC,CAE/D,CACF,CAGA,MAAO,CACL,KAAM,CAAE,QAAAvI,EAAS,OAAAoJ,EAAQ,SAAAC,CAAA,EAAa,KAClC,IAAAQ,EACAC,EASC,GAPDV,IACeS,EAAA,CAAC,GAAGtE,EAAiB,IAAIgD,CAAc,IAAIjJ,CAAS,GAAI8J,CAAM,CAAC,EAAE,KAAK9N,GACrFsN,GAAoBtN,CAAC,CAAA,EAEEwO,EAAAD,GAAkBjB,GAAoBiB,CAAc,IAG1E,CAACT,GAAU,CAACrE,EAAM,IAAIqE,CAAM,IAAM,CAACrE,EAAM,IAAI/E,CAAO,EAAG,CACtD8J,GAA0BD,IAAmB7J,IAC/C0J,GAAgBI,CAAsB,EACfA,EAAA,SAAS,QAAeN,GAAA,CACpC/G,EAAA+G,EAAK,GAAGjB,CAAc,GAAG,CAAA,CACnC,GAGHY,GAAe,IAAI,EAAA;AAEfE,EAAS,QACXA,EAAS,QAAeG,GAAAlI,EAAYkI,EAAK,GAAGjB,CAAc,GAAG,CAAC,CAElE,CACF,CAGA,QAAS,CACFlH,EAAS,KAAK,QAAS/B,CAAS,OAC3B,KAAK,OAD8B,MAE/C,CAkBA,SAAU,CACR,KAAK,sBAAsB,EAE3B,MAAM,QAAQ,CAChB,CACF,CApHES,EADmB+I,GACZ,WAAWL,IAClB1I,EAFmB+I,GAEZ,OAAOD,IACd9I,EAHmB+I,GAGZ,cAAcF,ICjKvB,MAAMmB,GAAsB,CAAC,WAAY,SAAU,YAAa,SAAS,ECFnEC,GAAoB,WCEpBC,GAAoB,gBCMpBC,GAAiBlK,GAAyB,CAExC,MAAAmK,EAAe5G,EAAQvD,EAAS,GAAG,EACzC,OACGA,EAAQ,UAAY,KAEnBoK,GAAapK,EAAS,MAAM,GAC3BwC,GAAaxC,EAAS,MAAM,EAAa,MAAM,EAAE,IAAM,KAEzDmK,GACCC,GAAaD,EAAc,MAAM,GAChC3H,GAAa2H,EAAc,MAAM,EAAa,MAAM,EAAE,IAAM,GAEnE,EC8BM,CAACE,GAAgBC,GAAcC,GAAiBC,EAAa,EAAIC,GACjEC,GAAmB,IAAI1I,EAAY,KAAKqI,EAAc,KAMtDM,GAAuB3K,GAAyBY,EAAsBZ,EAASgK,EAAiB,EAKhGY,GAAwB5K,GAAyB,IAAI6K,GAAS7K,CAAO,EAKrE8K,GAAuB,GAAGb,EAAiB,OAC3Cc,GAAgB,CAACV,GAAgBC,EAAY,EAC7CU,GAAkB,CAACT,GAAiBC,EAAa,EACjDS,GAAgB,CAAC,IAAK,QAAQ,EAE9BC,GAAmB,CACvB,OAAQ,EACR,QAAS,SACX,EAMMC,GAAoBnK,EAAqD,WAAWqJ,EAAc,EAAE,EACpGe,GAAqBpK,EAAqD,YAAYqJ,EAAc,EAAE,EACtGgB,GAAoBrK,EAAqD,WAAWqJ,EAAc,EAAE,EACpGiB,GAAsBtK,EAAqD,aAAaqJ,EAAc,EAAE,EACxGkB,GAAuBvK,EAAqD,cAAcqJ,EAAc,EAAE,EAU1GmB,GAAiBrK,GAAmB,CACxC,KAAM,CAAE,QAAAnB,EAAS,KAAAyL,EAAM,cAAAC,EAAe,QAAAhH,GAAYvD,EAC5C,CAAE,OAAAwK,CAAW,EAAAjH,EAAA;AAInB,GAAIkH,EAAgBH,EAAM,UAAU,IAAM,SAAU,CAC5C,MAAAhG,EAAMC,GAAM1F,CAAO,EAEnB6L,EAAUxK,EAASoK,EAAMX,EAAoB,EAGhC,CAAC,SAAU,MAAO,SAAU,OAAQ,OAAO,EACnD,QAAajO,GAAA,CAEtB,MAAMiP,GAAmC,CAAA,EACzCA,GAAMjP,CAAC,EAAI,GACX0M,EAAgBkC,EAAMK,EAAK,CAAA,CAC5B,EAKD,IAAIC,EACFtB,GAAgB,QAAUpJ,EAASqK,EAAe9Q,CAAC,CAAC,GAEpDyP,GAEF,MAAM2B,EAA8C,CAClD,SAAU,CAACL,EAAQ,EAAG,CAAC,EACvB,OAAQ,CAAC,EAAG,EAAGA,CAAM,EACrB,UAAWlG,EAAM,CAAC,GAAI,EAAG,EAAGkG,CAAM,EAAI,CAAC,GAAIA,EAAQ,CAAC,EACpD,QAASlG,EAAM,CAAC,GAAIkG,EAAQ,CAAC,EAAI,CAAC,GAAI,EAAG,EAAGA,CAAM,CAAA,EAG9CM,EAAgE,CACpE,SAAU,CAAE,IAAK,MAAO,EACxB,OAAQ,CAAE,IAAK,OAAQ,OAAQ,MAAO,EACtC,UAAWxG,EAAM,CAAE,KAAM,OAAQ,MAAO,MAAO,EAAI,CAAE,KAAM,OAAQ,MAAO,MAAO,EACjF,QAASA,EAAM,CAAE,KAAM,OAAQ,MAAO,MAAO,EAAI,CAAE,KAAM,OAAQ,MAAO,MAAO,EAC/E,UAAWA,EAAM,CAAE,MAAO,IAAK,KAAM,MAAO,EAAI,CAAE,MAAO,OAAQ,KAAM,GAAI,EAC3E,QAASA,EAAM,CAAE,MAAO,OAAQ,KAAM,GAAI,EAAI,CAAE,MAAO,IAAK,KAAM,MAAO,CAAA,EAGrE,CAAE,YAAayG,EAAW,aAAcC,GAAeV,EAEvD,CAAE,YAAAW,EAAa,aAAAC,CAAa,EAAIC,GAAmBtM,CAAO,EAC1D,CACJ,KAAMuM,EACN,IAAKC,EACL,MAAOC,GACP,OAAQC,EAAA,EACNC,GAAsB3M,CAAO,EAG3B4M,EAAiBL,EAAaL,EAAYP,EAAS,EAEnDkB,GAAkBN,EAAaL,EAAYO,GAAcd,GAAUS,EAEnEU,GAAeN,EAAYL,EAAaR,GAAUU,EAElDU,EAAmBP,EAAYL,EAAaO,GAAef,GAAUU,EAErEW,EAAYR,EAAYL,EAAaR,EAAS,EAE9CsB,GAAe,CAACxH,GAAOoG,GAAapG,GAAO,CAACoG,IAAaU,EAAaE,GAAcP,EAAY,EAChGgB,IAAgBzH,GAAOoG,GAAa,CAACpG,GAAO,CAACoG,IAAaU,EAAaL,GAAaE,EA6B1F,GAzBIpB,GAAgB,SAASe,CAAa,GAAKa,GAAkBC,KAC/Cd,EAAA1B,IAEd0B,IAAkBxB,KAAqB9E,EAAuBoH,GAAjBD,KAC/Bb,EAAAvB,IAEduB,IAAkBvB,KAAkB/E,EAAMmH,EAAiBC,MAC7Cd,EAAAxB,IAEdwB,IAAkBzB,IAAgB0C,GAAa,CAACD,IAClChB,EAAA1B,IAEd0B,IAAkB1B,IAAkB0C,GAAoB,CAACC,IAC3CjB,EAAAzB,IAIdU,GAAgB,SAASe,CAAa,GAAKe,IAChC7E,GAAAgE,EAAiBF,CAAa,EAAG,CAC5C,IAAK,OACL,OAAQ,CAAA,CACT,EAIChB,GAAc,SAASgB,CAAa,IAAMkB,GAAcC,IAAc,CAGxE,IAAIC,EAA0E,CAAE,KAAM,OAAQ,MAAO,MAAO,EAAA;AAExG,CAACF,GAAcC,IAAe,CAACzH,IACjC0H,EAAW,CAAE,KAAM,OAAQ,MAAO,CAAE,GACtC;AAEIF,GAAc,CAACC,IAAezH,IAChC0H,EAAW,CAAE,KAAM,EAAG,MAAO,MAAO,GACtC;AAEIA,GACWlF,GAAAgE,EAAiBF,CAAa,EAAGoB,CAAQ,CAE1D,CAEM,MAAAC,GAAoBpB,EAAeD,CAAa,EAOtD,GANAxC,EAAgBkC,EAAM,CACpB,GAAGQ,EAAiBF,CAAa,EACjC,OAAQ,GAAGqB,GAAQ,IAAUxP,GAAAA,GAAI,GAAGA,CAAC,IAAS,EAAE,KAAK,GAAG,CAAC,EAAA,CAC1D,EAGGmN,GAAc,SAASgB,CAAa,GAAKF,EAAS,CAAA;AAEhDA,GAMctC,EAAAkC,EAAMQ,EAJnB,CAACxG,GAAOwH,GAAgBxH,GAAOyH,GAC5B,YAEA,SAC0C,CAAC,CAErD,CAEA9L,EAAcsK,EAAeH,EAAoB,CACnD,CACF,EAQM8B,GAAgB5B,GACb,CAAC,GAAGA,EAAK,QAAQ,EACrB,IAAS7Q,GAAA,CACR,GAAIA,GAAKqQ,GAAc,SAASrQ,EAAE,OAAO,EAAU,OAAAA,EAC7C,KAAA,CAAE,kBAAA0S,CAAsB,EAAA1S,EAC9B,OAAI0S,GAAqBrC,GAAc,SAASqC,EAAkB,OAAO,EAChEA,EAEF,IACR,CAAA,EACA,OAAO1S,GAAKA,CAAC,EASZ2S,GAAyBpM,GAAmB,CAC1C,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EACvBM,EAASN,EAAK,KAAOO,EAAcC,EACnCwB,EAAMC,EAAYpD,CAAO,EAExByB,EAAA0B,EAAKrB,EAAiB0L,EAAsB,EAC5C/L,EAAA0B,EAAKsK,GAAYD,EAAsB,EACvC/L,EAAA0B,EAAKoE,GAAcmG,EAAqB,EACxCjM,EAAA0B,EAAKwK,GAAYC,EAAkB,EAAA;AAGtClJ,EAAQ,UAAY,WACtB,CAACmJ,GAAaC,EAAW,EAAE,QAAcC,GAAA,CACvCtM,EAAOuM,GAAUhO,CAAO,EAAG+N,EAAIE,GAAuBvH,EAAc,CAAA,CACrE,CAEL,EAQMwH,GAA0BlO,GAAkD,CAC1E,MAAAmO,EAAgB,CAAC,GAAG1D,GAAiB,YAAa,aAAa,EAClE,IAAI7P,GAAK4M,GAAuB,GAAG5M,CAAC,IAAI0E,CAAS,GAAI8D,EAAYpD,CAAO,CAAC,CAAC,EAC1E,KAAUpC,GAAAA,EAAE,MAAM,EAEjB,GAAAuQ,GAAiBA,EAAc,OACjC,MAAO,CAAC,GAAIA,EAAc,CAAC,EAAE,QAA0C,EAAE,KAAKvQ,GAC5E6M,GAAgB,KAAK7P,GAAKA,IAAM4H,GAAa5E,EAAGoE,EAAY,CAAC,CAAA,CAInE,EASMwL,GAA0BlT,GAAkB,CAC1C,KAAA,CAAE,OAAAuF,EAAQ,KAAAuO,CAAS,EAAA9T,EAAA;AAGrB,GAAAuF,GAAUI,EAAcJ,CAAM,EAAG,CAE7B,MAAAG,EAAUkO,GAAuBrO,CAAM,EACvCsB,EAAOnB,GAAW2K,GAAoB3K,CAAO,EAAA;AAGnD,GAAImB,EAAM,CACF,KAAA,CAAE,cAAAuK,EAAe,KAAAD,CAAS,EAAAtK,EAE1BkN,EACJ3C,GACAA,EAAc,SAAS7L,CAAM,IAC5BA,EAAO,UAAY,QAAU0D,EAAQ1D,EAAQ,MAAM,IAAM,MAExD,CAACiC,EAAiBwM,EAAc,EAAE,SAASF,CAAI,GAAKlE,GAAcrK,CAAM,GAC1EvF,EAAE,eAAe,EACnB;AAGI,CAAC+T,GAAUD,IAASX,IAAc5N,IAAWG,GAAWH,IAAW4L,GACrEtK,EAAK,KAAK,CAEd,CACF,CACF,EAOMoN,GAAwBjU,GAAkB,CACxC,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACb0F,EAAUH,GAAU0D,EAAQ1D,EAAuB6K,EAAgB,EACnEvJ,EAAOnB,GAAW2K,GAAoB3K,CAAO,EAAA;AAGnD,GAAImB,EAAM,CACR7G,EAAE,gBAAgB,EAClB6G,EAAK,OAAO,EAAA;AAERnB,GAAWkK,GAAclK,CAAO,KAAK,eAAe,CAC1D,CACF,EAOM0N,GAAyBpT,GAAqB,CAAA;AAE9C,CAACkU,GAAcC,EAAU,EAAE,SAASnU,EAAE,IAAI,GAAGA,EAAE,gBACrD,EAOA,SAASsT,GAAsCtT,EAAkB,CACzD,KAAA,CAAE,KAAAgL,CAAS,EAAAhL,EACX0F,EAAUkO,GAAuB,IAAI,EACrC/M,EAAOnB,GAAW2K,GAAoB3K,CAAO,EAC7C,CAAE,cAAA0O,CAAmB,EAAA1O,GAAWoD,EAAYpD,CAAO,EAAA;AAGzD,GAAImB,GAAQuN,EAAe,CACnB,KAAA,CAAE,KAAAjD,EAAM,KAAAkD,CAAS,EAAAxN,EACjByN,EAAYvB,GAAa5B,CAAI,EAG/B,GAAAmD,GAAaA,EAAU,QAAU,CAACJ,GAAcC,EAAU,EAAE,SAASnJ,CAAI,EAAG,CAC1E,IAAAwC,EAAM8G,EAAU,QAAQF,CAAa,EAAA;AAErCA,IAAkB1O,EACd8H,EAAA,EACGxC,IAASmJ,GACZ3G,EAAAA,EAAM,EAAIA,EAAM,EAAI,EACjBxC,IAASkJ,KAClB1G,EAAMA,EAAM8G,EAAU,OAAS,EAAI9G,EAAM,EAAIA,GAC/C;AAEI8G,EAAU9G,CAAG,GAAS+G,GAAAD,EAAU9G,CAAG,CAAgB,CACzD,CAEIgH,KAAcxJ,GAAQqJ,IACxBxN,EAAK,OAAO,EACZ0N,GAAM7O,CAAO,EAEjB,CACF,CAGA,SAASiO,IAAyC,CAC1C,MAAAjO,EAAUkO,GAAuB,IAAI,EACrC/M,EAAOnB,GAAW2K,GAAoB3K,CAAO,EAAA;AAG/CmB,GAAQA,EAAK,MAAMqK,GAAcrK,CAAI,CAC3C,CAKA,MAAqB0J,WAAiBjL,EAAc,CAalD,YAAYC,EAA8BC,EAAmC,CAC3E,MAAMD,EAAQC,CAAM,EAoGtBC,EAAA,6BAAyByB,GAAkB,EAC1BA,EAAME,EAAcC,GAC5B,KAAK,QAASG,EAAiByM,EAAoB,CAAA,GAnGpD,KAAA,CAAE,cAAA7C,CAAc,EAAI,KAAK,QACzB,CAACD,CAAI,EAAIjE,GAAuByC,GAAmByB,CAA2B,EAGhFD,IAEF,KAAK,cAAgBC,EACrB,KAAK,KAAOD,EAGZ,KAAK,sBAAsB,EAAI,EAEnC,CAKA,IAAI,MAAO,CACF,OAAAzB,EACT,CAIA,IAAI,UAAW,CACN,OAAAkB,EACT,CAKA,QAAS,CACH,KAAK,KAAM,KAAK,KAAK,OACf,KAAK,CACjB,CAGA,MAAO,CACL,KAAM,CAAE,QAAAlL,EAAS,KAAA2O,EAAM,KAAAlD,EAAM,cAAAC,GAAkB,KAAA;AAG/C,GAAI,CAACiD,EAAM,CACH,MAAAI,EAAiBb,GAAuBlO,CAAO,EAC/CgP,EAAkBD,GAAkBpE,GAAoBoE,CAAc,EACxEC,KAAiC,OAGrC,CAAC7D,GAAmBC,GAAoBG,EAAoB,EAAE,QAAajR,GAAA,CACzEA,EAAE,cAAgB0F,CAAA,CACnB,EAEDoB,EAAcsK,EAAeP,EAAiB,EACzCA,GAAkB,mBACrB1I,EAASgJ,EAAMnM,CAAS,EACxBmD,EAASiJ,EAAepM,CAAS,EACpBoD,EAAA1C,EAASyJ,GAAc,MAAM,EAG1C+B,GAAc,IAAI,EAElB,KAAK,KAAO,CAACmD,EAEbE,GAAM7O,CAAO,EACbuN,GAAsB,IAAI,EAC1BnM,EAAcsK,EAAeN,EAAkB,EAEnD,CACF,CAGA,MAAO,CACL,KAAM,CAAE,QAAApL,EAAS,KAAA2O,EAAM,KAAAlD,EAAM,cAAAC,GAAkB,KAAA;AAG3CiD,IACF,CAACtD,GAAmBC,EAAmB,EAAE,QAAahR,GAAA,CACpDA,EAAE,cAAgB0F,CAAA,CACnB,EAEDoB,EAAcsK,EAAeL,EAAiB,EACzCA,GAAkB,mBACrB/J,EAAYmK,EAAMnM,CAAS,EAC3BgC,EAAYoK,EAAepM,CAAS,EACvBoD,EAAA1C,EAASyJ,GAAc,OAAO,EAE3C,KAAK,KAAO,CAACkF,EAEbpB,GAAsB,IAAI,EAC1BnM,EAAcsK,EAAeJ,EAAmB,GAGtD,CAaA,SAAU,CACJ,KAAK,MAAM,KAAK,KAAK,EAEzB,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CA7HEvL,EADmB8K,GACZ,WAAWH,IAClB3K,EAFmB8K,GAEZ,OAAOD,IACd7K,EAHmB8K,GAGZ,cAAcF,IC7ZvB,MAAMsE,EAAc,QCAdC,GAAiB,QCAjBC,GAAqB,YCErBC,GAAgB,YCAhBC,GAAmB,eCAnBC,GAAiB,aCAjBC,GAAsB,kBCYtBC,GAAiBpG,GAAwB,CAC7C,GAAG5B,GAAuB4H,GAAehG,CAAM,EAC/C,GAAG5B,GAAuB6H,GAAkBjG,CAAM,EAClD,GAAG5B,GAAuB8H,GAAgBlG,CAAM,EAChD,GAAG5B,GAAuB+H,GAAqBnG,CAAM,EACrD,GAAG5B,GAAuB,WAAY4B,CAAM,CAC9C,EAQaqG,GAAkBzP,GAA0B,CACjD,MAAA0P,EAAKC,GAAgB3P,CAAO,EAClCuJ,EAAgBmG,EAAI,CAClB,aAAc,GACd,SAAU,EAAA,CACX,EAEK,MAAAE,EAAaJ,GAAcE,CAAE,EAAA;AAG/BE,EAAW,QACbA,EAAW,QAAiBC,GAAA,CAC1BtG,EAAgBsG,EAAO,CACrB,aAAc,GACd,YAAa,EAAA,CACd,CAAA,CACF,CAEL,EASaC,GAAoB9P,GAAyB,CACxD,KAAM,CAAE,YAAAoM,CAAA,EAAgBE,GAAmBtM,CAAO,EAC5C,CAAE,WAAA+P,CAAA,EAAe/B,GAAUhO,CAAO,EACjC,OAAA,KAAK,IAAI+P,EAAa3D,CAAW,CAC1C,EASa4D,GAAe,CAAChQ,EAAsBiQ,IAAuB,CAClE,MAAAP,EAAKC,GAAgB3P,CAAO,EAC5BkQ,EAAU,SAAStE,EAAgB8D,EAAI,cAAc,EAAG,EAAE,EAE1DS,EADSvE,EAAgB8D,EAAI,UAAU,IAAM,UACzBQ,EAAU,EAAIJ,GAAiB9P,CAAO,EAC1D4P,EAAaJ,GAAcE,CAAE,EAAA;AAGnC,GAAIO,EAAU,CACZ1G,EAAgBmG,EAAI,CAClB,SAAU,SACV,aAAc,GAAGQ,EAAUC,CAAO,IAAA,CACnC,EAAA;AAGGP,EAAW,QACbA,EAAW,QAAiBC,GAAA,CACpB,MAAAO,EAAexE,EAAgBiE,EAAO,cAAc,EAC1DA,EAAM,MAAM,aAAe,GAAG,SAASO,EAAc,EAAE,EAAID,CAAO,KAAA;AAE9D,GAAA,CAACb,GAAgBC,EAAmB,EAAE,QAAUlO,EAASwO,EAAOjV,CAAC,CAAC,EAAG,CACjE,MAAAyV,EAAazE,EAAgBiE,EAAO,aAAa,EACvDA,EAAM,MAAM,YAAc,GAAG,SAASQ,EAAY,EAAE,EAAIF,CAAO,IACjE,CAAA,CACD,CAEL,CACF,EC/FMG,EAAkB,YCElBC,GAAiBC,GAAc,CACnC,QAAS,MACT,UAAW,iBACb,CAAC,EAEKC,GAAc,CAAC5Q,EAAqB6Q,IAAiC,CACzE,MAAMC,EAAkBC,EAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBH,GACzEO,EAAOH,EAAkBD,EAAkBf,GAAgB9P,CAAM,EAAA;AAGnE+Q,EAAO/Q,CAAM,IACXgR,IAAWN,IACbO,EAAK,OAAOP,EAAc,EAE5BM,EAAO,OAAOhR,CAAM,EAExB,EAEMkR,GAAc,CAAClR,EAAqB6Q,IAAiC,CACzE,MAAMC,EAAkBC,EAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBH,GAAA;AAG3EK,EAAO/Q,CAAM,IACfA,EAAO,OAAO,EAEVgR,IAAWN,IAAkB,CAACA,GAAe,SAAS,QACxDA,GAAe,OAAO,EAG5B,EAEMS,GAAW,CAACnR,EAAqB6Q,IAAiC,CACtE,MAAMG,EAASD,EAAOF,CAAe,GAAKA,EAAgB,WAAa,OAASA,EAAkBH,GAClG,OAAOK,EAAO/Q,CAAM,GAAKgR,EAAO,SAAShR,CAAM,CACjD,ECrBMoR,GAAiB,WACjBC,GAAqB,GAAGjC,CAAW,IAAIgC,EAAc,GACrDE,GAAyB,GAAGb,CAAe,IAAIW,EAAc,GAC7DG,GAAsB,IAAInC,CAAW,IAAI3P,CAAS,GAClD+R,GAA0B,IAAIf,CAAe,IAAIhR,CAAS,GAG1DgS,EAAUd,GAAc,KAAK,EAQ7Be,GAAkBvR,GACfG,EAAc,GAAGiR,EAAmB,IAAIC,EAAuB,GAAIjO,EAAYpD,CAAO,CAAC,EAQ1FwR,GAAqBC,GAAsB,CACzC,MAAAC,EAAcD,EAAUP,GAAqBC,GACnD,CAACD,GAAoBC,EAAsB,EAAE,QAAavW,GAAA,CACxD0G,EAAYgQ,EAAS1W,CAAC,CAAA,CACvB,EACD6H,EAAS6O,EAASI,CAAW,CAC/B,EASMC,GAAgB,CAAC3R,EAAsB4R,EAAkBH,IAAsB,CACnFD,GAAkBC,CAAO,EACbhB,GAAAa,EAAS3B,GAAgB3P,CAAO,CAAC,EACzC4R,GAAkBnP,EAAA6O,EAASjS,CAAS,CAC1C,EAKMwS,GAAc,IAAM,CACnBxQ,EAASiQ,EAAShS,CAAS,IAC9BmD,EAAS6O,EAAShS,CAAS,EAC3B6I,GAAOmJ,CAAO,EAElB,EAKMQ,GAAc,IAAM,CACxBxQ,EAAYgQ,EAAShS,CAAS,CAChC,EAOMyS,GAAiB/R,GAAgC,CAChDuR,GAAevR,CAAO,IACzBsB,EAAYgQ,EAASjS,CAAS,EAClB0R,GAAAO,EAAS3B,GAAgB3P,CAAO,CAAC,EAC7CyP,GAAezP,CAAO,EAE1B,ECrFMgS,GAAahS,GACVC,EAAcD,CAAO,GAAK4L,EAAgB5L,EAAS,YAAY,IAAM,UAAYA,EAAQ,eAAiB,KC0D7GiS,GAAgB,IAAIhD,CAAW,GAC/BiD,GAAsB,IAAIlQ,EAAY,KAAKiN,CAAW,KACtDkD,GAAuB,IAAI5S,EAAa,KAAK0P,CAAW,KACxDmD,GAAmB,GAAGnD,CAAW,UAEjCoD,GAAgB,CACpB,SAAU,GACV,SAAU,EACZ,EAUMC,GAAoBtS,GAAyBY,EAAmBZ,EAASkP,EAAc,EAKvFqD,GAAqBvS,GAAyB,IAAIwS,GAAMxS,CAAO,EAI/DyS,GAAiBzR,EAA+C,WAAWiO,CAAW,EAAE,EACxFyD,GAAkB1R,EAA+C,YAAYiO,CAAW,EAAE,EAC1F0D,GAAiB3R,EAA+C,WAAWiO,CAAW,EAAE,EACxF2D,GAAmB5R,EAA+C,aAAaiO,CAAW,EAAE,EAU5F4D,GAAqB1R,GAAgB,CACnC,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACd2R,EAAiBhD,GAAiB9P,CAAO,EACzC,CAAE,aAAAqM,EAAc,aAAA0G,CAAa,EAAIzG,GAAmBtM,CAAO,EAC3D,CAAE,aAAcgT,EAAa,aAAcC,GAAsBjT,EACjEkT,EAAgBF,IAAgBC,EAAA;AAGlC,GAAA,CAACC,GAAiBJ,EAAgB,CAKpC,MAAMK,EAAW,CAAE,CAJNzN,GAAM1F,CAAO,EAGtB,cAFA,cAGmB,EAAG,GAAG8S,CAAc,MAC3CvJ,EAAgBvJ,EAASmT,CAAQ,CACnC,CACanD,GAAAhQ,EAASkT,GAAiB7G,IAAiB0G,CAAY,CACtE,EAQMK,GAAqB,CAACjS,EAAaK,IAAkB,CACnD,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,QAAA3B,EAAS,OAAAqT,CAAW,EAAAlS,EACrBM,EAAAzB,EAAS8B,EAAiBwR,EAAmB,EACpD7R,EAAOuM,GAAUhO,CAAO,EAAG8N,GAAauF,EAAQ3M,EAAc,EAC9DjF,EAAO2B,EAAYpD,CAAO,EAAGuH,GAAcgM,EAAe,CAC5D,EAOMC,GAAkBrS,GAAgB,CACtC,KAAM,CAAE,SAAAkI,EAAU,QAAArJ,EAAS,cAAAyT,CAAA,EAAkBtS,EAC7C4Q,GAAc/R,CAAO,EACrBuJ,EAAgBvJ,EAAS,CAAE,aAAc,GAAI,QAAS,GAAI,EAC1DoT,GAAmBjS,CAAI,EAEvB,MAAMuS,EAAejB,GAAe,eAAiBpJ,EAAS,KAAK2I,EAAS,EAAA;AAExE0B,MAAoBA,CAA2B,EAEnDd,GAAiB,cAAgBa,EACjCrS,EAAcpB,EAAS4S,EAAgB,EACvCe,GAAgB3T,CAAO,CACzB,EAOM4T,GAAkBzS,GAAgB,CAChC,KAAA,CAAE,QAAAnB,EAAS,cAAAyT,CAAkB,EAAAtS,EACnC0N,GAAM7O,CAAO,EACboT,GAAmBjS,EAAM,EAAI,EAE7BuR,GAAgB,cAAgBe,EAChCrS,EAAcpB,EAAS0S,EAAe,EACtCiB,GAAgB3T,CAAO,CACzB,EAOM6T,GAAmB1S,GAAgB,CACjC,KAAA,CAAE,QAAAnB,EAAS,QAAA4R,CAAY,EAAAzQ,EAC7BoI,EAAgBvJ,EAAS,CAAE,QAAS,OAAS,CAAA,EAC7C6S,GAAkB1R,CAAI,EAAA;AAEjBoQ,GAAevR,CAAO,GACzBuJ,EAAgBoG,GAAgB3P,CAAO,EAAG,CAAE,SAAU,SAAU,EAGlEyC,EAASzC,EAASV,CAAS,EAC3BwU,GAAgB9T,EAAS+T,EAAU,EACtBrR,EAAA1C,EAASgU,GAAW,MAAM,EAEnCpC,EAA8BrQ,EAAAvB,EAAS,IAAM4T,GAAezS,CAAI,CAAC,KACjDA,CAAI,CAC1B,EAOM8S,GAAmB9S,GAAgB,CACvC,KAAM,CAAE,QAAAnB,EAAS,QAAA0E,EAAS,QAAAkN,CAAA,EAAYzQ,EAIlCuD,EAAQ,UAAYkN,GAAWvQ,EAASiQ,EAAShS,CAAS,GAAK,CAACiS,GAAevR,CAAO,GAE5E8R,KACZvQ,EAAqB+P,EAAS,IAAMkC,GAAerS,CAAI,CAAC,GAExDqS,GAAerS,CAAI,CAEvB,EASM+S,GAAqB5Z,GAA+B,CAClD,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EAEbsP,EAAU/J,GAAU0D,EAAQ1D,EAAQqS,EAAmB,EACvDlS,EAAU4J,GAAW3G,EAAiB2G,CAAO,EAC7CzI,EAAOnB,GAAWsS,GAAiBtS,CAAO,EAAA;AAGhD,GAAImB,EAAM,CAAA;AAEJyI,GAAWA,EAAQ,UAAY,OAAO,iBAC1CzI,EAAK,cAAgByI,EACrBzI,EAAK,OAAO,CACd,CACF,EAQMoS,GAAkB,CAAC,CAAE,KAAAjO,EAAM,OAAAzF,KAAyC,CACxE,MAAMG,EAAUG,EAAciR,GAAqBhO,EAAYvD,CAAM,CAAC,EAChEsB,EAAOnB,GAAWsS,GAAiBtS,CAAO,EAAA;AAGhD,GAAImB,EAAM,CACF,KAAA,CAAE,QAAAuD,CAAY,EAAAvD,EAAA;AAGlBuD,EAAQ,UACRY,IAASwJ,IACTzN,EAASrB,EAASV,CAAS,IAG3B6B,EAAK,cAAgB,KACrBA,EAAK,KAAK,EAEd,CACF,EAOMmS,GAAuBhZ,GAA+B,SACpD,KAAA,CAAE,cAAA6Z,CAAkB,EAAA7Z,EACpB6G,EAAOgT,GAAiB7B,GAAiB6B,CAAa,EAAA;AAI5D,GAAIhT,GAAQgT,GAAiB,CAACpP,EAAM,IAAIoP,CAAa,EAAG,CACtD,KAAM,CAAE,QAAAzP,EAAS,SAAA0P,EAAU,YAAAC,CAAA,EAAgBlT,EACrC,CAAE,SAAAmT,CAAa,EAAA5P,EACf,CAAE,OAAA7E,CAAW,EAAAvF,EAEbia,GAAenR,GAAAA,EAAAA,EAAY+Q,CAAa,IAAzB/Q,YAAAA,EAA4B,iBAA5BA,YAAAA,EAA4C,WAAW,OACtEoR,EAAqBH,EAAY,SAASxU,CAAM,EAChD+B,EAAU/B,GAAU0D,EAAQ1D,EAAQsS,EAAoB,EAAA;AAG1DiC,GAAY,CAACI,EACTzP,EAAA,IACJoP,EACA,IAAM,CACJ1R,EAAS0R,EAAe/B,EAAgB,EACxC7Q,EAAqB8S,EAAa,IAAMI,GAAoBtT,CAAI,CAAC,CACnE,EACA,EAAA,GAEOS,GAAY,CAAC2S,GAAgB,CAACH,GAAY,CAACI,GAAsBF,KAC1EnT,EAAK,cAAgBS,GAAW,KAChCT,EAAK,KAAK,EACV7G,EAAE,eAAe,EAErB,CACF,EAOMma,GAAuBtT,GAAgB,CACrC,KAAA,CAAE,QAAAnB,EAAS,YAAAqU,CAAgB,EAAAlT,EAC3BuT,GAAYxM,GAA6BmM,CAAW,GAAK,GAAK,GACpE/S,EAAYtB,EAASoS,EAAgB,EAErCrN,EAAM,IAAI/E,EAAS,IAAM+E,EAAM,MAAM/E,CAAO,EAAG0U,CAAQ,CACzD,EAKA,MAAqBlC,WAAc5S,EAAc,CAe/C,YAAYC,EAA8BC,EAAgC,CACxE,MAAMD,EAAQC,CAAM,EAuHtBC,EAAA,cAAS,IAAM,CAAA;AAETsB,EAAS,KAAK,QAAS/B,CAAS,MAAqB,IAAI,CAAA,GAQ/DS,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,SAAA0H,CAAa,EAAA,KAAA;AAGjBA,EAAS,QACXA,EAAS,QAAeG,GAAA/H,EAAO+H,EAAK1H,EAAiBoS,EAAiB,CAAC,CACzE,GArIM,KAAA,CAAE,QAAAlU,CAAY,EAAA,KAGdqU,EAAclU,EAAc,IAAI8O,CAAW,UAAWjP,CAAO,EAAA;AAG/DqU,IACF,KAAK,YAAcA,EAEd,KAAA,SAAW,CAAC,GAAG9O,EAAiB2M,GAAqB9O,EAAYpD,CAAO,CAAC,CAAC,EAAE,OAC/EwJ,GAAOvG,EAAiBuG,CAAG,IAAMxJ,CAAA,EAI9B,KAAA,SAAW,KAAK,QAAQ,WAAa,SACrC,KAAA,QAAUqB,EAASrB,EAASX,CAAS,EAC1C,KAAK,cAAgB,KAGrB,KAAK,sBAAsB,EAAI,EAEnC,CAKA,IAAI,MAAO,CACF,OAAA6P,EACT,CAIA,IAAI,UAAW,CACN,OAAAmD,EACT,CAKA,QAAS,CACHhR,EAAS,KAAK,QAAS/B,CAAS,OAAQ,YAClC,KAAK,CACjB,CAGA,MAAO,CACL,KAAM,CAAE,QAAAU,EAAS,QAAA0E,EAAS,QAAAkN,EAAS,cAAA6B,GAAkB,KAC/C,CAAE,SAAAa,CAAa,EAAA5P,EACrB,IAAIiQ,EAAe,EAAA;AAGnB,GAAI,CAACtT,EAASrB,EAASV,CAAS,IAC9BmT,GAAe,cAAgBgB,GAAiB,OAChDrS,EAAcpB,EAASyS,EAAc,EACjC,CAACA,GAAe,kBAAkB,CAE9B,MAAAmC,EAAcrD,GAAevR,CAAO,EAAA;AAGtC,GAAA4U,GAAeA,IAAgB5U,EAAS,CACpC,MAAA6U,EACJvC,GAAiBsC,CAAW,GAE5BhU,EAAyDgU,EAAazF,EAAkB,EAAA;AAEtF0F,KAAW,MACjB,CACA,GAAIP,EACGtD,GAASM,CAAO,EAGnBE,GAAkB,EAAI,EAFRG,GAAA3R,EAAS4R,EAAS,EAAI,EAKtC+C,EAAezM,GAA6BoJ,CAAO,EACvCO,KAEZ,WAAW,IAAMgC,GAAgB,IAAI,EAAGc,CAAY,MAC/C,CACLd,GAAgB,IAAI,EAAA;AAEhBe,GAAevT,EAASiQ,EAAShS,CAAS,GAChCwS,IAEhB,CACF,CAEJ,CAGA,MAAO,CACL,KAAM,CAAE,QAAA9R,EAAS,QAAA4R,EAAS,cAAA6B,CAAA,EAAkB,KAAA;AAGxC,GAAApS,EAASrB,EAASV,CAAS,EAAG,CAChCqT,GAAe,cAAgBc,GAAiB,OAChDrS,EAAcpB,EAAS2S,EAAc,EAAA;AAGhCA,GAAe,mBAClBrR,EAAYtB,EAASV,CAAS,EACjBoD,EAAA1C,EAAS+T,GAAY,MAAM,EACxCD,GAAgB9T,EAASgU,EAAS,EAE9BpC,EACFrQ,EAAqBvB,EAAS,IAAMiU,GAAgB,IAAI,CAAC,EAEzDA,GAAgB,IAAI,EAG1B,CACF,CA0BA,SAAU,CACF,MAAA5L,EAAQ,CAAE,GAAG,MACb,CAAE,YAAAgM,EAAa,QAAAzC,CAAY,EAAAvJ,EAC3ByM,EAAW,IAAM,WAAW,IAAM,MAAM,QAAA,EAAW,EAAE,EAE3D,KAAK,KAAK,EACV,KAAK,sBAAsB,EAEvBlD,EAEFrQ,EAAqB8S,EAAaS,CAAQ,EAEjCA,GAEb,CACF,CA1KE/U,EADmByS,GACZ,WAAWP,IAClBlS,EAFmByS,GAEZ,OAAOD,IACdxS,EAHmByS,GAGZ,cAAcF,ICvQvB,MAAMyC,GAAoB,IAAIzE,CAAe,GACvC0E,GAA0B,IAAIhT,EAAY,KAAKsO,CAAe,KAC9D2E,GAA2B,IAAI1V,EAAa,KAAK+Q,CAAe,KAChE4E,GAAyB,GAAG5E,CAAe,YAE3C6E,GAAoB,CACxB,SAAU,GACV,SAAU,GACV,OAAQ,EACV,EAUMC,GAAwBpV,GAAyBY,EAAuBZ,EAASmP,EAAkB,EAKnGkG,GAAyBrV,GAAyB,IAAIsV,GAAUtV,CAAO,EAIvEuV,GAAqBvU,EAAuD,WAAWsP,CAAe,EAAE,EACxGkF,GAAsBxU,EAAuD,YAAYsP,CAAe,EAAE,EAC1GmF,GAAqBzU,EAAuD,WAAWsP,CAAe,EAAE,EACxGoF,GAAuB1U,EAAuD,aAAasP,CAAe,EAAE,EAU5GqF,GAAyBxU,GAAoB,CAC3C,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACd,CAAE,aAAAkL,EAAc,aAAA0G,CAAa,EAAIzG,GAAmBtM,CAAO,EACpDgQ,GAAAhQ,EAASqM,IAAiB0G,CAAY,CACrD,EAQM6C,GAAyB,CAACzU,EAAiBK,IAAkB,CAC3D,MAAAC,EAASD,EAAME,EAAcC,EAC7BwB,EAAMC,EAAYjC,EAAK,OAAO,EAC7BM,EAAA0B,EAAKoE,GAAcsO,EAA0B,EAC7CpU,EAAA0B,EAAKrB,EAAiBgU,EAAuB,CACtD,EAOMC,GAAuB5U,GAAoB,CACzC,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EAAA;AAGxBuD,EAAQ,SACXiR,GAAsBxU,CAAI,EAC1BoI,EAAgBoG,GAAgB3P,CAAO,EAAG,CAAE,SAAU,SAAU,GAGlEyC,EAASzC,EAASkV,EAAsB,EACxCzS,EAASzC,EAASV,CAAS,EAC3BiK,EAAgBvJ,EAAS,CAAE,WAAY,SAAW,CAAA,EAElDuB,EAAqBvB,EAAS,IAAMgW,GAAsB7U,CAAI,CAAC,CACjE,EAOM8U,GAAuB9U,GAAoB,CACzC,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EACvByT,EAAcrD,GAAevR,CAAO,EAE1CA,EAAQ,KAAK,EAET,CAAC4U,GAAelQ,EAAQ,UAAYrD,EAASiQ,EAAShS,CAAS,GACrDwS,KAEdvQ,EAAqBvB,EAAS,IAAMkW,GAAsB/U,CAAI,CAAC,CACjE,EASMgV,GAA2B7b,GAAkB,CACjD,MAAMsP,EAAUrG,EAAQjJ,EAAE,OAAuB0a,EAAuB,EAClEhV,EAAU4J,GAAW3G,EAAiB2G,CAAO,EAC7CzI,EAAOnB,GAAWoV,GAAqBpV,CAAO,EAAA;AAGpD,GAAImB,EAAM,CACRA,EAAK,cAAgByI,EACrBzI,EAAK,OAAO,EAAA;AAERyI,GAAWA,EAAQ,UAAY,KACjCtP,EAAE,eAAe,CAErB,CACF,EAOMwb,GAA2Bxb,GAAkB,CAC3C,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EACb0F,EAAUG,EAAckR,GAAyBjO,EAAYvD,CAAc,CAAC,EAC5EuW,EAAmBjW,EAAc8U,GAA0BjV,CAAkC,EAC7FmB,EAAOnB,GAAWoV,GAAqBpV,CAAO,EAAA;AAGpD,GAAImB,EAAM,CACF,KAAA,CAAE,QAAAuD,EAAS,SAAA2E,CAAa,EAAAlI,EACxB,CAAE,SAAAmT,CAAa,EAAA5P,EACfkF,EAAUrG,EAAQ1D,EAAuBmV,EAAuB,EAChEqB,EAAYjT,EAAYpD,CAAO,EAAE,aAAa,EAAA;AAGpD,GAAI,CAACsR,EAAQ,SAASzR,CAAqB,GAAKyU,IAAa,SAAU,CAAA;AAGnE,EAAE+B,GAAaA,EAAU,WAAW,UAClC,CAACrW,EAAQ,SAASH,CAAqB,GACvCyU,IAEC,CAAC1K,GAAWP,EAAS,SAASxJ,CAAqB,IACnDuW,GAAoBA,EAAiB,SAASvW,CAAqB,KAEtEsB,EAAK,cACHiV,GAAoBA,EAAiB,SAASvW,CAAqB,EAAIuW,EAAmB,KAC5FjV,EAAK,KAAK,GACZ;AAGIyI,GAAWA,EAAQ,UAAY,OAAO,gBAC5C,CACF,CACF,EAQMiM,GAA6B,CAAC,CAAE,KAAAvQ,EAAM,OAAAzF,KAA4B,CACtE,MAAMG,EAAUG,EAAckR,GAAyBjO,EAAYvD,CAAc,CAAC,EAC5EsB,EAAOnB,GAAWoV,GAAqBpV,CAAO,EAAA;AAGpD,GAAImB,EAAM,CAAA;AAEJA,EAAK,QAAQ,UAAYmE,IAASwJ,KACpC3N,EAAK,cAAgB,KACrBA,EAAK,KAAK,EAEd,CACF,EAOM6U,GAAyB7U,GAAoB,CAC3C,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACpBG,EAAYtB,EAASkV,EAAsB,EAE3CpB,GAAgB9T,EAAS+T,EAAU,EACtBrR,EAAA1C,EAASgU,GAAW,MAAM,EAC1BtR,EAAA1C,EAAS,OAAQ,QAAQ,EAEtCoB,EAAcpB,EAASwV,EAAmB,EAE1CI,GAAuBzU,EAAM,EAAI,EACjC0N,GAAM7O,CAAO,EACb2T,GAAgB3T,CAAO,CACzB,EAOMkW,GAAyB/U,GAAoB,CAC3C,KAAA,CAAE,QAAAnB,EAAS,SAAAqJ,CAAa,EAAAlI,EAEjBuB,EAAA1C,EAAS+T,GAAY,MAAM,EACxCD,GAAgB9T,EAASgU,EAAS,EAClCF,GAAgB9T,EAAS,MAAM,EAC/BuJ,EAAgBvJ,EAAS,CAAE,WAAY,EAAI,CAAA,EAE3C,MAAMsW,EAAiBf,GAAmB,eAAiBlM,EAAS,KAAK2I,EAAS,EAAA;AAE9EsE,MAAsBA,CAA6B,EAEvDvE,GAAc/R,CAAO,EAErBoB,EAAcpB,EAAS0V,EAAoB,EAC3CpU,EAAYtB,EAASkV,EAAsB,EAC3CvB,GAAgB3T,CAAO,EAGlBuR,GAAevR,CAAO,GACzB4V,GAAuBzU,CAAI,CAE/B,EAKA,MAAqBmU,WAAkB1V,EAAc,CAYnD,YAAYC,EAA8BC,EAAoC,CAC5E,MAAMD,EAAQC,CAAM,EAyGtBC,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EACnC,KAAK,SAAS,QAAQ6H,GAAO/H,EAAO+H,EAAK1H,EAAiBqU,EAAuB,CAAC,CAAA,GAxG5E,KAAA,CAAE,QAAAnW,CAAY,EAAA,KAGf,KAAA,SAAW,CAAC,GAAGuF,EAAiByP,GAAyB5R,EAAYpD,CAAO,CAAC,CAAC,EAAE,OACnFwJ,GAAOvG,EAAiBuG,CAAG,IAAMxJ,CAAA,EAInC,KAAK,cAAgB,KAGrB,KAAK,sBAAsB,EAAI,CACjC,CAKA,IAAI,MAAO,CACF,OAAAmP,EACT,CAIA,IAAI,UAAW,CACN,OAAAgG,EACT,CAKA,QAAS,CACH9T,EAAS,KAAK,QAAS/B,CAAS,OAAQ,YAClC,KAAK,CACjB,CAGA,MAAO,CACL,KAAM,CAAE,QAAAU,EAAS,QAAA0E,EAAS,cAAA+O,CAAA,EAAkB,KAC5C,IAAIkB,EAAe,EAEnB,GAAI,CAACtT,EAASrB,EAASV,CAAS,IAC9BiW,GAAmB,cAAgB9B,GAAiB,OACpD+B,GAAoB,cAAgB/B,GAAiB,OACrDrS,EAAcpB,EAASuV,EAAkB,EAErC,CAACA,GAAmB,kBAAkB,CAElC,MAAAX,EAAcrD,GAAevR,CAAO,EACtC,GAAA4U,GAAeA,IAAgB5U,EAAS,CACpC,MAAA6U,EACJO,GAAqBR,CAAW,GAEhChU,EAAyDgU,EAAa1F,EAAc,EAAA;AAGlF2F,KAAW,MACjB,CAEA,GAAInQ,EAAQ,SACLsM,GAASM,CAAO,EAGDE,KAFlBG,GAAc3R,EAAS,EAAI,EAK7B2U,EAAezM,GAA6BoJ,CAAO,EACvCO,KAEZ,WAAW,IAAMkE,GAAoB,IAAI,EAAGpB,CAAY,MACnD,CACLoB,GAAoB,IAAI,EAAA;AAEpBnB,GAAevT,EAASiQ,EAAShS,CAAS,GAChCwS,IAEhB,CACF,CAEJ,CAGA,MAAO,CACC,KAAA,CAAE,QAAA9R,EAAS,cAAAyT,CAAkB,EAAA,KAE/BpS,EAASrB,EAASV,CAAS,IAC7BmW,GAAmB,cAAgBhC,GAAiB,OACpDiC,GAAqB,cAAgBjC,GAAiB,OACtDrS,EAAcpB,EAASyV,EAAkB,EACpCA,GAAmB,mBACtBhT,EAASzC,EAASkV,EAAsB,EACxC5T,EAAYtB,EAASV,CAAS,EAC9B2W,GAAoB,IAAI,GAG9B,CAcA,SAAU,CACF,KAAA,CAAE,QAAAjW,CAAY,EAAA,KACduW,EAASlV,EAASrB,EAASV,CAAS,EACpCwV,EAAW,IAAM,WAAW,IAAM,MAAM,QAAA,EAAW,CAAC,EAK1D,GAHA,KAAK,KAAK,EACV,KAAK,sBAAsB,EAEvByB,EAAQ,CACVhV,EAAqBvB,EAAS8U,CAAQ,EAAA;AACtC,MAESA,GAEb,CACF,CA1IE/U,EADmBuV,GACZ,WAAWP,IAClBhV,EAFmBuV,GAEZ,OAAOD,IACdtV,EAHmBuV,GAGZ,cAAcF,ICpSvB,MAAMoB,GAAgB,UCAhBC,GAAmB,UCAnBC,GAAgB,UCOhBC,GAAkBC,GAAoB,CAC1C,MAAMC,EAAYD,IAAYF,GACxBI,EAAYD,EAAY,GAAGD,CAAO,SAAW,GAAGA,CAAO,QACvDG,EAAUF,EAAoD,GAAxC,cAAcD,CAAO,iBAC3CvP,EAAQ,eAAeuP,CAAO,iBAC9BI,EAAO,eAAeF,CAAS,WACrC,MAAO,eAAeF,CAAO,WAAWF,EAAa,KAAKK,EAAS1P,EAAQ2P,CAAI,QACjF,ECfMC,GAAoB,CACxB,IAAK,MACL,OAAQ,SACR,KAAM,QACN,MAAO,KACT,ECkBMC,GAA+B/V,GAAY,CAC/C,MAAMgW,EAAa,4BACb,CAAE,QAAAnX,EAAS,QAAAoX,EAAS,UAAAC,EAAW,QAAA3S,EAAS,MAAA2C,CAAU,EAAAlG,EAAA;AAGxD,GAAIiW,EAAS,CACL,MAAAE,EAAe,CAAE,GAAGL,IACpBxR,EAAMC,GAAM1F,CAAO,EAGzBuJ,EAAgB6N,EAAS,CAEvB,IAAK,GACL,KAAM,GACN,MAAO,GACP,OAAQ,EAAA,CACT,EACK,MAAAG,EAAYpW,EAAK,OAASsV,GAC1B,CAAE,YAAae,EAAU,aAAcC,GAAcL,EACrD,CAAE,YAAaM,EAAQ,aAAcC,EAAQ,YAAaC,CAAW,EAAAtL,GAAmBtM,CAAO,EACjG,GAAA,CAAE,UAAA6X,CAAc,EAAAnT,EACpB,KAAM,CAAE,YAAaoT,EAAc,YAAaC,GAAiBV,EAE3DW,GADiBpM,EAAgByL,EAA0B,UAAU,IACpC,QACjCvE,EAA+B,KAAK,IAAnBkF,GAAuBF,EAAeC,EAAyBL,EAASE,CAAtB,EACnEK,GACJxS,GAAOuS,GAEHlF,EACA,EACAoF,GAAeR,GAAWjS,EAAuB,EAAjBqN,GAAsB,EACtD,CACJ,MAAOqF,EACP,OAAQC,EACR,KAAMC,EACN,MAAOC,GACP,IAAKC,EAAA,EACH5L,GAAsB3M,EAAS,EAAI,EACjC,CAAE,EAAApC,EAAG,EAAAZ,IAAM,CACfqb,EACA,EAAGE,EAAA,EAGLhP,EAAgBlC,EAAsB,CACpC,IAAK,GACL,KAAM,GACN,MAAO,GACP,OAAQ,EAAA,CACT,EACD,IAAImR,GAA+B,EAC/BC,GAAkC,GAClCC,GAAgC,EAChCC,GAAiC,GACjCC,GAA4B,GAC5BC,GAA6B,GAC7BC,GAA8B,GAE5B,MAAAC,GAAc1R,EAAsB,aAAe,EACnD2R,GAAe3R,EAAsB,cAAgB,EACrD4R,GAAcF,GAAa,EAG7B,IAAA/L,GAAYuL,GAAcd,EAAYuB,GAAc,EACpDlM,GAAeyL,GAAcd,EAAYW,EAAaY,IAAerB,EACrE1K,GAAaoL,EAAeb,EAAWuB,GAAad,GACpD/K,GAAcmL,EAAeb,EAAWW,EAAYY,IAAcb,GAEhE,MAAAgB,GAAc,CAAC,OAAQ,OAAO,EAC9BC,GAAY,CAAC,MAAO,QAAQ,EAEtBnM,GAAAkM,GAAY,SAASrB,CAAS,EACtCU,GAAcH,EAAa,EAAIX,EAAY,EAAIuB,GAAc,EAC7DhM,GACWF,GAAAoM,GAAY,SAASrB,CAAS,EACzCU,GAAcd,EAAY,EAAIW,EAAa,EAAIY,IAAerB,EAC9D7K,GACSG,GAAAkM,GAAU,SAAStB,CAAS,EAAIQ,EAAeF,EAAY,EAAIX,EAAW,EAAIS,GAAchL,GAC3FC,GAAAiM,GAAU,SAAStB,CAAS,EACtCQ,EAAeb,EAAW,EAAIW,EAAY,GAAKD,GAC/ChL,GAIJ2K,EAAYqB,GAAY,SAASrB,CAAS,GAAK5K,IAAcC,GAAc,MAAQ2K,EAEvEA,EAAAA,IAAc,OAAS7K,GAAY,SAAW6K,EAC9CA,EAAAA,IAAc,UAAY/K,GAAe,MAAQ+K,EACjDA,EAAAA,IAAc,QAAU5K,GAAa,QAAU4K,EAEzDA,EAAAA,IAAc,SAAW3K,GACrB,OAEA2K,EAGDT,EAAQ,UAAU,SAASS,CAAS,IACvCT,EAAQ,UAAYA,EAAQ,UAAU,QAAQD,EAAYG,EAAaO,CAAS,CAAC,GACnF;AAIIqB,GAAY,SAASrB,CAAS,GAE5BA,IAAc,OAEDa,GAAA9a,EAAI4Z,GAAYD,EAAYwB,GAAa,GAGzCL,GAAA9a,EAAIua,GAAaZ,EAAYwB,GAAa,GAIvD/L,IAAaF,IACD0L,GAAA,EACGC,GAAA,EACNG,GAAAL,GAAcH,EAAa,EAAIY,GAAc,GAC/ChM,IACKwL,GAAAxb,GACGyb,GAAA,GACjBG,GAAWR,EAAa,EAAIW,IACnBjM,IACT0L,GAAcxb,GAAIya,EAAYW,EACbK,GAAA,GACNG,GAAAnB,EAAYW,EAAa,EAAIW,KAE1BP,GAAAxb,GAAIya,EAAY,EAAIW,EAAa,EACpCQ,GAAAnB,EAAY,EAAIuB,GAAc,IAElCG,GAAU,SAAStB,CAAS,IACjCA,IAAc,MACFW,GAAAxb,GAAIya,GAAaF,EAAYyB,GAAc,GAG3CR,GAAAxb,GAAIob,GAAcb,EAAYyB,GAAc,GAIxD/L,IACayL,GAAA,EACHG,GAAAjb,EAAIua,EAAY,EAAIc,IACvB/L,IACMwL,GAAA,OACCC,GAAA,EACHG,GAAAX,EAAY,EAAID,GAAeI,GAAgBW,KAE7CP,GAAA9a,EAAI4Z,EAAW,EAAIW,EAAY,EAC9CU,GAAYrB,EAAW,EAAIyB,KAK/B1P,EAAgB6N,EAAS,CACvB,IAAK,GAAGoB,EAAW,KACnB,OAAQC,KAAmB,GAAK,GAAK,GAAGA,EAAc,KACtD,KAAMC,KAAiB,OAASA,GAAe,GAAGA,EAAY,KAC9D,MAAOC,KAAkB,GAAK,GAAGA,EAAa,KAAO,EAAA,CACtD,EAAA;AAIG1Y,EAAcoH,CAAK,IACjBuR,KAAa,KACTvR,EAAA,MAAM,IAAM,GAAGuR,EAAQ,MAE3BC,KAAc,GACVxR,EAAA,MAAM,KAAO,GAAGwR,EAAS,KACtBC,KAAe,KAClBzR,EAAA,MAAM,MAAQ,GAAGyR,EAAU,OAGrC,MAAMM,GAAsBpY,EAC1B,cAAcqY,GAAYlY,EAAK,IAAI,CAAC,EAAA,EAEtCC,EAAcpB,EAASoZ,EAAmB,CAC5C,CACF,EClMME,GAAkC,CACtC,SAAU3C,GAAeD,EAAa,EACtC,MAAO,GACP,YAAa,GACb,QAAS,cACT,UAAW,MACX,WAAY,OACZ,UAAW,GACX,MAAO,IACP,UAAW,SAAS,KACpB,QAAS,GACT,YAAa,GACb,SAAU,EACZ,ECdM6C,GAAoB,sBCFpBC,GAAmB,UCSnBC,GAAU,CAACzZ,EAAsB0Z,EAAiCC,IAAuC,CAAA;AAE7G,GAAIzZ,GAASwZ,CAAO,GAAKA,EAAQ,OAAQ,CACnC,IAAAE,EAAQF,EAAQ,OAChBG,GAAWF,CAAU,IAAGC,EAAQD,EAAWC,CAAK,GAGpD,MAAME,EADY,IAAI,YACS,gBAAgBF,EAAO,WAAW,EACjE5Z,EAAQ,OAAW,GAAG8Z,EAAa,KAAK,UAAW,CAAA,MAC1C7Z,EAAcyZ,CAAO,EAC9B1Z,EAAQ,OAAO0Z,CAAO,GACbK,GAAWL,CAAO,GAAMM,GAAQN,CAAO,GAAKA,EAAQ,MAAM9I,CAAM,IACzE5Q,EAAQ,OAAW,GAAG0Z,CAAQ,CAElC,ECRMO,GAAa9Y,GAA4B,CACvC,MAAA0V,EAAY1V,EAAK,OAASqY,GAE1B,CAAE,GAAAU,EAAI,QAAAla,EAAS,QAAA0E,CAAA,EAAYvD,EAC3B,CAAE,MAAAgZ,EAAO,UAAAtC,EAAW,SAAAuC,EAAU,UAAAC,EAAW,YAAAC,EAAa,WAAAX,EAAY,YAAAY,EAAa,QAAAb,EAAS,SAAAc,CAAA,EAAa9V,EACrG+V,EAAY5D,EAAYH,GAAgBF,GACxCc,EAAe,CAAE,GAAGL,IAC1B,IAAIyD,EAAqB,CAAA,EACrBC,EAAuB,CAAA,EAEvBjV,GAAM1F,CAAO,IACfsX,EAAa,KAAO,MACpBA,EAAa,MAAQ,SAIvB,MAAMsD,GAAiB,MAAMH,CAAS,IAAInD,EAAaO,CAAS,CAAC,GAG7D,IAAAgD,GACA,GAAA5a,EAAcma,CAAQ,EACNS,GAAAT,MACb,CACC,MAAAU,GAAatK,GAAc,KAAK,EAC9BiJ,GAAAqB,GAAYV,EAAUT,CAAU,EACxCkB,GAAkBC,GAAW,UAC/B,CAGA3Z,EAAK,QAAUlB,EAAc4a,EAAe,EACvCA,GAAgB,UAAU,EAAI,EAE/B,OAEE,KAAA,CAAE,QAAAzD,CAAY,EAAAjW,EAAA;AAEpB,GAAIiW,EAAS,CAEE1U,EAAA0U,EAAS,KAAM8C,CAAE,EACjBxX,EAAA0U,EAAS,OAAQV,EAAa,EAE3C,MAAMI,GAAYD,EAAY,GAAGH,EAAa,SAAW,GAAGF,EAAa,QACnEuE,GAAgBlE,EAAY,KAAO1W,EAAc,IAAIqW,EAAa,UAAWY,CAAO,EACpF4D,EAAc7a,EAAc,IAAI2W,EAAS,GAAIM,CAAO,EAG1DjW,EAAK,MAAQhB,EAAc,IAAIsa,CAAS,SAAUrD,CAAO,EACnD,KAAA,CAAE,MAAA/P,CAAU,EAAAlG,EAEd,GAAAlB,EAAcka,CAAK,EAAGO,EAAa,CAACP,EAAM,UAAU,EAAI,CAAC,MACxD,CACG,MAAAc,EAAYzK,GAAc,KAAK,EAC7BiJ,GAAAwB,EAAWd,EAAOR,CAAU,EACpCe,EAAa,CAAK,GAAGO,EAAU,UAAW,CAC5C,CAEI,GAAAhb,EAAcyZ,CAAO,EAAGiB,EAAe,CAACjB,EAAQ,UAAU,EAAI,CAAC,MAC9D,CACG,MAAAwB,EAAc1K,GAAc,KAAK,EAC/BiJ,GAAAyB,EAAaxB,EAASC,CAAU,EACxCgB,EAAe,CAAK,GAAGO,EAAY,UAAW,CAChD,CAGA,GAAIX,EACF,GAAIJ,EACE,GAAAla,EAAcua,CAAQ,EACxBE,EAAa,CAAC,GAAGA,EAAYF,EAAS,UAAU,EAAI,CAAC,MAChD,CACC,MAAAW,EAAU3K,GAAc,KAAK,EAC3BiJ,GAAA0B,EAASX,EAAUb,CAAU,EACrCe,EAAa,CAAC,GAAGA,EAAYS,EAAQ,UAAkB,CACzD,KACK,CAAA;AAGD,GADAJ,OAA6B,SAC7B9a,EAAcua,CAAQ,EACxBG,EAAe,CAAC,GAAGA,EAAcH,EAAS,UAAU,EAAI,CAAC,MACpD,CACC,MAAAW,EAAU3K,GAAc,KAAK,EAC3BiJ,GAAA0B,EAASX,EAAUb,CAAU,EACrCgB,EAAe,CAAC,GAAGA,EAAcQ,EAAQ,UAAkB,CAC7D,CACF,CACF;AAKA,GAAKtE,EAWMsD,GAASa,GAAqBvB,GAAAuB,EAAab,EAAOR,CAAU,MAXvD,CAAA;AAEVQ,GAASY,IACHtB,GAAAsB,GAAeL,EAAYf,CAAU,EAC/C;AAEID,GAAWsB,GACLvB,GAAAuB,EAAaL,EAAchB,CAAU,EAG/CxY,EAAK,IAAMhB,EAAc,aAAciX,CAAO,GAAK,MAAA,CAKrD3U,EAAS2U,EAAS,gBAAgB,EAClC3U,EAAS4E,EAAO,mBAAmB,EAAA;AAI9BhG,EAAS+V,EAASqD,CAAS,GAAGhY,EAAS2U,EAASqD,CAAS,EAAA;AAE1DJ,GAAa,CAAChZ,EAAS+V,EAAS/X,CAAS,GAC3CoD,EAAS2U,EAAS/X,CAAS,EAC7B;AAEIib,GAAe,CAACjZ,EAAS+V,EAASkD,CAAW,GAC/C7X,EAAS2U,EAASkD,CAAW,EAC/B;AAEKjZ,EAAS+V,EAASwD,EAAc,GAAGnY,EAAS2U,EAASwD,EAAc,CAC1E,CACF,EC9HMQ,GAAuBpb,GAAqC,CAC1D,MAAAqb,EAAiB,CAAC,OAAQ,MAAM,EAChCC,EAA2B,CAAA,EAC7B,GAAA,CAAE,WAAAC,CAAe,EAAAvb,EAErB,KAAOub,GAAc,CAACF,EAAe,SAASE,EAAW,QAAQ,GAAG,CAClEA,EAAaC,GAAcD,CAAU,EAAA;AAE/BE,GAAaF,CAAU,GAAKG,GAAeH,CAAU,GACzDD,EAAW,KAAKC,CAAU,CAE9B,CAEA,OACED,EAAW,KAAK,CAAC1gB,EAAG,IAEhBgR,EAAgBhR,EAAkB,UAAU,IAAM,YAClD0gB,EAAW,MAAM,EAAI,CAAC,EAAE,MAAWxe,GAAA8O,EAAgB9O,EAAkB,UAAU,IAAM,QAAQ,EAEtFlC,EAEF,IACR,GAEDwI,EAAYpD,CAAO,EAAE,IAEzB,ECyBM2b,GAAkB,IAAI3Z,EAAY,KAAK0U,EAAa,iBAAiBA,EAAa,KAClFkF,GAAY,QAMlB,IAAIC,GAAsB7b,GAAyBY,EAAqBZ,EAASwZ,EAAgB,EAKjG,MAAMsC,GAAuB9b,GAAyB,IAAI+b,GAAQ/b,CAAO,EASnEgc,GAAiB7a,GAAkB,CACvC,KAAM,CAAE,QAAAnB,EAAS,QAAAoX,EAAS,UAAAC,EAAW,aAAA4E,GAAiB9a,EACtD2S,GAAgB9T,EAASkc,EAAe,EACxCnL,GAAYqG,EAAwBC,IAAc4E,EAAe5E,EAAY4E,CAAY,CAC3F,EAOME,GAAUhb,GAAuC,CACrD,KAAM,CAAE,QAAAiW,EAAS,UAAAC,EAAW,aAAA4E,CAAA,EAAiB9a,EAE7C,OAAOiW,GAAWpG,GAASoG,EAASC,IAAc4E,EAAe5E,EAAY4E,CAAY,CAC3F,EAQMG,GAAyB,CAACjb,EAAe2T,IAA0B,CACjE,KAAA,CAAE,QAAA9U,CAAY,EAAAmB,EACpBA,EAAK,sBAAsB,EAAA;AAGvBiJ,GAAapK,EAASuZ,EAAiB,GAAKpY,EAAK,OAASqY,IAC5D6C,GAAmBlb,CAAI,EACzB;AAEI2T,GAAmBA,GACzB,EAQMwH,GAAsB,CAACnb,EAAeK,IAAkB,CACtD,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,QAAA3B,CAAY,EAAAmB,EAEpBM,EAAO2B,EAAYpD,CAAO,EAAGmH,GAAiBhG,EAAK,YAAauF,EAAc,EAE9E,CAACmH,GAAaC,EAAW,EAAE,QAAcC,GAAA,CACvCtM,EAAOuM,GAAUhO,CAAO,EAAG+N,EAAI5M,EAAK,OAAQuF,EAAc,CAAA,CAC3D,CACH,EAOM6V,GAAsBpb,GAAkB,CACtC,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACdqb,EAAoBxb,EACxB,YAAYqY,GAAYlY,EAAK,IAAI,CAAC,EAAA,EAGpCmb,GAAoBnb,EAAM,EAAI,EAC9BC,EAAcpB,EAASwc,CAAiB,EAClCzX,EAAA,MAAM/E,EAAS,IAAI,CAC3B,EAOMyc,GAAuBtb,GAAkB,CACvC,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACdub,EAAqB1b,EACzB,aAAaqY,GAAYlY,EAAK,IAAI,CAAC,EAAA,EAGrCmb,GAAoBnb,CAAI,EACxB6a,GAAc7a,CAAI,EAClBC,EAAcpB,EAAS0c,CAAkB,EAEnC3X,EAAA,MAAM/E,EAAS,KAAK,CAC5B,EAQM2c,GAA4B,CAACxb,EAAeK,IAAkB,CAC5D,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,QAAA3B,EAAS,UAAAqX,EAAW,aAAA4E,CAAA,EAAiB9a,EACvC,CAAE,aAAAyb,EAAc,aAAA7J,CAAiB,EAAAsE,EACjCwF,EAActZ,EAAQvD,EAAS,IAAIiP,CAAW,EAAE,EAChD6N,EAAkBvZ,EAAQvD,EAAS,IAAIsQ,CAAe,EAAE,EAAA;AAGxD,MAAAyM,EAAM/O,GAAUhO,CAAO,EAEvBgd,EAAe3F,IAAc4E,GADlBW,IAAiB7J,EAC4BsE,EAAY0F,EAC1Etb,EAAOub,EAAclP,GAAa3M,EAAK,OAAQuF,EAAc,EAC7DjF,EAAOub,EAAcnP,GAAa1M,EAAK,OAAQuF,EAAc,EAGzDmW,GACFpb,EAAOob,EAAa,WAAW5N,CAAW,GAAI9N,EAAK,UAAU,EAE3D2b,GACFrb,EAAOqb,EAAiB,WAAWxM,CAAe,GAAInP,EAAK,UAAU,CAEzE,EAQMkb,GAAqB,CAAClb,EAAeuY,IAAqB,CAExD,MAAAuD,EAAW,CAAC1D,GAAmBqC,EAAS,EACxC,CAAE,QAAA5b,CAAY,EAAAmB,EAEpBuB,EACE1C,EACAid,EAASvD,EAAU,EAAI,CAAC,EACxBA,GACElX,GAAaxC,EAASid,EAAS,CAAC,CAAC,GAEjC,EAAA,EAEJnJ,GAAgB9T,EAASid,EAASvD,EAAU,EAAI,CAAC,CAAC,CACpD,EAKA,MAAqBqC,WAAgBnc,EAAc,CAkBjD,YAAYC,EAA8BC,EAAkC,CAC1E,MAAMD,EAAQC,CAAM,EA8DtBC,EAAA,mBAAc,IAAM8O,GAAM,KAAK,OAAO,GAEtC9O,EAAA,kBAAa,IAAM,KAAK,QA2CxBA,EAAA,kBAAa,IAAM,KAAK,QAoCxBA,EAAA,cAAS,IAAM,CACbmX,GAAkB,IAAI,CAAA,GAIxBnX,EAAA,cAAS,IAAM,CACP,KAAA,CAAE,QAAAqX,CAAY,EAAA,KAEhBA,GAAW,CAAC+E,GAAO,IAAI,OAAQ,YACzB,KAAK,CAAA,GAoCjBpc,EAAA,mBAAc,CAAC,CAAE,OAAAF,KAAyB,CAClC,KAAA,CAAE,QAAAuX,EAAS,QAAApX,CAAY,EAAA,KAAA;AAI1BoX,GAAWA,EAAQ,SAASvX,CAAqB,GAClDA,IAAWG,GACVH,GAAUG,EAAQ,SAASH,CAAqB,GAIjD,KAAK,KAAK,CACZ,GAQFE,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EAE7B,CAAE,QAAA3B,EAAS,QAAA0E,EAAS,IAAA8E,CAAA,EAAQ,KAC5B,CAAE,QAAAI,CAAY,EAAAlF,EAEd6V,EAAc,GADF,KAAK,OAASf,IACE9U,EAA2B,aAAqB;AAG7EkF,EAAQ,SAAS,QAAQ,IACvB,KAAA,QAAU,CAAC,CAACpI,EAEMoI,EAAQ,MAAM,GAAG,EAEzB,QAAcsT,GAAA,CAAA;AAE3B,GAAIA,IAAOC,GAAiB,CACnB1b,EAAAzB,EAASsO,GAAgB,KAAK,UAAU,EACxC7M,EAAAzB,EAASgH,GAAiB,KAAK,UAAU,EAAA;AAG3CuT,IACI9Y,EAAAzB,EAASiH,GAAiB,KAAK,UAAU,EAChDxF,EAAO2B,EAAYpD,CAAO,EAAGmH,GAAiB,KAAK,YAAaT,EAAc,EAChF,SACSwW,IAAOpb,EAChBL,EAAOzB,EAASkd,EAAK3C,EAA4B,KAAK,WAAnB,KAAK,MAAwB,UACvD2C,IAAOzP,GAAY,CACrBhM,EAAAzB,EAASod,GAAc,KAAK,UAAU,EAAA;AAExC7C,GAAa9Y,EAAOzB,EAASqd,GAAe,KAAK,UAAU,EAAA;AAE5DC,IACK7b,EAAAzB,EAAS8B,EAAiB,KAAK,WAAW,CAErD,CAAA;AAEIyY,GAAe/Q,GACV/H,EAAA+H,EAAK1H,EAAiB,KAAK,UAAU,CAC9C,CACD,EACH,GAvPM,KAAA,CAAE,QAAA9B,CAAY,EAAA,KACd6W,EAAY,KAAK,OAAS2C,GAC1BiB,EAAY5D,EAAYH,GAAgBF,GACxC+G,EAAe1G,EAAY2C,GAAmB/C,GAAA;AAGpDoF,GAAyC2B,GAAsB5c,EAAe4c,EAAMD,CAAY,EAGhG,KAAK,QAAU,GAEf,KAAK,GAAK,GAAG9C,CAAS,IAAIgD,GAAOzd,EAASya,CAAS,CAAC,GAG9C,KAAA,CAAE,QAAA/V,CAAY,EAAA,KAGhB,GAAA,EAAG,CAACA,EAAQ,OAASmS,GAAe,CAACA,GAAa,CAACnS,EAAQ,SAAW,CAExEuD,GAAaqR,GAAiB,CAAE,UAAW,EAAI,CAAA,EAAA;AAI3ClP,GAAapK,EAAS4b,EAAS,GAAK/E,GAAa,OAAOnS,EAAQ,OAAU,UACzD2X,GAAA,KAAM3X,EAAQ,KAAK,EAInC,KAAA,UAAY0W,GAAoBpb,CAAO,EAC5C,KAAK,aAAe,CAAC,SAAU,OAAO,EAAE,KAC1B0d,GAAA9R,EAAgB,KAAK,UAA0B,UAAU,IAAM8R,CAAA,EAExE,KAAK,UACNta,EAAY,KAAK,OAAO,EAAE,KAG9B6W,GAAU,IAAI,EAGd,KAAK,sBAAsB,EAAI,CACjC,CACF,CAKA,IAAI,MAAO,CACF,OAAAT,EACT,CAIA,IAAI,UAAW,CACN,OAAAF,EACT,CASA,MAAO,CACL,KAAM,CAAE,QAAA5U,EAAS,QAAA0S,EAAS,QAAApX,EAAS,UAAAqX,EAAW,aAAA4E,EAAc,GAAA/B,CAAO,EAAA,KAC7D,CAAE,UAAAG,CAAc,EAAA3V,EAChBiZ,EAAW5Y,EAAM,IAAI/E,EAAS,KAAK,EACnC4d,EAAevG,IAAc4E,EAAe5E,EAAY4E,EAExDlX,EAAA,MAAM/E,EAAS,KAAK,EAEtBoX,GAAW,CAACuG,GAAY,CAACxB,GAAO,IAAI,GAChCpX,EAAA,IACJ/E,EACA,IAAM,CACJ,MAAM6d,EAAmB7c,EACvB,WAAWqY,GAAY,KAAK,IAAI,CAAC,EAAA,EAEnCjY,EAAcpB,EAAS6d,CAAgB,EAAA;AAGnC,GAAA,CAACA,EAAiB,iBAAkB,CAEtCpN,GAAY2G,EAASwG,CAAY,EAEjClb,EAAa1C,EAASkc,GAAiB,IAAIhC,CAAE,EAAE,EAE/C,KAAK,OAAO,EACZyC,GAA0B,KAAM,EAAI,EAAA;AAG/Btb,EAAS+V,EAAS9X,CAAS,GAAGmD,EAAS2U,EAAS9X,CAAS,EAAA;AAE1D+a,EACF9Y,EAAqB6V,EAAS,IAAMmF,GAAmB,IAAI,CAAC,KACpC,IAAI,CAChC,CACF,EACA,GACA,IAAA,CAGN,CAIA,MAAO,CACL,KAAM,CAAE,QAAA7X,EAAS,QAAA0S,EAAS,QAAApX,CAAA,EAAY,KAChC,CAAE,UAAAqa,EAAW,MAAAyD,CAAU,EAAApZ,EAEvBK,EAAA,MAAM/E,EAAS,IAAI,EAAA;AAGrBoX,GAAW+E,GAAO,IAAI,GAClBpX,EAAA,IACJ/E,EACA,IAAM,CACJ,MAAM+d,EAAmB/c,EACvB,WAAWqY,GAAY,KAAK,IAAI,CAAC,EAAA,EAEnCjY,EAAcpB,EAAS+d,CAAgB,EAAA;AAGnC,GAAA,CAACA,EAAiB,iBAAkB,CACtC,KAAK,OAAO,EACZzc,EAAY8V,EAAS9X,CAAS,EAC9Bqd,GAA0B,IAAI,EAAA;AAG1BtC,EACF9Y,EAAqB6V,EAAS,IAAMqF,GAAoB,IAAI,CAAC,KACpC,IAAI,CACjC,CACF,EACAqB,EAAQ,GACR,KAAA,CAGN,CAgBA,QAAS,CACD,KAAA,CAAE,QAAAE,CAAY,EAAA,KAAA;AAEfA,IACH,KAAK,sBAAsB,EAAI,EAC/B,KAAK,QAAU,CAACA,EAEpB,CAGA,SAAU,CACF,KAAA,CAAE,QAAA5G,EAAS,QAAA4G,CAAY,EAAA,KAAA;AAEzBA,IACE5G,GAAW+E,GAAO,IAAI,QAAQ,KAAK,EACvC,KAAK,sBAAsB,EAC3B,KAAK,QAAU,CAAC6B,EAEpB,CAGA,eAAgB,CACT,KAAK,aACA,QAAQ,EADC,KAAK,OAAO,CAEjC,CAyEA,SAAU,CACF,KAAA,CAAE,QAAA5G,EAAS,QAAA1S,CAAY,EAAA,KACvB2D,EAAQ,CAAE,GAAG,KAAM,KAAM,KAAK,MAC9ByM,EAAW,IAAM,WAAW,IAAMsH,GAAuB/T,EAAO,IAAM,MAAM,QAAA,CAAS,EAAG,EAAE,EAE5F3D,EAAQ,WAAayX,GAAO9T,CAAK,GACnC,KAAK,QAAQ,MAAQ,EACrB,KAAK,KAAK,EACV9G,EAAqB6V,EAAwBtC,CAAQ,GAE5CA,GAEb,CACF,CA5RE/U,EADmBgc,GACZ,WAAWJ,IAClB5b,EAFmBgc,GAEZ,OAAOD,IACd/b,EAHmBgc,GAGZ,cAAcF,IACrB9b,EAJmBgc,GAIZ,WAAW7E,IClNpB,MAAM+G,GAAkB,IAAIjc,EAAY,KAAKwU,EAAa,iBAAiBA,EAAa,KAElF0H,GAAkCjW,GAAa,CAAC,EAAGqR,GAAiB,CACxE,SAAU3C,GAAeH,EAAa,EACtC,QAAS,GACT,YAAa,GACb,SAAU,wDACZ,CAAC,EAMK2H,GAAsBne,GAAyBY,EAAqBZ,EAASyW,EAAgB,EAK7F2H,GAAuBpe,GAAyB,IAAIqe,GAAQre,CAAO,EAKzE,MAAqBqe,WAAgBtC,EAAQ,CAW3C,YAAYlc,EAA8BC,EAAkC,CAC1E,MAAMD,EAAQC,CAAM,EAgBtBC,EAAA,YAAO,IAAM,CACX,MAAM,KAAK,EAEL,KAAA,CAAE,QAAA2E,EAAS,IAAA8E,CAAQ,EAAA,KAAA;AAErB9E,EAAQ,aAAe8E,GAAK,WAAW,IAAMqF,GAAMrF,CAAG,EAAG,EAAE,CAAA,EApBjE,CAIA,IAAI,MAAO,CACF,OAAAiN,EACT,CAIA,IAAI,UAAW,CACN,OAAAyH,EACT,CAUF,CAlCEne,EADmBse,GACZ,WAAWJ,IAClBle,EAFmBse,GAEZ,OAAOD,IACdre,EAHmBse,GAGZ,cAAcF,IACrBpe,EAJmBse,GAIZ,WAAWnH,IC3CpB,MAAMoH,GAAkB,YCAlBC,GAAqB,YCiCrBC,GAAoB,yBAEpBC,GAAsC,CAC1C,OAAQ,GACR,OAAQ,IACV,EAUMC,GAAwB1e,GAAyBY,EAAuBZ,EAASue,EAAkB,EAKnGI,GAAyB3e,GAAyB,IAAI4e,GAAU5e,CAAO,EAIvE6e,GAAoB7d,EAAuD,eAAesd,EAAe,EAAE,EAS3GQ,GAAoB3d,GAAoB,CAC5C,KAAM,CAAE,OAAAtB,EAAQ,aAAAmd,EAAc,QAAAtY,EAAS,YAAAqa,EAAa,aAAAhM,EAAc,QAAA/S,CAAY,EAAAmB,EACxE,CAAE,OAAAwK,CAAW,EAAAjH,EACbsa,EAAQC,GAASjC,CAA6B,EAE9CkC,EAAQrf,GAAUsf,GAAqB,IAAKtf,CAAM,EAClDuf,EAAepC,EACjBqC,GAAgBrC,CAAY,EAE5BjK,EAEJ5R,EAAK,UAAY6d,EAAShC,EAAwB,QAAWA,EAA6B,UAAA;AAI1F,GAAIkC,IAAUE,IAAiBrM,GAAgBgM,IAAgBG,EAAM,QAAS,CACxE,IAAAI,EACAC,EACAC,EAGJre,EAAK,MAAQ,GACbA,EAAK,QAAU,GACfA,EAAK,aAAeie,EACpBje,EAAK,UAAYA,EAAK,aAAese,GAAgBte,CAAI,EAEzD,CAAC,GAAG+d,CAAK,EAAE,QAAgBQ,GAAA,CAClBJ,EAAA9c,GAAakd,EAAM,MAAM,EAChCH,EACED,GAAQA,EAAK,OAAO,CAAC,IAAM,KAAOA,EAAK,MAAM,EAAE,IAAM,KAAOnf,EAAcmf,EAAMlc,EAAYpD,CAAO,CAAC,EAElGuf,IACGpe,EAAA,MAAM,KAAKue,CAAI,EACpBF,EAAO7S,GAAsB4S,CAAU,EAClCpe,EAAA,QAAQ,MAAM6d,EAAQQ,EAAK,IAAMre,EAAK,UAAYoe,EAAW,WAAa5T,CAAM,EACvF,CACD,EACIxK,EAAA,YAAcA,EAAK,MAAM,MAChC,CACF,EAQMke,GAAmBrC,GAChB/c,EAAc+c,CAAoB,EACpCA,EAA6B,aAC9B1Q,GAAmB0Q,CAAoB,EAAE,aAQzCyC,GAAkB,CAAC,CAAE,QAAAzf,EAAS,aAAAgd,KAC3BiC,GAASjC,CAAoB,EAAKA,EAAwB,YAAcrQ,GAAsB3M,CAAO,EAAE,OAQ1G2f,GAAS9f,GAAwB,CACrC,CAAC,GAAGsf,GAAqB,IAAKtf,CAAM,CAAC,EAAE,QAAgB+f,GAAA,CACjDve,EAASue,EAAM7d,CAAW,GAAGT,EAAYse,EAAM7d,CAAW,CAAA,CAC/D,CACH,EAQM8d,GAAW,CAAC1e,EAAiBye,IAAsB,CACjD,KAAA,CAAE,OAAA/f,EAAQ,QAAAG,CAAY,EAAAmB,EAAA;AAGxBlB,EAAcJ,CAAM,GAAG8f,GAAM9f,CAAM,EAEvCsB,EAAK,WAAaye,EAClBnd,EAASmd,EAAM7d,CAAW,EAG1B,MAAM+d,EAAyB,CAAA,EAC/B,IAAIC,EAAaH,EACV,KAAAG,IAAepQ,GAAgB3P,CAAO,GAC3C+f,EAAaA,EAAW,eACpB1e,EAAS0e,EAAY,KAAK,GAAK1e,EAAS0e,EAAY,eAAe,IACrED,EAAQ,KAAKC,CAAU,EAI3BD,EAAQ,QAAoBE,GAAA,CAC1B,MAAMC,EAAaD,EAAS,uBAAA;AAGxBC,GAAc,CAAC5e,EAAS4e,EAAYle,CAAW,GACjDU,EAASwd,EAAYle,CAAW,CAClC,CACD,EAGD8c,GAAkB,cAAgBe,EAClCxe,EAAcpB,EAAS6e,EAAiB,CAC1C,EAKA,MAAqBD,WAAkBhf,EAAc,CAmBnD,YAAYC,EAA8BC,EAAoC,CAC5E,MAAMD,EAAQC,CAAM,EAuCtBC,EAAA,eAAU,IAAM,CACR,KAAA,CAAE,OAAAF,CAAW,EAAA,KAAA;AAInB,GAAII,EAAcJ,CAAM,GAAKA,EAAO,aAAe,EAAG,CACpDif,GAAiB,IAAI,EAErB,KAAM,CAAE,UAAAoB,EAAW,UAAAC,EAAW,YAAApB,EAAa,MAAAqB,EAAO,WAAAzb,CAAe,EAAA,KAEjE,GAAIub,GAAaC,EAAW,CACpB,MAAAE,EAAgBD,EAAMrB,EAAc,CAAC,EAAA;AAGvCpa,IAAe0b,GACjBR,GAAS,KAAMQ,CAAa,EAE9B,MACF,CAEM,KAAA,CAAE,QAAAC,CAAY,EAAA,KAAA;AAGhB,GAAA3b,GAAcub,EAAYI,EAAQ,CAAC,GAAKA,EAAQ,CAAC,EAAI,EAAG,CAC1D,KAAK,WAAa,KAAA;AAEdzgB,MAAcA,CAAM,EACxB,MACF,CAEMugB,EAAA,QAAQ,CAACR,EAAMtkB,IAAM,CAEvBqJ,IAAeib,GACfM,GAAaI,EAAQhlB,CAAC,IACrB,OAAOglB,EAAQhlB,EAAI,CAAC,EAAM,KAAe4kB,EAAYI,EAAQhlB,EAAI,CAAC,IAEnEukB,GAAS,KAAMD,CAAI,CACrB,CACD,CACH,CAAA,GAQF7f,EAAA,6BAAyByB,GAAkB,EAC1BA,EAAME,EAAcC,GAC5B,KAAK,aAA6BkM,GAAa,KAAK,QAASnH,EAAc,CAAA,GArF5E,KAAA,CAAE,QAAA1G,EAAS,QAAA0E,CAAY,EAAA,KAG7B,KAAK,OAASvE,EAAcuE,EAAQ,OAAgCtB,EAAYpD,CAAO,CAAC,EAGpF,KAAK,SAEP,KAAK,aAAeA,EAAQ,aAAeA,EAAQ,aAAeA,EAAUgO,GAAUhO,CAAO,EACxF,KAAA,aAAeqf,GAAgB,KAAK,YAAY,EAGrD,KAAK,sBAAsB,EAAI,EAE/B,KAAK,QAAQ,EAEjB,CAMA,IAAI,MAAO,CACF,OAAAd,EACT,CAIA,IAAI,UAAW,CACN,OAAAE,EACT,CA2DA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CAnHE1e,EADmB6e,GACZ,WAAWJ,IAClBze,EAFmB6e,GAEZ,OAAOD,IACd5e,EAHmB6e,GAGZ,cAAcF,ICxLvB,MAAM6B,GAAY,MCAZC,GAAe,MCqCfC,GAAc,IAAIze,EAAY,KAAKue,EAAS,KAM5CG,GAAkB1gB,GAAyBY,EAAiBZ,EAASwgB,EAAY,EAGjFG,GAAmB3gB,GAAyB,IAAI4gB,GAAI5gB,CAAO,EAQ3D6gB,GAAe7f,EAA2C,WAAWuf,EAAS,EAAE,EAChFO,GAAgB9f,EAA2C,YAAYuf,EAAS,EAAE,EAClFQ,GAAe/f,EAA2C,WAAWuf,EAAS,EAAE,EAChFS,GAAiBhgB,EAA2C,aAAauf,EAAS,EAAE,EAapFU,OAA+C,IAS/CC,GAAiB/f,GAAc,CAC7B,KAAA,CAAE,WAAAggB,EAAY,IAAAC,CAAQ,EAAAjgB,EAAA;AAGxBggB,GAAc9f,EAAS8f,EAAY7Y,EAAe,IACpD6Y,EAAW,MAAM,OAAS,GAC1B7f,EAAY6f,EAAY7Y,EAAe,GACzC;AAGI8Y,GAAWrc,EAAA,MAAMqc,CAAG,CAC1B,EAOMC,GAAkBlgB,GAAc,CACpC,KAAM,CAAE,QAAAnB,EAAS,WAAAmhB,EAAY,QAASG,EAAa,IAAAF,CAAQ,EAAAjgB,EACrD,CAAE,IAAAogB,CAAA,EAASthB,EAAcmhB,CAAG,GAAKH,GAAW,IAAIG,CAAG,GAAM,CAAE,IAAK,IAAK,EAAA;AAAG;AAG9E,GAAID,GAAcG,GAAejgB,EAASigB,EAAajiB,CAAS,EAAG,CACjE,KAAM,CAAE,cAAAmiB,EAAe,WAAAC,CAAW,EAAIR,GAAW,IAAIjhB,CAAO,GAAK,CAAE,cAAe,EAAG,WAAY,CAAE,EAAA;AAAG;AAElGwhB,IAAkBC,EAEpB,WAAW,IAAM,CACJN,EAAA,MAAM,OAAS,GAAGM,CAAU,KACvCtZ,GAAOgZ,CAAU,EACjB5f,EAAqB4f,EAAY,IAAMD,GAAc/f,CAAI,CAAC,GACzD,EAAE,EAEL+f,GAAc/f,CAAI,CAEX,MAAAigB,GAAWrc,EAAA,MAAMqc,CAAG,EAE/BN,GAAc,cAAgBS,EAE9BngB,EAAcpB,EAAS8gB,EAAa,CACtC,EAOMY,GAAkBvgB,GAAc,CACpC,KAAM,CAAE,QAAAnB,EAAS,QAASshB,EAAa,WAAAH,EAAY,IAAAC,CAAQ,EAAAjgB,EACrD,CAAE,IAAAogB,EAAK,QAAA7H,CAAQ,EAAK0H,GAAOH,GAAW,IAAIG,CAAG,GAAM,CAEvD,IAAK,KACL,QAAS,IAAA,EAEX,IAAII,EAAgB,EAAA;AAGhBL,GAAcG,GAAejgB,EAASigB,EAAajiB,CAAS,IAC9D,CAACqa,EAAS4H,CAAW,EAAE,QAAa1mB,GAAA,CAAA;AAE9BqF,EAAcrF,CAAC,GAAG6H,EAAS7H,EAAG,iBAAiB,CAAA,CACpD,EACe4mB,EAAAvhB,EAAcyZ,CAAO,EACjCA,EAAQ,aAER,GAINmH,GAAa,cAAgBU,EAC7BP,GAAe,cAAgBhhB,EAC/BoB,EAAcpB,EAAS6gB,EAAY,EAAA;AAG/B,GAAA,CAACA,GAAa,iBAAkB,CAAA;AAE9BS,GAAsB7e,EAAA6e,EAAavf,CAAW,EAAA;AAE9C2X,GAAqBpY,EAAAoY,EAAS3X,CAAW,EAAA;AAG7C,GAAIof,GAAcG,GAAejgB,EAASigB,EAAajiB,CAAS,EAAG,CACjE,MAAMoiB,EAAaH,EAAY,aAC/BL,GAAW,IAAIjhB,EAAS,CACtB,cAAAwhB,EACA,WAAAC,EACA,IAAK,KACL,QAAS,IAAA,CACV,EAEDhf,EAAS0e,EAAY7Y,EAAe,EACzB6Y,EAAA,MAAM,OAAS,GAAGK,CAAa,KAC1CrZ,GAAOgZ,CAAU,EACjB,CAACzH,EAAS4H,CAAW,EAAE,QAAa1mB,GAAA,CAAA;AAE9BA,GAAe0G,EAAA1G,EAAG,iBAAiB,CAAA,CACxC,CACH,CAEA,GAAI0mB,GAAeA,GAAejgB,EAASigB,EAAajiB,CAAS,EAC/D,WAAW,IAAM,CACfoD,EAAS6e,EAAahiB,CAAS,EAC/BiC,EAAqB+f,EAAa,IAAM,CACtCD,GAAelgB,CAAI,CAAA,CACpB,GACA,CAAC,MACC,CAAA;AAEDmgB,GAAsB7e,EAAA6e,EAAahiB,CAAS,EAChD+hB,GAAelgB,CAAI,CACrB,CAAA;AAGIogB,GAAmBngB,EAAAmgB,EAAKP,EAAc,CAC5C,CACF,EAQMW,GAAgBxgB,GAAwE,CACtF,KAAA,CAAE,IAAAigB,CAAQ,EAAAjgB,EAAA;AAEZ,GAAA,CAAClB,EAAcmhB,CAA8B,EAC/C,MAAO,CAAE,IAAK,KAAM,QAAS,IAAK,EAG9B,MAAAQ,EAAapa,GAAuBzF,EAAaqf,CAAkB,EACzE,IAAIG,EAA0B,KAAA;AAE1BK,EAAW,SAAW,GAAK,CAACnX,GAAgB,KAAK7P,GAAKyG,EAASugB,EAAW,CAAC,EAAE,cAA8BhnB,CAAC,CAAC,EAC/G,CAAC2mB,CAAG,EAAIK,EACCA,EAAW,OAAS,IACvBL,EAAAK,EAAWA,EAAW,OAAS,CAAC,GAExC,MAAMlI,EAAUzZ,EAAcshB,CAAkB,EAAIte,EAAiBse,CAAkB,EAAI,KACpF,MAAA,CAAE,IAAAA,EAAK,QAAA7H,EAChB,EAQMmI,GAAqB7hB,GAA8C,CAAA;AAEvE,GAAI,CAACC,EAAcD,CAAO,EAAU,OAAA,KAC9B,MAAA8hB,EAAWve,EAAQvD,EAAS,IAAIyK,GAAgB,KAAK,IAAI,CAAC,EAAE,EAC3D,OAAAqX,EAAW3hB,EAAc,IAAIsK,GAAgB,CAAC,CAAC,UAAWqX,CAAQ,EAAI,IAC/E,EASMC,GAAmBznB,GAAa,CAC9B,MAAA6G,EAAOuf,GAAepmB,EAAE,MAAqB,EAAA;AAG/C6G,IACF7G,EAAE,eAAe,EACjB6G,EAAK,KAAK,EAEd,EAKA,MAAqByf,WAAYhhB,EAAc,CAW7C,YAAYC,EAA8B,CACxC,MAAMA,CAAM,EAmHdE,EAAA,6BAAyByB,GAAkB,EAC1BA,EAAME,EAAcC,GAC5B,KAAK,QAASG,EAAiBigB,EAAe,CAAA,GAlH/C,KAAA,CAAE,QAAA/hB,CAAY,EAAA,KACd0Z,EAAUzW,EAAiBjD,CAAO,EAAA;AAIxC,GAAI0Z,EAAS,CACL,MAAA0H,EAAM7d,EAAQvD,EAAS,MAAM,EAC7BqX,EAAY9T,EAAQmW,EAAS,cAAc,EAEjD,KAAK,IAAM0H,EACX,KAAK,QAAU1H,EACf,KAAK,WAAarC,EAGb,KAAA,SAAWwK,GAAkB7hB,CAAO,EAIzC,KAAM,CAAE,IAAAuhB,CAAA,EAAQI,GAAa,IAAI,EAC7B,GAAAP,GAAO,CAACG,EAAK,CACT,MAAAS,EAAW7hB,EAAcsgB,GAAaW,CAAG,EACzCa,EAAkBD,GAAY/e,EAAiB+e,CAAQ,EAAA;AAGzDC,IACFxf,EAASuf,EAAUjgB,CAAW,EAC9BU,EAASwf,EAAiB3iB,CAAS,EACnCmD,EAASwf,EAAiBlgB,CAAW,EACxBW,EAAA1C,EAASkiB,GAAc,MAAM,EAE9C,CAGA,KAAK,sBAAsB,EAAI,CACjC,CACF,CAKA,IAAI,MAAO,CACF,OAAA1B,EACT,CAKA,MAAO,CACL,KAAM,CAAE,QAAAxgB,EAAS,QAASshB,EAAa,IAAAF,EAAK,SAAAU,CAAa,EAAA,KAAA;AAGrD,GAAA,EAAEV,GAAOrc,EAAM,IAAIqc,CAAG,IAAM,CAAC/f,EAASrB,EAAS+B,CAAW,EAAG,CAC/D,KAAM,CAAE,IAAAwf,EAAK,QAAA7H,CAAQ,EAAIiI,GAAa,IAAI,EAAA;AAGtCP,GACSH,GAAA,IAAIG,EAAK,CAAE,IAAAG,EAAK,QAAA7H,EAAS,cAAe,EAAG,WAAY,CAAA,CAAG,EAIvEqH,GAAa,cAAgB/gB,EAAA;AAGzB,GAAAC,EAAcshB,CAAG,EAAG,CACtBngB,EAAcmgB,EAAoBR,EAAY,EAAA;AAE1C,GAAA,CAACA,GAAa,iBAAkB,CAClCte,EAASzC,EAAS+B,CAAW,EAChBW,EAAA1C,EAASkiB,GAAc,MAAM,EAE1C,MAAMC,EAAiBliB,EAAcshB,CAAG,GAAKM,GAAkBN,CAAG,EAC9DY,GAAkB9gB,EAAS8gB,EAAgBpgB,CAAW,GACxDT,EAAY6gB,EAAgBpgB,CAAW,EACzC;AAGA,GAAIqf,EAAK,CACP,MAAMgB,EAAY,IAAM,CAAA;AAElBb,IACFjgB,EAAYigB,EAAKxf,CAAW,EACfW,EAAA6e,EAAKW,GAAc,OAAO,GAErCJ,GAAY,CAACzgB,EAASygB,EAAU/f,CAAW,GAC7CU,EAASqf,EAAU/f,CAAW,CAChC,EAGE2X,IAAYrY,EAASqY,EAASra,CAAS,GAAMiiB,GAAejgB,EAASigB,EAAajiB,CAAS,GACvF0F,EAAA,IAAIqc,EAAKgB,EAAW,CAAC,EACZA,EAAA,CACnB,CAAA;AAGI1I,IACFpY,EAAYoY,EAASpa,CAAS,EAC1B+B,EAASqY,EAASra,CAAS,EAC7BkC,EAAqBmY,EAAS,IAAMgI,GAAe,IAAI,CAAC,EAExDA,GAAe,IAAI,EAGzB,CACF,CACF,CACF,CAaA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CAxIE3hB,EADmB6gB,GACZ,WAAWH,IAClB1gB,EAFmB6gB,GAEZ,OAAOD,IACd5gB,EAHmB6gB,GAGZ,cAAcF,IClQvB,MAAM2B,EAAc,QCAdC,GAAiB,QCoCjBC,GAAgB,IAAIF,CAAW,GAC/BG,GAAuB,IAAIjjB,EAAa,KAAK8iB,CAAW,KACxDI,GAAsB,IAAIzgB,EAAY,KAAKqgB,CAAW,KACtDK,GAAe,UAEfC,GAAY,OAEZC,GAAgB,CACpB,UAAW,GACX,SAAU,GACV,MAAO,GACT,EAMMC,GAAoB7iB,GAAyBY,EAAmBZ,EAASsiB,EAAc,EAKvFQ,GAAqB9iB,GAAyB,IAAI+iB,GAAM/iB,CAAO,EAI/DgjB,GAAiBhiB,EAAqD,WAAWqhB,CAAW,EAAE,EAC9FY,GAAkBjiB,EAAqD,YAAYqhB,CAAW,EAAE,EAChGa,GAAiBliB,EAAqD,WAAWqhB,CAAW,EAAE,EAC9Fc,GAAmBniB,EAAqD,aAAaqhB,CAAW,EAAE,EASlGe,GAAqBjiB,GAAgB,CACnC,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EAC7BG,EAAYtB,EAAS0iB,EAAY,EAC3B3d,EAAA,MAAM/E,EAAS0iB,EAAY,EAEjCthB,EAAcpB,EAASijB,EAAe,EAAA;AAElCve,EAAQ,UACJK,EAAA,IAAI/E,EAAS,IAAMmB,EAAK,OAAQuD,EAAQ,MAAO2d,CAAW,CAEpE,EAOMgB,GAAqBliB,GAAgB,CACnC,KAAA,CAAE,QAAAnB,CAAY,EAAAmB,EACpBG,EAAYtB,EAAS0iB,EAAY,EACjCphB,EAAYtB,EAASV,CAAS,EAC9BmD,EAASzC,EAAS2iB,EAAS,EACrB5d,EAAA,MAAM/E,EAASqiB,CAAW,EAChCjhB,EAAcpB,EAASmjB,EAAgB,CACzC,EAOMG,GAAaniB,GAAgB,CAC3B,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EAC7BsB,EAASzC,EAAS0iB,EAAY,EAE1Bhe,EAAQ,WACVyD,GAAOnI,CAAO,EACduB,EAAqBvB,EAAS,IAAMqjB,GAAkBliB,CAAI,CAAC,GAE3DkiB,GAAkBliB,CAAI,CAE1B,EAOMoiB,GAAapiB,GAAgB,CAC3B,KAAA,CAAE,QAAAnB,EAAS,QAAA0E,CAAY,EAAAvD,EACvB4D,EAAA,IACJ/E,EACA,IAAM,CACJsB,EAAYtB,EAAS2iB,EAAS,EAC9Bxa,GAAOnI,CAAO,EACdyC,EAASzC,EAASV,CAAS,EAC3BmD,EAASzC,EAAS0iB,EAAY,EAE1Bhe,EAAQ,UACVnD,EAAqBvB,EAAS,IAAMojB,GAAkBjiB,CAAI,CAAC,EAE3DiiB,GAAkBjiB,CAAI,CAE1B,EACA,GACAuhB,EAAA,CAEJ,EASMc,GAAqBlpB,GAAa,CAChC,KAAA,CAAE,OAAAuF,CAAW,EAAAvF,EAEbsP,EAAU/J,GAAU0D,EAAQ1D,EAAuB4iB,EAAmB,EACtEziB,EAAU4J,GAAW3G,EAAiB2G,CAAO,EAC7CzI,EAAOnB,GAAW6iB,GAAiB7iB,CAAO,EAAA;AAGhD,GAAImB,EAAM,CAAA;AAEJyI,GAAWA,EAAQ,UAAY,OAAO,iBAC1CzI,EAAK,cAAgByI,EACrBzI,EAAK,KAAK,CACZ,CACF,EAQMsiB,GAA2BnpB,GAAkB,CACjD,MAAM0F,EAAU1F,EAAE,OACZ6G,EAAO0hB,GAAiB7iB,CAAO,EAC/B,CAAE,KAAAoO,EAAM,cAAAqF,CAAkB,EAAAnZ,EAAA;AAG5B6G,GAAQnB,IAAYyT,GAAiB,CAACzT,EAAQ,SAASyT,CAAqB,IAC1E,CAACzM,GAAiBoW,EAAY,EAAE,SAAShP,CAAI,EACzCrJ,EAAA,MAAM/E,EAASqiB,CAAW,EAE1Btd,EAAA,IAAI/E,EAAS,IAAMmB,EAAK,OAAQA,EAAK,QAAQ,MAAOkhB,CAAW,EAG3E,EAKA,MAAqBU,WAAcnjB,EAAc,CAa/C,YAAYC,EAA8BC,EAAgC,CACxE,MAAMD,EAAQC,CAAM,EA2CtBC,EAAA,YAAO,IAAM,CACL,KAAA,CAAE,QAAAC,EAAS,QAAA0jB,CAAY,EAAA,KAAA;AAGzB1jB,GAAW,CAAC0jB,IACdtiB,EAAcpB,EAASgjB,EAAc,EAChCA,GAAe,kBAClBO,GAAU,IAAI,EAElB,GAIFxjB,EAAA,YAAO,IAAM,CACL,KAAA,CAAE,QAAAC,EAAS,QAAA0jB,CAAY,EAAA,KAAA;AAGzB1jB,GAAW0jB,IACbtiB,EAAcpB,EAASkjB,EAAc,EAChCA,GAAe,kBAClBI,GAAU,IAAI,EAElB,GAQFvjB,EAAA,6BAAyByB,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAcC,EAC7B,CAAE,QAAA3B,EAAS,SAAAqJ,EAAU,QAAAzH,EAAS,QAAA8C,EAAS,KAAAif,CAAS,EAAA,KAAA;AAGlD/hB,GACKH,EAAAG,EAASE,EAAiB6hB,CAAI,EACvC;AAGIjf,EAAQ,UACV,CAAC0Y,GAAcC,GAAerW,GAAiBC,EAAe,EAAE,QAC9D3M,GAAAmH,EAAOzB,EAAS1F,EAAGmpB,EAAuB,CAAA,EAE9C;AAEIpa,EAAS,QACXA,EAAS,QAAeG,GAAA/H,EAAO+H,EAAK1H,EAAiB0hB,EAAiB,CAAC,CACzE,GA1FM,KAAA,CAAE,QAAAxjB,EAAS,QAAA0E,CAAY,EAAA,KAGzBA,EAAQ,WAAa,CAACrD,EAASrB,EAASX,CAAS,EACnDoD,EAASzC,EAASX,CAAS,EAClB,CAACqF,EAAQ,WAAarD,EAASrB,EAASX,CAAS,GAC1DiC,EAAYtB,EAASX,CAAS,EAI3B,KAAA,QAAUc,EAAcqiB,GAAsBxiB,CAAO,EAGrD,KAAA,SAAW,CAAC,GAAGuF,EAAiBkd,GAAqBrf,EAAYpD,CAAO,CAAC,CAAC,EAAE,OAC/EwJ,GAAOvG,EAAiBuG,CAAG,IAAMxJ,CAAA,EAInC,KAAK,sBAAsB,EAAI,CACjC,CAIA,IAAI,MAAO,CACF,OAAAsiB,EACT,CAIA,IAAI,UAAW,CACN,OAAAM,EACT,CAIA,IAAI,SAAU,CACL,OAAAvhB,EAAS,KAAK,QAAS/B,CAAS,CACzC,CAyDA,SAAU,CACF,KAAA,CAAE,QAAAU,EAAS,QAAA0jB,CAAY,EAAA,KAC7B,KAAK,sBAAsB,EACrB3e,EAAA,MAAM/E,EAASqiB,CAAW,EAE5BqB,GACFpiB,EAAYtB,EAASV,CAAS,EAEhC,MAAM,QAAQ,CAChB,CACF,CAtHES,EADmBgjB,GACZ,WAAWR,IAClBxiB,EAFmBgjB,GAEZ,OAAOD,IACd/iB,EAHmBgjB,GAGZ,cAAcF,ICjLvB,MAAMe,OAAqB,IA8B3B,CAAC9iB,GAAOwB,GAAQ0B,GAAU8E,GAAU+B,GAAU2H,GAAO8C,GAAW+I,GAASO,GAAWgC,GAAKmC,GAAOhH,EAAO,EAAE,WACvG6H,GAAe,IAAIhpB,EAAE,UAAU,KAAMA,CAAC,CACxC,EAQA,MAAMipB,GAAuB,CAC3B/O,EACAgP,IACG,CACH,CAAC,GAAGA,CAAU,EAAE,QAAalmB,GAAAkX,EAASlX,CAAC,CAAC,CAC1C,EAQMmmB,GAAyB,CAAIC,EAAmBC,IAAwB,CACtE,MAAAC,EAAW7jB,GAAK,UAAU2jB,CAAS,EAErCE,GACD,CAAA,GAAGA,CAAQ,EAAE,QAAQ,CAAC,CAAClkB,EAASmkB,CAAQ,IAAM,CACzCF,EAAQ,SAASjkB,CAAO,GACzBmkB,EAAyC,QAAQ,CACpD,CACD,CAEL,EAOaC,GAAgBH,GAAyB,CACpD,MAAMI,EAASJ,GAAWA,EAAQ,SAAWA,EAAU,SACjDK,EAAiB,CAAC,GAAGnF,GAAqB,IAAKkF,CAAM,CAAC,EAE5DT,GAAe,QAAcW,GAAA,CACrB,KAAA,CAAE,KAAAC,EAAM,SAAAC,CAAa,EAAAF,EAC3BV,GACEW,EACAF,EAAe,OAAO1E,GAAQjY,GAAQiY,EAAM6E,CAAQ,CAAC,CAAA,CACvD,CACD,CACH,EAOaC,GAAiBT,GAAyB,CACrD,MAAMI,EAASJ,GAAWA,EAAQ,SAAWA,EAAU,SAEvDL,GAAe,QAAgBe,GAAA,CACNZ,GAAAY,EAAK,UAAU,KAAMN,CAAM,CAAA,CACnD,CACH,EAGI,SAAS,KAAmBD,KAE9B1iB,EAAY,SAAU,mBAAoB,IAAM0iB,GAAA,EAAgB,CAC9D,KAAM,EAAA,CACP","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/bootstrap-native.d.ts b/dist/bootstrap-native.d.ts index ec928054..e9211fb9 100644 --- a/dist/bootstrap-native.d.ts +++ b/dist/bootstrap-native.d.ts @@ -20,7 +20,7 @@ declare class BaseComponent { /** Creates a new Alert instance. */ export declare class Alert extends BaseComponent { static selector: string; - static init: (element: HTMLElement) => T; + static init: (element: HTMLElement) => Alert; static getInstance: (element: HTMLElement) => Alert | null; dismiss: HTMLElement | null; constructor(target: HTMLElement | string); @@ -60,7 +60,7 @@ export declare class Button extends BaseComponent { * * @param e usually `click` Event object */ - toggle: (e: Event) => void; + toggle: (e?: Event) => void; /** * Toggles on/off the `click` event listener. * @@ -134,7 +134,7 @@ export declare class Carousel extends BaseComponent { dispose(): void; } export interface CollapseOptions extends BaseOptions { - parent: HTMLElement | null; + parent: string | HTMLElement | null; } /** Returns a new `Colapse` instance. */ export declare class Collapse extends BaseComponent { diff --git a/dist/bootstrap-native.js b/dist/bootstrap-native.js index efe8ec72..d9300832 100644 --- a/dist/bootstrap-native.js +++ b/dist/bootstrap-native.js @@ -1,2 +1,186 @@ -var BSN=function(H){"use strict";var Vc=Object.defineProperty;var Kc=(H,it,lt)=>it in H?Vc(H,it,{enumerable:!0,configurable:!0,writable:!0,value:lt}):H[it]=lt;var d=(H,it,lt)=>Kc(H,typeof it!="symbol"?it+"":it,lt);const it="aria-describedby",lt="aria-expanded",Se="aria-hidden",He="aria-modal",_s="aria-pressed",Ue="aria-selected",Bo="DOMContentLoaded",qe="focus",Qe="focusin",Bs="focusout",Pe="keydown",Ro="keyup",N="click",Rs="mousedown",Wo="hover",De="mouseenter",Ze="mouseleave",Fo="pointerdown",jo="pointermove",zo="pointerup",xe="resize",Ae="scroll",Ge="touchstart",Vo="dragstart",Je="ArrowDown",ts="ArrowUp",Ws="ArrowLeft",Fs="ArrowRight",es="Escape",Ko="transitionDuration",Xo="transitionDelay",ss="transitionend",js="transitionProperty",Yo=navigator.userAgentData,Le=Yo,{userAgent:Uo}=navigator,Ie=Uo,zs=/iPhone|iPad|iPod|Android/i;Le?Le.brands.some(t=>zs.test(t.brand)):zs.test(Ie);const Vs=/(iPhone|iPod|iPad)/,qo=Le?Le.brands.some(t=>Vs.test(t.brand)):Vs.test(Ie);Ie&&Ie.includes("Firefox");const{head:ke}=document;["webkitPerspective","perspective"].some(t=>t in ke.style);const Qo=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Zo=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},Go=(t,s,e,n)=>{const o=i=>{(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Zo(t,s,o,n))};Qo(t,s,o,n)},le=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});Go(document,Bo,le,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in ke.style),["webkitAnimation","animation"].some(t=>t in ke.style),["webkitTransition","transition"].some(t=>t in ke.style);const ct=(t,s)=>t.getAttribute(s),Ne=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),f=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},h=(t,s)=>t.classList.contains(s),de=t=>t!=null&&typeof t=="object"||!1,A=t=>de(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>A(t)&&t.nodeType===1||!1,jt=new Map,Lt={data:jt,set:(t,s,e)=>{T(t)&&(jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e))},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=Lt.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=Lt.getAllFor(s);!e||!T(t)||(e.delete(t),e.size===0&&jt.delete(s))}},F=(t,s)=>Lt.get(t,s),he=t=>typeof t=="string"||!1,ns=t=>de(t)&&t.constructor.name==="Window"||!1,Ks=t=>A(t)&&t.nodeType===9||!1,E=t=>ns(t)?t.document:Ks(t)?t:A(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(he(t))return E().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},Jo=t=>{const s=z(t,js),e=z(t,Xo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},zt=t=>{const s=z(t,js),e=z(t,Ko),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},P=(t,s)=>{let e=0;const n=new Event(ss),o=zt(t),i=Jo(t);if(o){const c=a=>{a.target===t&&(s.apply(t,[a]),t.removeEventListener(ss,c),e=1)};t.addEventListener(ss,c),setTimeout(()=>{e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Xs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),Vt=t=>t.toLowerCase(),ti=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},l="title";return Oe(i).forEach(([r,g])=>{const p=typeof r=="string"&&r.includes(n)?r.replace(n,"").replace(/[A-Z]/g,v=>Vt(v)):r;a[p]=Xs(g)}),Oe(o).forEach(([r,g])=>{o[r]=Xs(g)}),Oe(s).forEach(([r,g])=>{r in o?c[r]=o[r]:r in a?c[r]=a[r]:c[r]=r===l?ct(t,l):g}),c},Ys=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});return de(s)&&dt(e,s),e},tt={passive:!0},It=t=>t.offsetHeight,L=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&he(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},os=t=>de(t)&&t.constructor.name==="Map"||!1,ei=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{T(t)&&(n&&n.length?(bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))):bt.set(t,setTimeout(s,e)))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&os(e)?e.get(s)||null:ei(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);s&&s.length&&os(e)?(clearTimeout(e.get(s)),e.delete(s),e.size===0&&bt.delete(t)):(clearTimeout(e),bt.delete(t))}},fe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let l=1,r=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;l=g>0?Math.round(e)/g:1,r=p>0?Math.round(n)/p:1}return{width:e/l,height:n/r,top:o/r,right:i/l,bottom:c/r,left:a/l,x:a/l,y:o/r}},wt=t=>E(t).body,ft=t=>E(t).documentElement,Us=t=>A(t)&&t.constructor.name==="ShadowRoot"||!1,si=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||A(t)&&t.parentNode||Us(t)&&t.host||ft(t);let qs=0,Qs=0;const Kt=new Map,Zs=(t,s)=>{let e=s?qs:Qs;if(s){const n=Zs(t),o=Kt.get(n)||new Map;Kt.has(n)||Kt.set(n,o),os(o)&&!o.has(s)?(o.set(s,e),qs+=1):e=o.get(s)}else{const n=t.id||t;Kt.has(n)?e=Kt.get(n):(Kt.set(n,e),Qs+=1)}return e},Xt=t=>{var s;return t?Ks(t)?t.defaultView:A(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},ni=t=>Array.isArray(t)||!1,Gs=t=>{if(!A(t))return!1;const{top:s,bottom:e}=fe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},oi=t=>typeof t=="function"||!1,ii=t=>de(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",ci=t=>A(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,D=(t,s)=>T(t)?t:(A(s)?s:E()).querySelector(t),is=(t,s)=>(A(s)?s:E()).getElementsByTagName(t),et=(t,s)=>(A(s)?s:E()).querySelectorAll(t),gt=(t,s)=>(s&&A(s)?s:E()).getElementsByClassName(t),Js=(t,s)=>t.matches(s),Yt={},tn=t=>{const{type:s,currentTarget:e}=t;[...Yt[s]].forEach(([n,o])=>{e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{Yt[s]||(Yt[s]=new Map);const o=Yt[s];o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n),c||t.addEventListener(s,tn,n)},B=(t,s,e,n)=>{const o=Yt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;i&&i.has(e)&&i.delete(e),o&&(!i||!i.size)&&o.delete(t),(!o||!o.size)&&delete Yt[s],(!i||!i.size)&&t.removeEventListener(s,tn,a)},W="fade",m="show",Me="data-bs-dismiss",_e="alert",en="Alert",ai="5.0.14";class st{constructor(s,e){d(this,"_toggleEventListeners",()=>{});const n=D(s);if(!n)throw he(s)?Error(`${this.name} Error: "${s}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=Lt.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Ys(this.defaults).length?ti(n,this.defaults,e||{},"bs"):{},Lt.set(n,this.name,this)}get version(){return ai}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){Lt.remove(this.element,this.name),Ys(this).forEach(s=>{delete this[s]})}}const ri=`.${_e}`,li=`[${Me}="${_e}"]`,di=t=>F(t,en),hi=t=>new Ut(t),sn=$(`close.bs.${_e}`),fi=$(`closed.bs.${_e}`),nn=t=>{const{element:s}=t;w(s,fi),t._toggleEventListeners(),t.dispose(),s.remove()};class Ut extends st{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;e&&h(e,m)&&(w(e,sn),sn.defaultPrevented||(b(e,m),h(e,W)?P(e,()=>nn(this)):nn(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;o&&n(o,N,i)});this.dismiss=D(li,this.element),this._toggleEventListeners(!0)}get name(){return en}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",ri),d(Ut,"init",hi),d(Ut,"getInstance",di);const C="active",at="data-bs-toggle",gi="button",on="Button",pi=`[${at}="${gi}"]`,ui=t=>F(t,on),mi=t=>new qt(t);class qt extends st{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!h(n,"disabled")&&!ct(n,"disabled")&&((o?b:f)(n,C),O(n,_s,o?"false":"true"),this.isActive=h(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=h(n,C),O(n,_s,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return on}dispose(){this._toggleEventListeners(),super.dispose()}}d(qt,"selector",pi),d(qt,"init",mi),d(qt,"getInstance",ui);const cs="data-bs-target",kt="carousel",cn="Carousel",an="data-bs-parent",vi="data-bs-container",V=t=>{const s=[cs,an,vi,"href"],e=E(t);return s.map(n=>{const o=ct(t,n);return o?n===an?M(t,o):D(o,e):null}).filter(n=>n)[0]},ge=`[data-bs-ride="${kt}"]`,Q=`${kt}-item`,as="data-bs-slide-to",$t="data-bs-slide",Tt="paused",rn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>F(t,cn),bi=t=>new Qt(t);let pe=0,Be=0,rs=0;const ls=$(`slide.bs.${kt}`),ds=$(`slid.bs.${kt}`),ln=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;if(t.isAnimating){const c=fs(t),a=e==="left"?"next":"prev",l=e==="left"?"start":"end";f(o[s],C),b(o[s],`${Q}-${a}`),b(o[s],`${Q}-${l}`),b(o[c],C),b(o[c],`${Q}-${l}`),w(n,ds),u.clear(n,$t),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function wi(){const t=pt(this);t&&!t.isPaused&&!u.get(this,Tt)&&f(this,Tt)}function Ei(){const t=pt(this);t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function $i(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=+(ct(this,as)||0);this&&!h(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Ti(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=ct(this,$t);n==="next"?e.next():n==="prev"&&e.prev()}}const yi=({code:t,target:s})=>{const e=E(s),[n]=[...et(ge,e)].filter(i=>Gs(i)),o=pt(n);if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n);t===(i?Fs:Ws)?o.prev():t===(i?Ws:Fs)&&o.next()}};function dn(t){const{target:s}=t,e=pt(this);e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function Ci(t){const{target:s}=t,e=pt(this);if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;[...n,...o].every(i=>i===s||i.contains(s))||(pe=t.pageX,this.contains(s)&&(e.isTouch=!0,hn(e,!0)))}}const Si=t=>{Be=t.pageX},Hi=t=>{var o;const{target:s}=t,e=E(s),n=[...et(ge,e)].map(i=>pt(i)).find(i=>i.isTouch);if(n){const{element:i,index:c}=n,a=Et(i);rs=t.pageX,n.isTouch=!1,hn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(pe-rs)>120&&(Bepe&&n.to(c+(a?1:-1))),pe=0,Be=0,rs=0}},hs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C)),t.indicators[s]&&f(e[s],C)},hn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),jo,Si,tt),n(E(e),zo,Hi,tt)},fs=t=>{const{slides:s,element:e}=t,n=D(`.${Q}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class Qt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:l,pause:r,interval:g,keyboard:p}=o,v=e?_:B;r&&g&&(v(n,De,wi),v(n,Ze,Ei)),l&&i.length>2&&(v(n,Fo,Ci,tt),v(n,Ge,dn,{passive:!1}),v(n,Vo,dn,{passive:!1})),c.length&&c.forEach(k=>{k&&v(k,N,Ti)}),a.length&&a.forEach(k=>{v(k,N,$i)}),p&&v(E(n),Pe,yi)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(Q,o);const{slides:i}=this;if(i.length>=2){const c=fs(this),a=[...i].find(g=>Js(g,`.${Q}-next,.${Q}-next`));this.index=c;const l=E(o);this.controls=[...et(`[${$t}]`,o),...et(`[${$t}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=D(`.${kt}-indicators`,o),this.indicators=[...this.indicator?et(`[${as}]`,this.indicator):[],...et(`[${as}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g));const{options:r}=this;this.options.interval=r.interval===!0?rn.interval:r.interval,a?this.index=[...i].indexOf(a):c<0&&(this.index=0,f(i[0],C),this.indicators.length&&hs(this,0)),this.indicators.length&&hs(this,this.index),this._toggleEventListeners(!0),r.interval&&this.cycle()}}get name(){return cn}get defaults(){return rn}get isPaused(){return h(this.element,Tt)}get isAnimating(){return D(`.${Q}-next,.${Q}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{this.element&&!this.isPaused&&!this.isTouch&&Gs(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;!this.isPaused&&n.interval&&(f(e,Tt),u.set(e,()=>{},1,Tt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=fs(this),a=Et(n);let l=e;if(!this.isAnimating&&c!==l&&!u.get(n,$t)){cl||c===o.length-1&&l===0)&&(this.direction=a?"left":"right");const{direction:r}=this;l<0?l=o.length-1:l>=o.length&&(l=0);const g=r==="left"?"next":"prev",p=r==="left"?"start":"end",v={relatedTarget:o[l],from:c,to:l,direction:r};dt(ls,v),dt(ds,v),w(n,ls),ls.defaultPrevented||(this.index=l,hs(this,l),zt(o[l])&&h(n,"slide")?u.set(n,()=>{f(o[l],`${Q}-${g}`),It(o[l]),f(o[l],`${Q}-${p}`),f(o[c],`${Q}-${p}`),P(o[l],()=>this.slides&&this.slides.length&&ln(this))},0,$t):(f(o[l],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t),n&&i.interval&&!this.isPaused&&this.cycle(),w(n,ds)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose(),n.isAnimating&&P(n.slides[n.index],()=>{ln(n)})}}d(Qt,"selector",ge),d(Qt,"init",bi),d(Qt,"getInstance",pt);const Nt="collapsing",K="collapse",fn="Collapse",Pi=`.${K}`,gn=`[${at}="${K}"]`,Di={parent:null},Re=t=>F(t,fn),xi=t=>new Zt(t),pn=$(`show.bs.${K}`),Ai=$(`shown.bs.${K}`),un=$(`hide.bs.${K}`),Li=$(`hidden.bs.${K}`),Ii=t=>{const{element:s,parent:e,triggers:n}=t;w(s,pn),pn.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),f(s,Nt),b(s,K),L(s,{height:`${s.scrollHeight}px`}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,lt,"true")),b(s,Nt),f(s,K),f(s,m),L(s,{height:""}),w(s,Ai)}))},mn=t=>{const{element:s,parent:e,triggers:n}=t;w(s,un),un.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),L(s,{height:`${s.scrollHeight}px`}),b(s,K),b(s,m),f(s,Nt),It(s),L(s,{height:"0px"}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,lt,"false")),b(s,Nt),f(s,K),L(s,{height:""}),w(s,Li)}))},ki=t=>{const{target:s}=t,e=s&&M(s,gn),n=e&&V(e),o=n&&Re(n);o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,ki))});const{element:o,options:i}=this,c=E(o);this.triggers=[...et(gn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:he(i.parent)?V(o)||D(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return fn}get defaults(){return Di}hide(){const{triggers:e,element:n}=this;u.get(n)||(mn(this),e.length&&e.forEach(o=>f(o,`${K}d`)))}show(){const{element:e,parent:n,triggers:o}=this;let i,c;n&&(i=[...et(`.${K}.${m}`,n)].find(a=>Re(a)),c=i&&Re(i)),(!n||!u.get(n))&&!u.get(e)&&(c&&i!==e&&(mn(c),c.triggers.forEach(a=>{f(a,`${K}d`)})),Ii(this),o.length&&o.forEach(a=>b(a,`${K}d`)))}toggle(){h(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Pi),d(Zt,"init",xi),d(Zt,"getInstance",Re);const Ot=["dropdown","dropup","dropstart","dropend"],vn="Dropdown",bn="dropdown-menu",wn=t=>{const s=M(t,"A");return t.tagName==="A"&&Ne(t,"href")&&ct(t,"href").slice(-1)==="#"||s&&Ne(s,"href")&&ct(s,"href").slice(-1)==="#"},[nt,gs,ps,us]=Ot,En=`[${at}="${nt}"]`,Gt=t=>F(t,vn),Ni=t=>new Jt(t),Oi=`${bn}-end`,$n=[nt,gs],Tn=[ps,us],yn=["A","BUTTON"],Mi={offset:5,display:"dynamic"},ms=$(`show.bs.${nt}`),Cn=$(`shown.bs.${nt}`),vs=$(`hide.bs.${nt}`),Sn=$(`hidden.bs.${nt}`),Hn=$(`updated.bs.${nt}`),Pn=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;if(z(e,"position")!=="static"){const c=Et(s),a=h(e,Oi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",L(e,Pt)});let r=Ot.find(R=>h(n,R))||nt;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:k}=e,{clientWidth:J,clientHeight:y}=ft(s),{left:X,top:q,width:ce,height:mt}=fe(s),S=X-v-i<0,ot=X+v+ce+i>=J,rt=q+k+i>=y,j=q+k+mt+i>=y,Y=q-k-i<0,x=(!c&&a||c&&!a)&&X+ce-v<0,ae=(c&&a||!c&&!a)&&X+v>=J;if(Tn.includes(r)&&S&&ot&&(r=nt),r===ps&&(c?ot:S)&&(r=us),r===us&&(c?S:ot)&&(r=ps),r===gs&&Y&&!j&&(r=nt),r===nt&&j&&!Y&&(r=gs),Tn.includes(r)&&rt&&dt(p[r],{top:"auto",bottom:0}),$n.includes(r)&&(x||ae)){let R={left:"auto",right:"auto"};!x&&ae&&!c&&(R={left:"auto",right:0}),x&&!ae&&c&&(R={left:0,right:"auto"}),R&&dt(p[r],R)}const Ht=g[r];L(e,{...p[r],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),$n.includes(r)&&a&&a&&L(e,p[!c&&x||c&&ae?"menuStart":"menuEnd"]),w(n,Hn)}},_i=t=>[...t.children].map(s=>{if(s&&yn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&yn.includes(e.tagName)?e:null}).filter(s=>s),Dn=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,xn),n(o,qe,xn),n(o,Pe,Ri),n(o,Ro,Wi),e.display==="dynamic"&&[Ae,xe].forEach(i=>{n(Xt(s),i,Fi,tt)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===ct(e,at)))},xn=t=>{const{target:s,type:e}=t;if(s&&T(s)){const n=We(s),o=n&&Gt(n);if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Rs].includes(e)&&wn(s)&&t.preventDefault(),!a&&e!==qe&&s!==n&&s!==c&&o.hide()}}},Bi=t=>{const{target:s}=t,e=s&&M(s,En),n=e&&Gt(e);n&&(t.stopPropagation(),n.toggle(),e&&wn(e)&&t.preventDefault())},Ri=t=>{[Je,ts].includes(t.code)&&t.preventDefault()};function Wi(t){const{code:s}=t,e=We(this),n=e&&Gt(e),{activeElement:o}=e&&E(e);if(n&&o){const{menu:i,open:c}=n,a=_i(i);if(a&&a.length&&[Je,ts].includes(s)){let l=a.indexOf(o);o===e?l=0:s===ts?l=l>1?l-1:0:s===Je&&(l=l{(e?_:B)(this.element,N,Bi)});const{parentElement:o}=this.element,[i]=gt(bn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return vn}get defaults(){return Mi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;if(!n){const c=We(e),a=c&&Gt(c);a&&a.hide(),[ms,Cn,Hn].forEach(l=>{l.relatedTarget=e}),w(i,ms),ms.defaultPrevented||(f(o,m),f(i,m),O(e,lt,"true"),Pn(this),this.open=!n,ht(e),Dn(this),w(i,Cn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;n&&([vs,Sn].forEach(c=>{c.relatedTarget=e}),w(i,vs),vs.defaultPrevented||(b(o,m),b(i,m),O(e,lt,"false"),this.open=!n,Dn(this),w(i,Sn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Jt,"selector",En),d(Jt,"init",Ni),d(Jt,"getInstance",Gt);const U="modal",bs="Modal",ws="Offcanvas",ji="fixed-top",zi="fixed-bottom",An="sticky-top",Ln="position-sticky",In=t=>[...gt(ji,t),...gt(zi,t),...gt(An,t),...gt(Ln,t),...gt("is-fixed",t)],Vi=t=>{const s=wt(t);L(s,{paddingRight:"",overflow:""});const e=In(s);e.length&&e.forEach(n=>{L(n,{paddingRight:"",marginRight:""})})},kn=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Nn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:kn(t),c=In(e);s&&(L(e,{overflow:"hidden",paddingRight:`${n+i}px`}),c.length&&c.forEach(a=>{const l=z(a,"paddingRight");if(a.style.paddingRight=`${parseInt(l,10)+i}px`,[An,Ln].some(r=>h(a,r))){const r=z(a,"marginRight");a.style.marginRight=`${parseInt(r,10)-i}px`}}))},Z="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),On=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt,o=e?s:wt(t);A(t)&&(n===yt&&o.append(yt),n.append(t))},Mn=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt;A(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Es=(t,s)=>{const e=A(s)&&s.nodeName!=="BODY"?s:yt;return A(t)&&e.contains(t)},_n="backdrop",Bn=`${U}-${_n}`,Rn=`${Z}-${_n}`,Wn=`.${U}.${m}`,$s=`.${Z}.${m}`,I=vt("div"),Mt=t=>D(`${Wn},${$s}`,E(t)),Ts=t=>{const s=t?Bn:Rn;[Bn,Rn].forEach(e=>{b(I,e)}),f(I,s)},Fn=(t,s,e)=>{Ts(e),On(I,wt(t)),s&&f(I,W)},jn=()=>{h(I,m)||(f(I,m),It(I))},Fe=()=>{b(I,m)},zn=t=>{Mt(t)||(b(I,W),Mn(I,wt(t)),Vi(t))},Vn=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Ki=`.${U}`,Kn=`[${at}="${U}"]`,Xi=`[${Me}="${U}"]`,Xn=`${U}-static`,Yi={backdrop:!0,keyboard:!0},ue=t=>F(t,bs),Ui=t=>new te(t),je=$(`show.bs.${U}`),Yn=$(`shown.bs.${U}`),ys=$(`hide.bs.${U}`),Un=$(`hidden.bs.${U}`),qn=t=>{const{element:s}=t,e=kn(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;if(!a&&e){const l=Et(s)?"paddingLeft":"paddingRight",r={};r[l]=`${e}px`,L(s,r)}Nn(s,a||n!==o)},Qn=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,Zi),e(Xt(n),xe,o,tt),e(E(n),Pe,Qi)},Zn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;zn(e),L(e,{paddingRight:"",display:""}),Qn(t);const o=je.relatedTarget||s.find(Vn);o&&ht(o),Un.relatedTarget=n,w(e,Un)},Gn=t=>{const{element:s,relatedTarget:e}=t;ht(s),Qn(t,!0),Yn.relatedTarget=e,w(s,Yn)},Jn=t=>{const{element:s,hasFade:e}=t;L(s,{display:"block"}),qn(t),Mt(s)||L(wt(s),{overflow:"hidden"}),f(s,m),At(s,Se),O(s,He,"true"),e?P(s,()=>Gn(t)):Gn(t)},to=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&h(I,m)&&!Mt(s)?(Fe(),P(I,()=>Zn(t))):Zn(t)},qi=t=>{const{target:s}=t,e=s&&M(s,Kn),n=e&&V(e),o=n&&ue(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle())},Qi=({code:t,target:s})=>{const e=D(Wn,E(s)),n=e&&ue(e);if(n){const{options:o}=n;o.keyboard&&t===es&&h(e,m)&&(n.relatedTarget=null,n.hide())}},Zi=t=>{var n,o;const{currentTarget:s}=t,e=s?ue(s):null;if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:l}=i,{target:r}=t,g=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(r),v=r&&M(r,Xi);c&&!p?u.set(s,()=>{f(s,Xn),P(a,()=>Gi(e))},17):(v||!g&&!c&&!p&&l)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},Gi=t=>{const{element:s,modalDialog:e}=t,n=(zt(e)||0)+17;b(s,Xn),u.set(s,()=>u.clear(s),n)};class te extends st{constructor(e,n){super(e,n);d(this,"update",()=>{h(this.element,m)&&qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,qi))});const{element:o}=this,i=D(`.${U}-dialog`,o);i&&(this.modalDialog=i,this.triggers=[...et(Kn,E(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=h(o,W),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return bs}get defaults(){return Yi}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;if(!h(e,m)&&(je.relatedTarget=i||void 0,w(e,je),!je.defaultPrevented)){const l=Mt(e);if(l&&l!==e){const r=ue(l)||F(l,ws);r&&r.hide()}c?(Es(I)?Ts(!0):Fn(e,o,!0),a=zt(I),jn(),setTimeout(()=>Jn(this),a)):(Jn(this),l&&h(I,m)&&Fe())}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;h(e,m)&&(ys.relatedTarget=o||void 0,w(e,ys),ys.defaultPrevented||(b(e,m),O(e,Se,"true"),At(e,He),n?P(e,()=>to(this)):to(this)))}dispose(){const e={...this},{element:n,modalDialog:o}=e,i=()=>super.dispose();this._toggleEventListeners(),this.hide(),h(n,"fade")?P(o,i):i()}}d(te,"selector",Ki),d(te,"init",Ui),d(te,"getInstance",ue);const Ji=`.${Z}`,Cs=`[${at}="${Z}"]`,tc=`[${Me}="${Z}"]`,ze=`${Z}-toggling`,ec={backdrop:!0,keyboard:!0,scroll:!1},me=t=>F(t,ws),sc=t=>new ee(t),Ve=$(`show.bs.${Z}`),eo=$(`shown.bs.${Z}`),Ss=$(`hide.bs.${Z}`),so=$(`hidden.bs.${Z}`),nc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Nn(s,e!==n)},no=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Pe,ac),e(n,N,cc)},oo=t=>{const{element:s,options:e}=t;e.scroll||(nc(t),L(wt(s),{overflow:"hidden"})),f(s,ze),f(s,m),L(s,{visibility:"visible"}),P(s,()=>rc(t))},oc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&h(I,m)&&Fe(),P(s,()=>lc(t))},ic=t=>{const s=M(t.target,Cs),e=s&&V(s),n=e&&me(e);n&&(n.relatedTarget=s,n.toggle(),s&&s.tagName==="A"&&t.preventDefault())},cc=t=>{const{target:s}=t,e=D($s,E(s)),n=D(tc,e),o=e&&me(e);if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,l=M(s,Cs),r=E(e).getSelection();(!I.contains(s)||a!=="static")&&(!(r&&r.toString().length)&&(!e.contains(s)&&a&&(!l||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide()),l&&l.tagName==="A"&&t.preventDefault())}},ac=({code:t,target:s})=>{const e=D($s,E(s)),n=e&&me(e);n&&n.options.keyboard&&t===es&&(n.relatedTarget=null,n.hide())},rc=t=>{const{element:s}=t;b(s,ze),At(s,Se),O(s,He,"true"),O(s,"role","dialog"),w(s,eo),no(t,!0),ht(s)},lc=t=>{const{element:s,triggers:e}=t;O(s,Se,"true"),At(s,He),At(s,"role"),L(s,{visibility:""});const n=Ve.relatedTarget||e.find(Vn);n&&ht(n),zn(s),w(s,so),b(s,ze),Mt(s)||no(t)};class ee extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,ic))});const{element:o}=this;this.triggers=[...et(Cs,E(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return ws}get defaults(){return ec}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!h(e,m)&&(Ve.relatedTarget=o||void 0,eo.relatedTarget=o||void 0,w(e,Ve),!Ve.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=me(c)||F(c,bs);a&&a.hide()}n.backdrop?(Es(I)?Ts():Fn(e,!0),i=zt(I),jn(),setTimeout(()=>oo(this),i)):(oo(this),c&&h(I,m)&&Fe())}}hide(){const{element:e,relatedTarget:n}=this;h(e,m)&&(Ss.relatedTarget=n||void 0,so.relatedTarget=n||void 0,w(e,Ss),Ss.defaultPrevented||(f(e,ze),b(e,m),oc(this)))}dispose(){const e={...this},{element:n,options:o}=e,i=o.backdrop?zt(I):0,c=()=>setTimeout(()=>super.dispose(),i+17);this._toggleEventListeners(),this.hide(),h(n,m)?P(n,c):c()}}d(ee,"selector",Ji),d(ee,"init",sc),d(ee,"getInstance",me);const _t="popover",Ke="Popover",ut="tooltip",io=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},co={top:"top",bottom:"bottom",left:"start",right:"end"},Hs=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;if(n){const a={...co},l=Et(e);L(n,{top:"",left:"",right:"",bottom:""});const r=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:k,offsetWidth:J}=ft(e);let{placement:y}=i;const{clientWidth:X,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?X-q:v-J),ot=l&&mt?S:0,rt=v-(l?0:S)-1,{width:j,height:Y,left:x,right:ae,top:Ht}=fe(e,!0),{x:R,y:Pt}={x,y:Ht};L(c,{top:"",left:"",right:"",bottom:""});let Wt=0,Ee="",Dt=0,ks="",re="",Xe="",Ns="";const Ft=c.offsetWidth||0,xt=c.offsetHeight||0,Os=Ft/2;let $e=Ht-p-xt<0,Te=Ht+p+Y+xt>=k,ye=x-g-Ft=rt;const Ye=["left","right"],Ms=["top","bottom"];$e=Ye.includes(y)?Ht+Y/2-p/2-xt<0:$e,Te=Ye.includes(y)?Ht+p/2+Y/2+xt>=k:Te,ye=Ms.includes(y)?x+j/2-g/2=rt:Ce,y=Ye.includes(y)&&ye&&Ce?"top":y,y=y==="top"&&$e?"bottom":y,y=y==="bottom"&&Te?"top":y,y=y==="left"&&ye?"right":y,y=y==="right"&&Ce?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y])),Ye.includes(y)?(y==="left"?Dt=R-g-(r?Ft:0):Dt=R+j+(r?Ft:0),$e&&Te?(Wt=0,Ee=0,re=Ht+Y/2-xt/2):$e?(Wt=Pt,Ee="",re=Y/2-Ft):Te?(Wt=Pt-p+Y,Ee="",re=p-Y/2-Ft):(Wt=Pt-p/2+Y/2,re=p/2-xt/2)):Ms.includes(y)&&(y==="top"?Wt=Pt-p-(r?xt:0):Wt=Pt+Y+(r?xt:0),ye?(Dt=0,Xe=R+j/2-Os):Ce?(Dt="auto",ks=0,Ns=j/2+rt-ae-Os):(Dt=R-g/2+j/2,Xe=g/2-Os)),L(n,{top:`${Wt}px`,bottom:Ee===""?"":`${Ee}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:ks!==""?`${ks}px`:""}),T(c)&&(re!==""&&(c.style.top=`${re}px`),Xe!==""?c.style.left=`${Xe}px`:Ns!==""&&(c.style.right=`${Ns}px`));const zc=$(`updated.bs.${Vt(t.name)}`);w(e,zc)}},Ps={template:io(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},ao="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{if(he(s)&&s.length){let n=s.trim();oi(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(ii(s)||ni(s)&&s.every(A))&&t.append(...s)},dc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:l,customClass:r,sanitizeFn:g,dismissible:p,content:v,btnClose:k}=o,J=s?ut:_t,y={...co};let X=[],q=[];Et(n)&&(y.left="end",y.right="start");const ce=`bs-${J}-${y[c]}`;let mt;if(T(a))mt=a;else{const ot=vt("div");Ct(ot,a,g),mt=ot.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;if(S){O(S,"id",e),O(S,"role",ut);const ot=s?`${ut}-inner`:`${_t}-body`,rt=s?null:D(`.${_t}-header`,S),j=D(`.${ot}`,S);t.arrow=D(`.${J}-arrow`,S);const{arrow:Y}=t;if(T(i))X=[i.cloneNode(!0)];else{const x=vt("div");Ct(x,i,g),X=[...x.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const x=vt("div");Ct(x,v,g),q=[...x.childNodes]}if(p)if(i)if(T(k))X=[...X,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),X=[...X,x.firstChild]}else if(rt&&rt.remove(),T(k))q=[...q,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),q=[...q,x.firstChild]}s?i&&j&&Ct(j,i,g):(i&&rt&&Ct(rt,X,g),v&&j&&Ct(j,q,g),t.btn=D(".btn-close",S)||void 0),f(S,"position-fixed"),f(Y,"position-absolute"),h(S,J)||f(S,J),l&&!h(S,W)&&f(S,W),r&&!h(S,r)&&f(S,r),h(S,ce)||f(S,ce)}},hc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);)n=si(n),Us(n)||ci(n)||e.push(n);return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||E(t).body},fc=`[${at}="${ut}"],[data-tip="${ut}"]`,ro="title";let lo=t=>F(t,Bt);const gc=t=>new St(t),pc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,it),Mn(e,n===o?n:o)},ve=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Es(s,e===n?e:n)},uc=(t,s)=>{const{element:e}=t;t._toggleEventListeners(),Ne(e,ao)&&t.name===Bt&&uo(t),s&&s()},ho=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),Ge,t.handleTouch,tt),[Ae,xe].forEach(o=>{e(Xt(n),o,t.update,tt)})},fo=t=>{const{element:s}=t,e=$(`shown.bs.${Vt(t.name)}`);ho(t,!0),w(s,e),u.clear(s,"in")},go=t=>{const{element:s}=t,e=$(`hidden.bs.${Vt(t.name)}`);ho(t),pc(t),w(s,e),u.clear(s,"out")},po=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,l=M(n,`.${U}`),r=M(n,`.${Z}`),g=Xt(n),v=o===i&&c!==a?o:g;e(v,xe,t.update,tt),e(v,Ae,t.update,tt),l&&e(l,`hide.bs.${U}`,t.handleHide),r&&e(r,`hide.bs.${Z}`,t.handleHide)},uo=(t,s)=>{const e=[ao,ro],{element:n}=t;O(n,e[s?0:1],s||ct(n,e[0])||""),At(n,e[s?1:0])};class St extends st{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Hs(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!ve(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,r=!!(this.name!==Bt&&i.dismissible);a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{p===Wo?(n(o,Rs,this.handleShow),n(o,De,this.handleShow),r||(n(o,Ze,this.handleHide),n(E(o),Ge,this.handleTouch,tt))):p===N?n(o,p,r?this.handleShow:this.toggle):p===qe&&(n(o,Qe,this.handleShow),r||n(o,Bs,this.handleHide),qo&&n(o,N,this.handleFocus)),r&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;lo=r=>F(r,a),this.enabled=!0,this.id=`${c}-${Zs(o,c)}`;const{options:l}=this;!l.title&&i||!i&&!l.content||(dt(Ps,{titleAttr:""}),Ne(o,ro)&&i&&typeof l.title=="string"&&uo(this,l.title),this.container=hc(o),this.offsetParent=["sticky","fixed"].some(r=>z(this.container,"position")===r)?this.container:E(this.element).body,dc(this),this._toggleEventListeners(!0))}get name(){return Bt}get defaults(){return Ps}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:l}=e,r=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!r&&!ve(this)&&u.set(o,()=>{const p=$(`show.bs.${Vt(this.name)}`);w(o,p),p.defaultPrevented||(On(n,g),O(o,it,`#${a}`),this.update(),po(this,!0),h(n,m)||f(n,m),l?P(n,()=>fo(this)):fo(this))},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in"),n&&ve(this)&&u.set(o,()=>{const a=$(`hide.bs.${Vt(this.name)}`);w(o,a),a.defaultPrevented||(this.update(),b(n,m),po(this),i?P(n,()=>go(this)):go(this))},c+17,"out")}enable(){const{enabled:e}=this;e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,options:n,enabled:o}=this,{animation:i}=n;o&&(e&&ve(this)&&i?(this.hide(),P(e,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!o)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>uc(o,()=>super.dispose()),17);n.animation&&ve(o)?(this.options.delay=0,this.hide(),P(e,i)):i()}}d(St,"selector",fc),d(St,"init",gc),d(St,"getInstance",lo),d(St,"styleTip",Hs);const mc=`[${at}="${_t}"],[data-tip="${_t}"]`,vc=dt({},Ps,{template:io(_t),content:"",dismissible:!1,btnClose:''}),bc=t=>F(t,Ke),wc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return vc}}d(Rt,"selector",mc),d(Rt,"init",wc),d(Rt,"getInstance",bc),d(Rt,"styleTip",Hs);const Ec="scrollspy",mo="ScrollSpy",$c='[data-bs-spy="scroll"]',Tc={offset:10,target:null},yc=t=>F(t,mo),Cc=t=>new se(t),vo=$(`activate.bs.${Ec}`),Sc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,l=ns(e),r=s&&is("A",s),g=e?bo(e):i;if(t.scrollTop=l?e.scrollY:e.scrollTop,r&&(g!==i||o!==r.length)){let p,v,k;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Hc(t),[...r].forEach(J=>{p=ct(J,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&D(p,E(c)),v&&(t.items.push(J),k=fe(v),t.offsets.push((l?k.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},bo=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Hc=({element:t,scrollTarget:s})=>ns(s)?s.innerHeight:fe(t).height,wo=t=>{[...is("A",t)].forEach(s=>{h(s,C)&&b(s,C)})},Eo=(t,s)=>{const{target:e,element:n}=t;T(e)&&wo(e),t.activeItem=s,f(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(h(i,"nav")||h(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;a&&!h(a,C)&&f(a,C)}),vo.relatedTarget=s,w(n,vo)};class se extends st{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;if(T(e)&&e.offsetHeight>0){Sc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const r=c[i-1];a!==r&&Eo(this,r);return}const{offsets:l}=this;if(a&&n0){this.activeItem=null,e&&wo(e);return}c.forEach((r,g)=>{a!==r&&n>=l[g]&&(typeof l[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ae,this.refresh,tt)});const{element:o,options:i}=this;this.target=D(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightF(t,$o),Pc=t=>new ne(t),Ds=$(`show.bs.${be}`),Co=$(`shown.bs.${be}`),xs=$(`hide.bs.${be}`),So=$(`hidden.bs.${be}`),we=new Map,Ho=t=>{const{tabContent:s,nav:e}=t;s&&h(s,Nt)&&(s.style.height="",b(s,Nt)),e&&u.clear(e)},Po=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&we.get(o)||{tab:null};if(e&&n&&h(n,W)){const{currentHeight:c,nextHeight:a}=we.get(s)||{currentHeight:0,nextHeight:0};c===a?Ho(t):setTimeout(()=>{e.style.height=`${a}px`,It(e),P(e,()=>Ho(t))},50)}else o&&u.clear(o);Co.relatedTarget=i,w(s,Co)},Do=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&we.get(o)||{tab:null,content:null};let a=0;if(n&&e&&h(e,W)&&([c,e].forEach(l=>{T(l)&&f(l,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),Ds.relatedTarget=i,So.relatedTarget=s,w(s,Ds),!Ds.defaultPrevented){if(e&&f(e,C),c&&b(c,C),n&&e&&h(e,W)){const l=e.scrollHeight;we.set(s,{currentHeight:a,nextHeight:l,tab:null,content:null}),f(n,Nt),n.style.height=`${a}px`,It(n),[c,e].forEach(r=>{r&&b(r,"overflow-hidden")})}e&&e&&h(e,W)?setTimeout(()=>{f(e,m),P(e,()=>{Po(t)})},1):(e&&f(e,m),Po(t)),i&&w(i,So)}},xo=t=>{const{nav:s}=t;if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;e.length===1&&!Ot.some(i=>h(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},Ao=t=>{if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?D(`.${Ot[0]}-toggle`,s):null},Dc=t=>{const s=yo(t.target);s&&(t.preventDefault(),s.show())};class ne extends st{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Dc)});const{element:n}=this,o=V(n);if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=Ao(n);const{tab:a}=xo(this);if(i&&!a){const l=D(To,i),r=l&&V(l);r&&(f(l,C),f(r,m),f(r,C),O(n,Ue,"true"))}this._toggleEventListeners(!0)}}get name(){return $o}show(){const{element:e,content:n,nav:o,dropdown:i}=this;if(!(o&&u.get(o))&&!h(e,C)){const{tab:c,content:a}=xo(this);if(o&&we.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),xs.relatedTarget=e,T(c)&&(w(c,xs),!xs.defaultPrevented)){f(e,C),O(e,Ue,"true");const l=T(c)&&Ao(c);if(l&&h(l,C)&&b(l,C),o){const r=()=>{c&&(b(c,C),O(c,Ue,"false")),i&&!h(i,C)&&f(i,C)};a&&(h(a,W)||n&&h(n,W))?u.set(o,r,1):r()}a&&(b(a,m),h(a,W)?P(a,()=>Do(this)):Do(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(ne,"selector",To),d(ne,"init",Pc),d(ne,"getInstance",yo);const G="toast",Lo="Toast",xc=`.${G}`,Ac=`[${Me}="${G}"]`,Io=`[${at}="${G}"]`,oe="showing",ko="hide",Lc={animation:!0,autohide:!0,delay:5e3},As=t=>F(t,Lo),Ic=t=>new ie(t),No=$(`show.bs.${G}`),kc=$(`shown.bs.${G}`),Oo=$(`hide.bs.${G}`),Nc=$(`hidden.bs.${G}`),Mo=t=>{const{element:s,options:e}=t;b(s,oe),u.clear(s,oe),w(s,kc),e.autohide&&u.set(s,()=>t.hide(),e.delay,G)},_o=t=>{const{element:s}=t;b(s,oe),b(s,m),f(s,ko),u.clear(s,G),w(s,Nc)},Oc=t=>{const{element:s,options:e}=t;f(s,oe),e.animation?(It(s),P(s,()=>_o(t))):_o(t)},Mc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,ko),It(s),f(s,m),f(s,oe),e.animation?P(s,()=>Mo(t)):Mo(t)},17,oe)},_c=t=>{u.clear(t.element,G),t._toggleEventListeners()},Bc=t=>{const{target:s}=t,e=s&&M(s,Io),n=e&&V(e),o=n&&As(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show())},Rc=t=>{const s=t.target,e=As(s),{type:n,relatedTarget:o}=t;e&&s!==o&&!s.contains(o)&&([De,Qe].includes(n)?u.clear(s,G):u.set(s,()=>e.hide(),e.options.delay,G))};class ie extends st{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;e&&!n&&(w(e,No),No.defaultPrevented||Mc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;e&&n&&(w(e,Oo),Oo.defaultPrevented||Oc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:l}=this;c&&n(c,N,l),a.autohide&&[Qe,Bs,De,Ze].forEach(r=>n(o,r,Rc)),i.length&&i.forEach(r=>n(r,N,Bc))});const{element:o,options:i}=this;i.animation&&!h(o,W)?f(o,W):!i.animation&&h(o,W)&&b(o,W),this.dismiss=D(Ac,o),this.triggers=[...et(Io,E(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Lo}get defaults(){return Lc}get isShown(){return h(this.element,m)}dispose(){const{element:e,isShown:n}=this;n&&b(e,m),_c(this),super.dispose()}}d(ie,"selector",xc),d(ie,"init",Ic),d(ie,"getInstance",As);const Ls=new Map;[Ut,qt,Qt,Zt,Jt,te,ee,Rt,se,ne,ie,St].forEach(t=>Ls.set(t.prototype.name,t));const Wc=(t,s)=>{[...s].forEach(e=>t(e))},Fc=(t,s)=>{const e=Lt.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Is=t=>{const s=t&&t.nodeName?t:document,e=[...is("*",s)];Ls.forEach(n=>{const{init:o,selector:i}=n;Wc(o,e.filter(c=>Js(c,i)))})},jc=t=>{const s=t&&t.nodeName?t:document;Ls.forEach(e=>{Fc(e.prototype.name,s)})};return document.body?Is():_(document,"DOMContentLoaded",()=>Is(),{once:!0}),H.Alert=Ut,H.Button=qt,H.Carousel=Qt,H.Collapse=Zt,H.Dropdown=Jt,H.Modal=te,H.Offcanvas=ee,H.Popover=Rt,H.ScrollSpy=se,H.Tab=ne,H.Toast=ie,H.Tooltip=St,H.initCallback=Is,H.removeDataAPI=jc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({}); +var BSN=function(H){"use strict";var Uc=Object.defineProperty;var qc=(H,ct,rt)=>ct in H?Uc(H,ct,{enumerable:!0,configurable:!0,writable:!0,value:rt}):H[ct]=rt;var d=(H,ct,rt)=>qc(H,typeof ct!="symbol"?ct+"":ct,rt);const ct="aria-describedby",rt="aria-expanded",le="aria-hidden",Pe="aria-modal",Rs="aria-pressed",qe="aria-selected",jo="DOMContentLoaded",Ze="focus",Je="focusin",Fs="focusout",De="keydown",zo="keyup",N="click",Ws="mousedown",Vo="hover",xe="mouseenter",Ge="mouseleave",Xo="pointerdown",Ko="pointermove",Yo="pointerup",Ae="resize",Ie="scroll",Qe="touchstart",Uo="dragstart",qo='a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]',ts="ArrowDown",es="ArrowUp",js="ArrowLeft",zs="ArrowRight",ss="Escape",Zo="transitionDuration",Jo="transitionDelay",ns="transitionend",Vs="transitionProperty",Go=navigator.userAgentData,Le=Go,{userAgent:Qo}=navigator,ke=Qo,Xs=/iPhone|iPad|iPod|Android/i;// istanbul ignore else @preserve +Le?Le.brands.some(t=>Xs.test(t.brand)):Xs.test(ke);const Ks=/(iPhone|iPod|iPad)/,ti=Le?Le.brands.some(t=>Ks.test(t.brand)):Ks.test(ke);ke&&ke.includes("Firefox");const{head:Ne}=document;["webkitPerspective","perspective"].some(t=>t in Ne.style);const Ys=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Us=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},ei=(t,s,e,n)=>{const o=i=>{/* istanbul ignore else @preserve */(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Us(t,s,o,n))};Ys(t,s,o,n)},re=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});// istanbul ignore next @preserve +ei(document,jo,re,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in Ne.style),["webkitAnimation","animation"].some(t=>t in Ne.style),["webkitTransition","transition"].some(t=>t in Ne.style);const et=(t,s)=>t.getAttribute(s),de=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),h=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},f=(t,s)=>t.classList.contains(s),he=t=>t!=null&&typeof t=="object"||!1,x=t=>he(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>x(t)&&t.nodeType===1||!1,jt=new Map,It={data:jt,set:(t,s,e)=>{if(!T(t))return;// istanbul ignore else @preserve +jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e)},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=It.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=It.getAllFor(s);if(!e||!T(t))return;e.delete(t);// istanbul ignore else @preserve +e.size===0&&jt.delete(s)}},W=(t,s)=>It.get(t,s),fe=t=>typeof t=="string"||!1,os=t=>he(t)&&t.constructor.name==="Window"||!1,qs=t=>x(t)&&t.nodeType===9||!1,w=t=>os(t)?t.document:qs(t)?t:x(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(fe(t))return w().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},E=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},si=t=>{const s=z(t,Vs),e=z(t,Jo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},ge=t=>{const s=z(t,Vs),e=z(t,Zo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},A=(t,s)=>{let e=0;const n=new Event(ns),o=ge(t),i=si(t);if(o){const c=a=>{// istanbul ignore else @preserve +a.target===t&&(s.apply(t,[a]),t.removeEventListener(ns,c),e=1)};t.addEventListener(ns,c),setTimeout(()=>{// istanbul ignore next @preserve +e||E(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Zs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),zt=t=>t.toLowerCase(),ni=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},r="title";return Oe(i).forEach(([l,g])=>{const p=typeof l=="string"&&l.includes(n)?l.replace(n,"").replace(/[A-Z]/g,v=>zt(v)):l;a[p]=Zs(g)}),Oe(o).forEach(([l,g])=>{o[l]=Zs(g)}),Oe(s).forEach(([l,g])=>{// istanbul ignore else @preserve +l in o?c[l]=o[l]:l in a?c[l]=a[l]:c[l]=l===r?et(t,r):g}),c},Js=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});// istanbul ignore else @preserve +return he(s)&&dt(e,s),e},st={passive:!0},Lt=t=>t.offsetHeight,I=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&fe(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},is=t=>he(t)&&t.constructor.name==="Map"||!1,oi=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{if(!T(t))return;// istanbul ignore else @preserve +if(n&&n.length){// istanbul ignore else @preserve +bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))}else bt.set(t,setTimeout(s,e))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&is(e)?e.get(s)||null:oi(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);if(s&&s.length&&is(e)){clearTimeout(e.get(s)),e.delete(s);// istanbul ignore else @preserve +e.size===0&&bt.delete(t)}else clearTimeout(e),bt.delete(t)}},Z=(t,s)=>(x(s)?s:w()).querySelectorAll(t),cs=new Map;function ii(t){const{shiftKey:s,code:e}=t,n=w(this),o=[...Z(qo,this)].filter(a=>!de(a,"disabled")&&!et(a,le));if(!o.length)return;const i=o[0],c=o[o.length-1];// istanbul ignore else @preserve +e==="Tab"&&(s&&n.activeElement===i?(c.focus(),t.preventDefault()):!s&&n.activeElement===c&&(i.focus(),t.preventDefault()))}const ci=t=>cs.has(t)===!0,Me=t=>{const s=ci(t);(s?Us:Ys)(t,"keydown",ii),s?cs.delete(t):cs.set(t,!0)},pe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let r=1,l=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;r=g>0?Math.round(e)/g:1,l=p>0?Math.round(n)/p:1}return{width:e/r,height:n/l,top:o/l,right:i/r,bottom:c/l,left:a/r,x:a/r,y:o/l}},wt=t=>w(t).body,ft=t=>w(t).documentElement,Gs=t=>x(t)&&t.constructor.name==="ShadowRoot"||!1,ai=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||x(t)&&t.parentNode||Gs(t)&&t.host||ft(t);let Qs=0,tn=0;const Vt=new Map,en=(t,s)=>{let e=s?Qs:tn;if(s){const n=en(t),o=Vt.get(n)||new Map;Vt.has(n)||Vt.set(n,o),is(o)&&!o.has(s)?(o.set(s,e),Qs+=1):e=o.get(s)}else{const n=t.id||t;Vt.has(n)?e=Vt.get(n):(Vt.set(n,e),tn+=1)}return e},Xt=t=>{var s;return t?qs(t)?t.defaultView:x(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},li=t=>Array.isArray(t)||!1,sn=t=>{if(!x(t))return!1;const{top:s,bottom:e}=pe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},ri=t=>typeof t=="function"||!1,di=t=>he(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",hi=t=>x(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,P=(t,s)=>T(t)?t:(x(s)?s:w()).querySelector(t),as=(t,s)=>(x(s)?s:w()).getElementsByTagName(t),gt=(t,s)=>(s&&x(s)?s:w()).getElementsByClassName(t),nn=(t,s)=>t.matches(s),Kt={},on=t=>{const{type:s,currentTarget:e}=t;[...Kt[s]].forEach(([n,o])=>{/* istanbul ignore else @preserve */e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{/* istanbul ignore else @preserve */Kt[s]||(Kt[s]=new Map);const o=Kt[s];/* istanbul ignore else @preserve */o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n);/* istanbul ignore else @preserve */c||t.addEventListener(s,on,n)},B=(t,s,e,n)=>{const o=Kt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;/* istanbul ignore else @preserve */i&&i.has(e)&&i.delete(e);/* istanbul ignore else @preserve */o&&(!i||!i.size)&&o.delete(t);/* istanbul ignore else @preserve */(!o||!o.size)&&delete Kt[s];/* istanbul ignore else @preserve */(!i||!i.size)&&t.removeEventListener(s,on,a)},F="fade",m="show",_e="data-bs-dismiss",Be="alert",cn="Alert",fi="5.0.15";class nt{constructor(s,e){d(this,"_toggleEventListeners",()=>{});let n;try{if(T(s))n=s;else if(fe(s)){n=P(s);// istanbul ignore else @preserve +if(!n)throw Error(`"${s}" is not a valid selector.`)}else throw Error("your target is not an instance of HTMLElement.")}catch(i){throw Error(`${this.name} Error: ${i.message}`)}const o=It.get(n,this.name);// istanbul ignore else @preserve +o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Js(this.defaults).length?ni(n,this.defaults,e||{},"bs"):{},It.set(n,this.name,this)}get version(){return fi}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){It.remove(this.element,this.name),Js(this).forEach(s=>{delete this[s]})}}const gi=`.${Be}`,pi=`[${_e}="${Be}"]`,ui=t=>W(t,cn),mi=t=>new Yt(t),an=$(`close.bs.${Be}`),vi=$(`closed.bs.${Be}`),ln=t=>{const{element:s}=t;E(s,vi),t._toggleEventListeners(),t.dispose(),s.remove()};class Yt extends nt{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;// istanbul ignore else @preserve +e&&f(e,m)&&(E(e,an),an.defaultPrevented||(b(e,m),f(e,F)?A(e,()=>ln(this)):ln(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;// istanbul ignore else @preserve +o&&n(o,N,i)});this.dismiss=P(pi,this.element),this._toggleEventListeners(!0)}get name(){return cn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Yt,"selector",gi),d(Yt,"init",mi),d(Yt,"getInstance",ui);const C="active",at="data-bs-toggle",bi="button",rn="Button",wi=`[${at}="${bi}"]`,Ei=t=>W(t,rn),$i=t=>new Ut(t);class Ut extends nt{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!f(n,"disabled")&&!et(n,"disabled")&&((o?b:h)(n,C),O(n,Rs,o?"false":"true"),this.isActive=f(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=f(n,C),O(n,Rs,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return rn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",wi),d(Ut,"init",$i),d(Ut,"getInstance",Ei);const ls="data-bs-target",kt="carousel",dn="Carousel",hn="data-bs-parent",Ti="data-bs-container",V=t=>{const s=[ls,hn,Ti,"href"],e=w(t);return s.map(n=>{const o=et(t,n);return o?n===hn?M(t,o):P(o,e):null}).filter(n=>n)[0]},ue=`[data-bs-ride="${kt}"]`,J=`${kt}-item`,rs="data-bs-slide-to",$t="data-bs-slide",Tt="paused",fn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>W(t,dn),yi=t=>new qt(t);let me=0,Re=0,ds=0;const hs=$(`slide.bs.${kt}`),fs=$(`slid.bs.${kt}`),gn=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;// istanbul ignore else @preserve +if(t.isAnimating){const c=ps(t),a=e==="left"?"next":"prev",r=e==="left"?"start":"end";h(o[s],C),b(o[s],`${J}-${a}`),b(o[s],`${J}-${r}`),b(o[c],C),b(o[c],`${J}-${r}`),E(n,fs),u.clear(n,$t),t.cycle&&!w(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function Ci(){const t=pt(this);// istanbul ignore else @preserve +t&&!t.isPaused&&!u.get(this,Tt)&&h(this,Tt)}function Si(){const t=pt(this);// istanbul ignore else @preserve +t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function Hi(t){t.preventDefault();const s=M(this,ue)||V(this),e=pt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=+(et(this,rs)||0);// istanbul ignore else @preserve +this&&!f(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Pi(t){t.preventDefault();const s=M(this,ue)||V(this),e=pt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=et(this,$t);// istanbul ignore else @preserve +n==="next"?e.next():n==="prev"&&e.prev()}}const Di=({code:t,target:s})=>{const e=w(s),[n]=[...Z(ue,e)].filter(i=>sn(i)),o=pt(n);// istanbul ignore next @preserve +if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n),c=i?js:zs,a=i?zs:js;// istanbul ignore else @preserve +t===a?o.prev():t===c&&o.next()}};function pn(t){const{target:s}=t,e=pt(this);// istanbul ignore next @preserve +e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function xi(t){const{target:s}=t,e=pt(this);// istanbul ignore else @preserve +if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;// istanbul ignore else @preserve +if(![...n,...o].every(i=>i===s||i.contains(s))){me=t.pageX;// istanbul ignore else @preserve +this.contains(s)&&(e.isTouch=!0,un(e,!0))}}}const Ai=t=>{Re=t.pageX},Ii=t=>{var o;const{target:s}=t,e=w(s),n=[...Z(ue,e)].map(i=>pt(i)).find(i=>i.isTouch);// istanbul ignore else @preserve +if(n){const{element:i,index:c}=n,a=Et(i);if(ds=t.pageX,n.isTouch=!1,un(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(me-ds)>120){// istanbul ignore else @preserve +Reme&&n.to(c+(a?1:-1))}me=0,Re=0,ds=0}},gs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C));// istanbul ignore else @preserve +t.indicators[s]&&h(e[s],C)},un=(t,s)=>{const{element:e}=t,n=s?_:B;n(w(e),Ko,Ai,st),n(w(e),Yo,Ii,st)},ps=t=>{const{slides:s,element:e}=t,n=P(`.${J}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class qt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:r,pause:l,interval:g,keyboard:p}=o,v=e?_:B;l&&g&&(v(n,xe,Ci),v(n,Ge,Si)),r&&i.length>2&&(v(n,Xo,xi,st),v(n,Qe,pn,{passive:!1}),v(n,Uo,pn,{passive:!1}));// istanbul ignore else @preserve +c.length&&c.forEach(L=>{// istanbul ignore else @preserve +L&&v(L,N,Pi)});// istanbul ignore else @preserve +a.length&&a.forEach(L=>{v(L,N,Hi)}),p&&v(w(n),De,Di)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(J,o);const{slides:i}=this;if(i.length>=2){const c=ps(this),a=[...i].find(g=>nn(g,`.${J}-next,.${J}-next`));this.index=c;const r=w(o);this.controls=[...Z(`[${$t}]`,o),...Z(`[${$t}][${ls}="#${o.id}"]`,r)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=P(`.${kt}-indicators`,o),this.indicators=[...this.indicator?Z(`[${rs}]`,this.indicator):[],...Z(`[${rs}][${ls}="#${o.id}"]`,r)].filter((g,p,v)=>p===v.indexOf(g));const{options:l}=this;this.options.interval=l.interval===!0?fn.interval:l.interval;// istanbul ignore next @preserve - impossible to test +a?this.index=[...i].indexOf(a):c<0&&(this.index=0,h(i[0],C),this.indicators.length&&gs(this,0));// istanbul ignore else @preserve +this.indicators.length&&gs(this,this.index),this._toggleEventListeners(!0),l.interval&&this.cycle()}}get name(){return dn}get defaults(){return fn}get isPaused(){return f(this.element,Tt)}get isAnimating(){return P(`.${J}-next,.${J}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{// istanbul ignore else @preserve +this.element&&!this.isPaused&&!this.isTouch&&sn(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;// istanbul ignore else @preserve +!this.isPaused&&n.interval&&(h(e,Tt),u.set(e,()=>{},1,Tt))}next(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index+1)}prev(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=ps(this),a=Et(n);let r=e;if(!this.isAnimating&&c!==r&&!u.get(n,$t)){// istanbul ignore else @preserve +cr||c===o.length-1&&r===0)&&(this.direction=a?"left":"right");const{direction:l}=this;r<0?r=o.length-1:r>=o.length&&(r=0);const g=l==="left"?"next":"prev",p=l==="left"?"start":"end",v={relatedTarget:o[r],from:c,to:r,direction:l};dt(hs,v),dt(fs,v),E(n,hs),hs.defaultPrevented||(this.index=r,gs(this,r),ge(o[r])&&f(n,"slide")?u.set(n,()=>{h(o[r],`${J}-${g}`),Lt(o[r]),h(o[r],`${J}-${p}`),h(o[c],`${J}-${p}`),A(o[r],()=>this.slides&&this.slides.length&&gn(this))},0,$t):(h(o[r],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t);// istanbul ignore else @preserve +n&&i.interval&&!this.isPaused&&this.cycle(),E(n,fs)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose();// istanbul ignore next @preserve - impossible to test +n.isAnimating&&A(n.slides[n.index],()=>{gn(n)})}}d(qt,"selector",ue),d(qt,"init",yi),d(qt,"getInstance",pt);const Nt="collapsing",X="collapse",mn="Collapse",Li=`.${X}`,vn=`[${at}="${X}"]`,ki={parent:null},Fe=t=>W(t,mn),Ni=t=>new Zt(t),bn=$(`show.bs.${X}`),Oi=$(`shown.bs.${X}`),wn=$(`hide.bs.${X}`),Mi=$(`hidden.bs.${X}`),_i=t=>{const{element:s,parent:e,triggers:n}=t;E(s,bn),bn.defaultPrevented||(u.set(s,re,17),e&&u.set(e,re,17),h(s,Nt),b(s,X),I(s,{height:`${s.scrollHeight}px`}),A(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,rt,"true")),b(s,Nt),h(s,X),h(s,m),I(s,{height:""}),E(s,Oi)}))},En=t=>{const{element:s,parent:e,triggers:n}=t;E(s,wn),wn.defaultPrevented||(u.set(s,re,17),e&&u.set(e,re,17),I(s,{height:`${s.scrollHeight}px`}),b(s,X),b(s,m),h(s,Nt),Lt(s),I(s,{height:"0px"}),A(s,()=>{u.clear(s);// istanbul ignore else @preserve +e&&u.clear(e),n.forEach(o=>O(o,rt,"false")),b(s,Nt),h(s,X),I(s,{height:""}),E(s,Mi)}))},Bi=t=>{const{target:s}=t,e=s&&M(s,vn),n=e&&V(e),o=n&&Fe(n);// istanbul ignore else @preserve +o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,Bi))});const{element:o,options:i}=this,c=w(o);this.triggers=[...Z(vn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:fe(i.parent)?V(o)||P(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return mn}get defaults(){return ki}hide(){const{triggers:e,element:n}=this;// istanbul ignore else @preserve +if(!u.get(n)){En(this);// istanbul ignore else @preserve +e.length&&e.forEach(o=>h(o,`${X}d`))}}show(){const{element:e,parent:n,triggers:o}=this;let i,c;if(n&&(i=[...Z(`.${X}.${m}`,n)].find(a=>Fe(a)),c=i&&Fe(i)),(!n||!u.get(n))&&!u.get(e)){c&&i!==e&&(En(c),c.triggers.forEach(a=>{h(a,`${X}d`)})),_i(this);// istanbul ignore else @preserve +o.length&&o.forEach(a=>b(a,`${X}d`))}}toggle(){f(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Li),d(Zt,"init",Ni),d(Zt,"getInstance",Fe);const Ot=["dropdown","dropup","dropstart","dropend"],$n="Dropdown",Tn="dropdown-menu",yn=t=>{const s=M(t,"A");return t.tagName==="A"&&de(t,"href")&&et(t,"href").slice(-1)==="#"||s&&de(s,"href")&&et(s,"href").slice(-1)==="#"},[ot,us,ms,vs]=Ot,Cn=`[${at}="${ot}"]`,Jt=t=>W(t,$n),Ri=t=>new Gt(t),Fi=`${Tn}-end`,Sn=[ot,us],Hn=[ms,vs],Pn=["A","BUTTON"],Wi={offset:5,display:"dynamic"},bs=$(`show.bs.${ot}`),Dn=$(`shown.bs.${ot}`),ws=$(`hide.bs.${ot}`),xn=$(`hidden.bs.${ot}`),An=$(`updated.bs.${ot}`),In=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;// istanbul ignore else @preserve: this test requires a navbar +if(z(e,"position")!=="static"){const c=Et(s),a=f(e,Fi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",I(e,Pt)});let l=Ot.find(R=>f(n,R))||ot;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:L}=e,{clientWidth:tt,clientHeight:y}=ft(s),{left:K,top:q,width:ie,height:mt}=pe(s),S=K-v-i<0,it=K+v+ie+i>=tt,lt=q+L+i>=y,j=q+L+mt+i>=y,Y=q-L-i<0,D=(!c&&a||c&&!a)&&K+ie-v<0,ce=(c&&a||!c&&!a)&&K+v>=tt;if(Hn.includes(l)&&S&&it&&(l=ot),l===ms&&(c?it:S)&&(l=vs),l===vs&&(c?S:it)&&(l=ms),l===us&&Y&&!j&&(l=ot),l===ot&&j&&!Y&&(l=us),Hn.includes(l)&<&&dt(p[l],{top:"auto",bottom:0}),Sn.includes(l)&&(D||ce)){let R={left:"auto",right:"auto"};// istanbul ignore else @preserve +!D&&ce&&!c&&(R={left:"auto",right:0});// istanbul ignore else @preserve +D&&!ce&&c&&(R={left:0,right:"auto"});// istanbul ignore else @preserve +R&&dt(p[l],R)}const Ht=g[l];if(I(e,{...p[l],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),Sn.includes(l)&&a){// istanbul ignore else @preserve +a&&I(e,p[!c&&D||c&&ce?"menuStart":"menuEnd"])}E(n,An)}},ji=t=>[...t.children].map(s=>{if(s&&Pn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&Pn.includes(e.tagName)?e:null}).filter(s=>s),Ln=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=w(s);n(o,N,kn),n(o,Ze,kn),n(o,De,Vi),n(o,zo,Xi);// istanbul ignore else @preserve +e.display==="dynamic"&&[Ie,Ae].forEach(i=>{n(Xt(s),i,Ki,st)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,w(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===et(e,at)))},kn=t=>{const{target:s,type:e}=t;// istanbul ignore else @preserve +if(s&&T(s)){const n=We(s),o=n&&Jt(n);// istanbul ignore else @preserve +if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Ws].includes(e)&&yn(s)&&t.preventDefault();// istanbul ignore else @preserve +!a&&e!==Ze&&s!==n&&s!==c&&o.hide()}}},zi=t=>{const{target:s}=t,e=s&&M(s,Cn),n=e&&Jt(e);// istanbul ignore else @preserve +if(n){t.stopPropagation(),n.toggle();// istanbul ignore else @preserve +e&&yn(e)&&t.preventDefault()}},Vi=t=>{// istanbul ignore else @preserve +[ts,es].includes(t.code)&&t.preventDefault()};function Xi(t){const{code:s}=t,e=We(this),n=e&&Jt(e),{activeElement:o}=e&&w(e);// istanbul ignore else @preserve +if(n&&o){const{menu:i,open:c}=n,a=ji(i);if(a&&a.length&&[ts,es].includes(s)){let r=a.indexOf(o);// istanbul ignore else @preserve +o===e?r=0:s===es?r=r>1?r-1:0:s===ts&&(r=r{(e?_:B)(this.element,N,zi)});const{parentElement:o}=this.element,[i]=gt(Tn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return $n}get defaults(){return Wi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +if(!n){const c=We(e),a=c&&Jt(c);a&&a.hide(),[bs,Dn,An].forEach(r=>{r.relatedTarget=e}),E(i,bs),bs.defaultPrevented||(h(o,m),h(i,m),O(e,rt,"true"),In(this),this.open=!n,ht(e),Ln(this),E(i,Dn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +n&&([ws,xn].forEach(c=>{c.relatedTarget=e}),E(i,ws),ws.defaultPrevented||(b(o,m),b(i,m),O(e,rt,"false"),this.open=!n,Ln(this),E(i,xn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Gt,"selector",Cn),d(Gt,"init",Ri),d(Gt,"getInstance",Jt);const U="modal",Es="Modal",$s="Offcanvas",Yi="fixed-top",Ui="fixed-bottom",Nn="sticky-top",On="position-sticky",Mn=t=>[...gt(Yi,t),...gt(Ui,t),...gt(Nn,t),...gt(On,t),...gt("is-fixed",t)],qi=t=>{const s=wt(t);I(s,{paddingRight:"",overflow:""});const e=Mn(s);// istanbul ignore else @preserve +e.length&&e.forEach(n=>{I(n,{paddingRight:"",marginRight:""})})},_n=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Bn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:_n(t),c=Mn(e);// istanbul ignore else @preserve +if(s){I(e,{overflow:"hidden",paddingRight:`${n+i}px`});// istanbul ignore else @preserve +c.length&&c.forEach(a=>{const r=z(a,"paddingRight");a.style.paddingRight=`${parseInt(r,10)+i}px`;// istanbul ignore else @preserve +if([Nn,On].some(l=>f(a,l))){const l=z(a,"marginRight");a.style.marginRight=`${parseInt(l,10)-i}px`}})}},G="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),Rn=(t,s)=>{const e=x(s)&&s.nodeName==="BODY",n=x(s)&&!e?s:yt,o=e?s:wt(t);// istanbul ignore else @preserve +x(t)&&(n===yt&&o.append(yt),n.append(t))},Fn=(t,s)=>{const e=x(s)&&s.nodeName==="BODY",n=x(s)&&!e?s:yt;// istanbul ignore else @preserve +x(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Ts=(t,s)=>{const e=x(s)&&s.nodeName!=="BODY"?s:yt;return x(t)&&e.contains(t)},Wn="backdrop",jn=`${U}-${Wn}`,zn=`${G}-${Wn}`,Vn=`.${U}.${m}`,ys=`.${G}.${m}`,k=vt("div"),Mt=t=>P(`${Vn},${ys}`,w(t)),Cs=t=>{const s=t?jn:zn;[jn,zn].forEach(e=>{b(k,e)}),h(k,s)},Xn=(t,s,e)=>{Cs(e),Rn(k,wt(t)),s&&h(k,F)},Kn=()=>{f(k,m)||(h(k,m),Lt(k))},je=()=>{b(k,m)},Yn=t=>{Mt(t)||(b(k,F),Fn(k,wt(t)),qi(t))},Un=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Zi=`.${U}`,qn=`[${at}="${U}"]`,Ji=`[${_e}="${U}"]`,Zn=`${U}-static`,Gi={backdrop:!0,keyboard:!0},ve=t=>W(t,Es),Qi=t=>new Qt(t),ze=$(`show.bs.${U}`),Jn=$(`shown.bs.${U}`),Ss=$(`hide.bs.${U}`),Gn=$(`hidden.bs.${U}`),Qn=t=>{const{element:s}=t,e=_n(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;// istanbul ignore next @preserve: impossible to test? +if(!a&&e){const l={[Et(s)?"paddingLeft":"paddingRight"]:`${e}px`};I(s,l)}Bn(s,a||n!==o)},to=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,sc),e(Xt(n),Ae,o,st),e(w(n),De,ec)},eo=t=>{const{triggers:s,element:e,relatedTarget:n}=t;Yn(e),I(e,{paddingRight:"",display:""}),to(t);const o=ze.relatedTarget||s.find(Un);// istanbul ignore else @preserve +o&&ht(o),Gn.relatedTarget=n,E(e,Gn),Me(e)},so=t=>{const{element:s,relatedTarget:e}=t;ht(s),to(t,!0),Jn.relatedTarget=e,E(s,Jn),Me(s)},no=t=>{const{element:s,hasFade:e}=t;I(s,{display:"block"}),Qn(t);// istanbul ignore else @preserve +Mt(s)||I(wt(s),{overflow:"hidden"}),h(s,m),At(s,le),O(s,Pe,"true"),e?A(s,()=>so(t)):so(t)},oo=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&f(k,m)&&!Mt(s)?(je(),A(k,()=>eo(t))):eo(t)},tc=t=>{const{target:s}=t,e=s&&M(s,qn),n=e&&V(e),o=n&&ve(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle()}},ec=({code:t,target:s})=>{const e=P(Vn,w(s)),n=e&&ve(e);// istanbul ignore else @preserve +if(n){const{options:o}=n;// istanbul ignore else @preserve +o.keyboard&&t===ss&&f(e,m)&&(n.relatedTarget=null,n.hide())}},sc=t=>{var n,o;const{currentTarget:s}=t,e=s&&ve(s);// istanbul ignore else @preserve +if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:r}=i,{target:l}=t,g=(o=(n=w(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(l),v=l&&M(l,Ji);// istanbul ignore else @preserve +c&&!p?u.set(s,()=>{h(s,Zn),A(a,()=>nc(e))},17):(v||!g&&!c&&!p&&r)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},nc=t=>{const{element:s,modalDialog:e}=t,n=(ge(e)||0)+17;b(s,Zn),u.set(s,()=>u.clear(s),n)};class Qt extends nt{constructor(e,n){super(e,n);d(this,"update",()=>{// istanbul ignore else @preserve +f(this.element,m)&&Qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,tc))});const{element:o}=this,i=P(`.${U}-dialog`,o);// istanbul ignore else @preserve +i&&(this.modalDialog=i,this.triggers=[...Z(qn,w(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=f(o,F),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return Es}get defaults(){return Gi}toggle(){f(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;// istanbul ignore else @preserve +if(!f(e,m)&&(ze.relatedTarget=i||void 0,E(e,ze),!ze.defaultPrevented)){const r=Mt(e);// istanbul ignore else @preserve +if(r&&r!==e){const l=ve(r)||W(r,$s);// istanbul ignore else @preserve +l&&l.hide()}if(c)Ts(k)?Cs(!0):Xn(e,o,!0),a=ge(k),Kn(),setTimeout(()=>no(this),a);else{no(this);// istanbul ignore else @preserve +r&&f(k,m)&&je()}}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;// istanbul ignore else @preserve +if(f(e,m)){Ss.relatedTarget=o||void 0,E(e,Ss);// istanbul ignore else @preserve +Ss.defaultPrevented||(b(e,m),O(e,le,"true"),At(e,Pe),n?A(e,()=>oo(this)):oo(this))}}dispose(){const e={...this},{modalDialog:n,hasFade:o}=e,i=()=>setTimeout(()=>super.dispose(),17);this.hide(),this._toggleEventListeners(),o?A(n,i):i()}}d(Qt,"selector",Zi),d(Qt,"init",Qi),d(Qt,"getInstance",ve);const oc=`.${G}`,Hs=`[${at}="${G}"]`,ic=`[${_e}="${G}"]`,Ve=`${G}-toggling`,cc={backdrop:!0,keyboard:!0,scroll:!1},be=t=>W(t,$s),ac=t=>new te(t),Xe=$(`show.bs.${G}`),io=$(`shown.bs.${G}`),Ps=$(`hide.bs.${G}`),co=$(`hidden.bs.${G}`),lc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Bn(s,e!==n)},ao=(t,s)=>{const e=s?_:B,n=w(t.element);e(n,De,fc),e(n,N,hc)},lo=t=>{const{element:s,options:e}=t;// istanbul ignore else @preserve +e.scroll||(lc(t),I(wt(s),{overflow:"hidden"})),h(s,Ve),h(s,m),I(s,{visibility:"visible"}),A(s,()=>gc(t))},rc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&f(k,m)&&je(),A(s,()=>pc(t))},dc=t=>{const s=M(t.target,Hs),e=s&&V(s),n=e&&be(e);// istanbul ignore else @preserve +if(n){n.relatedTarget=s,n.toggle();// istanbul ignore else @preserve +s&&s.tagName==="A"&&t.preventDefault()}},hc=t=>{const{target:s}=t,e=P(ys,w(s)),n=P(ic,e),o=e&&be(e);// istanbul ignore else @preserve +if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,r=M(s,Hs),l=w(e).getSelection();// istanbul ignore else: a filter is required here @preserve +if(!k.contains(s)||a!=="static"){// istanbul ignore else @preserve +!(l&&l.toString().length)&&(!e.contains(s)&&a&&(!r||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide());// istanbul ignore next @preserve +r&&r.tagName==="A"&&t.preventDefault()}}},fc=({code:t,target:s})=>{const e=P(ys,w(s)),n=e&&be(e);// istanbul ignore else @preserve +if(n){// istanbul ignore else @preserve +n.options.keyboard&&t===ss&&(n.relatedTarget=null,n.hide())}},gc=t=>{const{element:s}=t;b(s,Ve),At(s,le),O(s,Pe,"true"),O(s,"role","dialog"),E(s,io),ao(t,!0),ht(s),Me(s)},pc=t=>{const{element:s,triggers:e}=t;O(s,le,"true"),At(s,Pe),At(s,"role"),I(s,{visibility:""});const n=Xe.relatedTarget||e.find(Un);// istanbul ignore else @preserve +n&&ht(n),Yn(s),E(s,co),b(s,Ve),Me(s),Mt(s)||ao(t)};class te extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,dc))});const{element:o}=this;this.triggers=[...Z(Hs,w(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return $s}get defaults(){return cc}toggle(){f(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!f(e,m)&&(Xe.relatedTarget=o||void 0,io.relatedTarget=o||void 0,E(e,Xe),!Xe.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=be(c)||W(c,Es);// istanbul ignore else @preserve +a&&a.hide()}if(n.backdrop)Ts(k)?Cs():Xn(e,!0),i=ge(k),Kn(),setTimeout(()=>lo(this),i);else{lo(this);// istanbul ignore next @preserve - this test was done on Modal +c&&f(k,m)&&je()}}}hide(){const{element:e,relatedTarget:n}=this;f(e,m)&&(Ps.relatedTarget=n||void 0,co.relatedTarget=n||void 0,E(e,Ps),Ps.defaultPrevented||(h(e,Ve),b(e,m),rc(this)))}dispose(){const{element:e}=this,n=f(e,m),o=()=>setTimeout(()=>super.dispose(),1);if(this.hide(),this._toggleEventListeners(),n){A(e,o);// istanbul ignore next @preserve +}else o()}}d(te,"selector",oc),d(te,"init",ac),d(te,"getInstance",be);const _t="popover",Ke="Popover",ut="tooltip",ro=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},ho={top:"top",bottom:"bottom",left:"start",right:"end"},Ds=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;// istanbul ignore else @preserve +if(n){const a={...ho},r=Et(e);I(n,{top:"",left:"",right:"",bottom:""});const l=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:L,offsetWidth:tt}=ft(e);let{placement:y}=i;const{clientWidth:K,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?K-q:v-tt),it=r&&mt?S:0,lt=v-(r?0:S)-1,{width:j,height:Y,left:D,right:ce,top:Ht}=pe(e,!0),{x:R,y:Pt}={x:D,y:Ht};I(c,{top:"",left:"",right:"",bottom:""});let Ft=0,Te="",Dt=0,Os="",ae="",Ye="",Ms="";const Wt=c.offsetWidth||0,xt=c.offsetHeight||0,_s=Wt/2;let ye=Ht-p-xt<0,Ce=Ht+p+Y+xt>=L,Se=D-g-Wt=lt;const Ue=["left","right"],Bs=["top","bottom"];ye=Ue.includes(y)?Ht+Y/2-p/2-xt<0:ye,Ce=Ue.includes(y)?Ht+p/2+Y/2+xt>=L:Ce,Se=Bs.includes(y)?D+j/2-g/2=lt:He,y=Ue.includes(y)&&Se&&He?"top":y,y=y==="top"&&ye?"bottom":y,y=y==="bottom"&&Ce?"top":y,y=y==="left"&&Se?"right":y,y=y==="right"&&He?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y]));// istanbul ignore else @preserve +Ue.includes(y)?(y==="left"?Dt=R-g-(l?Wt:0):Dt=R+j+(l?Wt:0),ye&&Ce?(Ft=0,Te=0,ae=Ht+Y/2-xt/2):ye?(Ft=Pt,Te="",ae=Y/2-Wt):Ce?(Ft=Pt-p+Y,Te="",ae=p-Y/2-Wt):(Ft=Pt-p/2+Y/2,ae=p/2-xt/2)):Bs.includes(y)&&(y==="top"?Ft=Pt-p-(l?xt:0):Ft=Pt+Y+(l?xt:0),Se?(Dt=0,Ye=R+j/2-_s):He?(Dt="auto",Os=0,Ms=j/2+lt-ce-_s):(Dt=R-g/2+j/2,Ye=g/2-_s)),I(n,{top:`${Ft}px`,bottom:Te===""?"":`${Te}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:Os!==""?`${Os}px`:""});// istanbul ignore else @preserve +T(c)&&(ae!==""&&(c.style.top=`${ae}px`),Ye!==""?c.style.left=`${Ye}px`:Ms!==""&&(c.style.right=`${Ms}px`));const Yc=$(`updated.bs.${zt(t.name)}`);E(e,Yc)}},xs={template:ro(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},fo="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{// istanbul ignore else @preserve +if(fe(s)&&s.length){let n=s.trim();ri(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(di(s)||li(s)&&s.every(x))&&t.append(...s)},uc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:r,customClass:l,sanitizeFn:g,dismissible:p,content:v,btnClose:L}=o,tt=s?ut:_t,y={...ho};let K=[],q=[];Et(n)&&(y.left="end",y.right="start");const ie=`bs-${tt}-${y[c]}`;let mt;if(T(a))mt=a;else{const it=vt("div");Ct(it,a,g),mt=it.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;// istanbul ignore else @preserve +if(S){O(S,"id",e),O(S,"role",ut);const it=s?`${ut}-inner`:`${_t}-body`,lt=s?null:P(`.${_t}-header`,S),j=P(`.${it}`,S);t.arrow=P(`.${tt}-arrow`,S);const{arrow:Y}=t;if(T(i))K=[i.cloneNode(!0)];else{const D=vt("div");Ct(D,i,g),K=[...D.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const D=vt("div");Ct(D,v,g),q=[...D.childNodes]}if(p)if(i)if(T(L))K=[...K,L.cloneNode(!0)];else{const D=vt("div");Ct(D,L,g),K=[...K,D.firstChild]}else{// istanbul ignore else @preserve +if(lt&<.remove(),T(L))q=[...q,L.cloneNode(!0)];else{const D=vt("div");Ct(D,L,g),q=[...q,D.firstChild]}}// istanbul ignore else @preserve +if(s)i&&j&&Ct(j,i,g);else{// istanbul ignore else @preserve +i&<&&Ct(lt,K,g);// istanbul ignore else @preserve +v&&j&&Ct(j,q,g),t.btn=P(".btn-close",S)||void 0}h(S,"position-fixed"),h(Y,"position-absolute");// istanbul ignore else @preserve +f(S,tt)||h(S,tt);// istanbul ignore else @preserve +r&&!f(S,F)&&h(S,F);// istanbul ignore else @preserve +l&&!f(S,l)&&h(S,l);// istanbul ignore else @preserve +f(S,ie)||h(S,ie)}},mc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);){n=ai(n);// istanbul ignore else @preserve +Gs(n)||hi(n)||e.push(n)}return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||w(t).body},vc=`[${at}="${ut}"],[data-tip="${ut}"]`,go="title";let po=t=>W(t,Bt);const bc=t=>new St(t),wc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,ct),Fn(e,n===o?n:o)},we=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Ts(s,e===n?e:n)},Ec=(t,s)=>{const{element:e}=t;t._toggleEventListeners();// istanbul ignore else @preserve +de(e,fo)&&t.name===Bt&&wo(t);// istanbul ignore else @preserve +s&&s()},uo=(t,s)=>{const e=s?_:B,{element:n}=t;e(w(n),Qe,t.handleTouch,st),[Ie,Ae].forEach(o=>{e(Xt(n),o,t.update,st)})},mo=t=>{const{element:s}=t,e=$(`shown.bs.${zt(t.name)}`);uo(t,!0),E(s,e),u.clear(s,"in")},vo=t=>{const{element:s}=t,e=$(`hidden.bs.${zt(t.name)}`);uo(t),wc(t),E(s,e),u.clear(s,"out")},bo=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,r=M(n,`.${U}`),l=M(n,`.${G}`);// istanbul ignore else @preserve +const g=Xt(n),v=o===i&&c!==a?o:g;e(v,Ae,t.update,st),e(v,Ie,t.update,st),r&&e(r,`hide.bs.${U}`,t.handleHide),l&&e(l,`hide.bs.${G}`,t.handleHide)},wo=(t,s)=>{const e=[fo,go],{element:n}=t;O(n,e[s?0:1],s||et(n,e[0])||""),At(n,e[s?1:0])};class St extends nt{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Ds(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!we(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;// istanbul ignore if @preserve +n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,l=!!(this.name!==Bt&&i.dismissible);// istanbul ignore else @preserve +a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{// istanbul ignore else @preserve +if(p===Vo){n(o,Ws,this.handleShow),n(o,xe,this.handleShow);// istanbul ignore else @preserve +l||(n(o,Ge,this.handleHide),n(w(o),Qe,this.handleTouch,st))}else if(p===N)n(o,p,l?this.handleShow:this.toggle);else if(p===Ze){n(o,Je,this.handleShow);// istanbul ignore else @preserve +l||n(o,Fs,this.handleHide);// istanbul ignore else @preserve +ti&&n(o,N,this.handleFocus)}// istanbul ignore else @preserve +l&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;// istanbul ignore next @preserve: this is to set Popover too +po=l=>W(l,a),this.enabled=!0,this.id=`${c}-${en(o,c)}`;const{options:r}=this;if(!(!r.title&&i||!i&&!r.content)){dt(xs,{titleAttr:""});// istanbul ignore else @preserve +de(o,go)&&i&&typeof r.title=="string"&&wo(this,r.title),this.container=mc(o),this.offsetParent=["sticky","fixed"].some(l=>z(this.container,"position")===l)?this.container:w(this.element).body,uc(this),this._toggleEventListeners(!0)}}get name(){return Bt}get defaults(){return xs}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:r}=e,l=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!l&&!we(this)&&u.set(o,()=>{const p=$(`show.bs.${zt(this.name)}`);E(o,p);// istanbul ignore else @preserve +if(!p.defaultPrevented){Rn(n,g),O(o,ct,`#${a}`),this.update(),bo(this,!0);// istanbul ignore else @preserve +f(n,m)||h(n,m);// istanbul ignore else @preserve +r?A(n,()=>mo(this)):mo(this)}},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in");// istanbul ignore else @preserve +n&&we(this)&&u.set(o,()=>{const a=$(`hide.bs.${zt(this.name)}`);E(o,a);// istanbul ignore else @preserve +if(!a.defaultPrevented){this.update(),b(n,m),bo(this);// istanbul ignore else @preserve +i?A(n,()=>vo(this)):vo(this)}},c+17,"out")}enable(){const{enabled:e}=this;// istanbul ignore else @preserve +e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,enabled:n}=this;// istanbul ignore else @preserve +n&&(e&&we(this)&&this.hide(),this._toggleEventListeners(),this.enabled=!n)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>Ec(o,()=>super.dispose()),17);n.animation&&we(o)?(this.options.delay=0,this.hide(),A(e,i)):i()}}d(St,"selector",vc),d(St,"init",bc),d(St,"getInstance",po),d(St,"styleTip",Ds);const $c=`[${at}="${_t}"],[data-tip="${_t}"]`,Tc=dt({},xs,{template:ro(_t),content:"",dismissible:!1,btnClose:''}),yc=t=>W(t,Ke),Cc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;// istanbul ignore else @preserve +e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return Tc}}d(Rt,"selector",$c),d(Rt,"init",Cc),d(Rt,"getInstance",yc),d(Rt,"styleTip",Ds);const Sc="scrollspy",Eo="ScrollSpy",Hc='[data-bs-spy="scroll"]',Pc={offset:10,target:null},Dc=t=>W(t,Eo),xc=t=>new ee(t),$o=$(`activate.bs.${Sc}`),Ac=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,r=os(e),l=s&&as("A",s),g=e?To(e):i;t.scrollTop=r?e.scrollY:e.scrollTop;// istanbul ignore else @preserve +if(l&&(g!==i||o!==l.length)){let p,v,L;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Ic(t),[...l].forEach(tt=>{p=et(tt,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&P(p,w(c)),v&&(t.items.push(tt),L=pe(v),t.offsets.push((r?L.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},To=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Ic=({element:t,scrollTarget:s})=>os(s)?s.innerHeight:pe(t).height,yo=t=>{[...as("A",t)].forEach(s=>{f(s,C)&&b(s,C)})},Co=(t,s)=>{const{target:e,element:n}=t;// istanbul ignore else @preserve +T(e)&&yo(e),t.activeItem=s,h(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(f(i,"nav")||f(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;// istanbul ignore else @preserve +a&&!f(a,C)&&h(a,C)}),$o.relatedTarget=s,E(n,$o)};class ee extends nt{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;// istanbul ignore else @preserve +if(T(e)&&e.offsetHeight>0){Ac(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const l=c[i-1];// istanbul ignore else @preserve +a!==l&&Co(this,l);return}const{offsets:r}=this;// istanbul ignore else @preserve +if(a&&n0){this.activeItem=null;// istanbul ignore else @preserve +e&&yo(e);return}c.forEach((l,g)=>{a!==l&&n>=r[g]&&(typeof r[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ie,this.refresh,st)});const{element:o,options:i}=this;this.target=P(i.target,w(o)),this.target&&(this.scrollTarget=o.clientHeightW(t,So),Lc=t=>new se(t),As=$(`show.bs.${Ee}`),Do=$(`shown.bs.${Ee}`),Is=$(`hide.bs.${Ee}`),xo=$(`hidden.bs.${Ee}`),$e=new Map,Ao=t=>{const{tabContent:s,nav:e}=t;// istanbul ignore else @preserve +s&&f(s,Nt)&&(s.style.height="",b(s,Nt));// istanbul ignore else @preserve +e&&u.clear(e)},Io=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&$e.get(o)||{tab:null};// istanbul ignore next @preserve +// istanbul ignore else @preserve +if(e&&n&&f(n,F)){const{currentHeight:c,nextHeight:a}=$e.get(s)||{currentHeight:0,nextHeight:0};// istanbul ignore next @preserve +// istanbul ignore else @preserve: vitest won't validate this branch +c!==a?setTimeout(()=>{e.style.height=`${a}px`,Lt(e),A(e,()=>Ao(t))},50):Ao(t)}else o&&u.clear(o);Do.relatedTarget=i,E(s,Do)},Lo=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&$e.get(o)||{tab:null,content:null};let a=0;// istanbul ignore else @preserve +n&&e&&f(e,F)&&([c,e].forEach(r=>{// istanbul ignore else @preserve +T(r)&&h(r,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),As.relatedTarget=i,xo.relatedTarget=s,E(s,As);// istanbul ignore else @preserve +if(!As.defaultPrevented){// istanbul ignore else @preserve +e&&h(e,C);// istanbul ignore else @preserve +c&&b(c,C);// istanbul ignore else @preserve +if(n&&e&&f(e,F)){const r=e.scrollHeight;$e.set(s,{currentHeight:a,nextHeight:r,tab:null,content:null}),h(n,Nt),n.style.height=`${a}px`,Lt(n),[c,e].forEach(l=>{// istanbul ignore else @preserve +l&&b(l,"overflow-hidden")})}if(e&&e&&f(e,F))setTimeout(()=>{h(e,m),A(e,()=>{Io(t)})},1);else{// istanbul ignore else @preserve +e&&h(e,m),Io(t)}// istanbul ignore else @preserve +i&&E(i,xo)}},ko=t=>{const{nav:s}=t;// istanbul ignore next @preserve +if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;// istanbul ignore else @preserve +e.length===1&&!Ot.some(i=>f(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},No=t=>{// istanbul ignore next @preserve +if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?P(`.${Ot[0]}-toggle`,s):null},kc=t=>{const s=Po(t.target);// istanbul ignore else @preserve +s&&(t.preventDefault(),s.show())};class se extends nt{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,kc)});const{element:n}=this,o=V(n);// istanbul ignore else @preserve +if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=No(n);const{tab:a}=ko(this);if(i&&!a){const r=P(Ho,i),l=r&&V(r);// istanbul ignore else @preserve +l&&(h(r,C),h(l,m),h(l,C),O(n,qe,"true"))}this._toggleEventListeners(!0)}}get name(){return So}show(){const{element:e,content:n,nav:o,dropdown:i}=this;// istanbul ignore else @preserve +if(!(o&&u.get(o))&&!f(e,C)){const{tab:c,content:a}=ko(this);// istanbul ignore else @preserve +o&&$e.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),Is.relatedTarget=e;// istanbul ignore else @preserve +if(T(c)){E(c,Is);// istanbul ignore else @preserve +if(!Is.defaultPrevented){h(e,C),O(e,qe,"true");const r=T(c)&&No(c);r&&f(r,C)&&b(r,C);// istanbul ignore else @preserve +if(o){const l=()=>{// istanbul ignore else @preserve +c&&(b(c,C),O(c,qe,"false")),i&&!f(i,C)&&h(i,C)};a&&(f(a,F)||n&&f(n,F))?u.set(o,l,1):l()}// istanbul ignore else @preserve +a&&(b(a,m),f(a,F)?A(a,()=>Lo(this)):Lo(this))}}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(se,"selector",Ho),d(se,"init",Lc),d(se,"getInstance",Po);const Q="toast",Oo="Toast",Nc=`.${Q}`,Oc=`[${_e}="${Q}"]`,Mo=`[${at}="${Q}"]`,ne="showing",_o="hide",Mc={animation:!0,autohide:!0,delay:5e3},Ls=t=>W(t,Oo),_c=t=>new oe(t),Bo=$(`show.bs.${Q}`),Bc=$(`shown.bs.${Q}`),Ro=$(`hide.bs.${Q}`),Rc=$(`hidden.bs.${Q}`),Fo=t=>{const{element:s,options:e}=t;b(s,ne),u.clear(s,ne),E(s,Bc);// istanbul ignore else @preserve +e.autohide&&u.set(s,()=>t.hide(),e.delay,Q)},Wo=t=>{const{element:s}=t;b(s,ne),b(s,m),h(s,_o),u.clear(s,Q),E(s,Rc)},Fc=t=>{const{element:s,options:e}=t;h(s,ne),e.animation?(Lt(s),A(s,()=>Wo(t))):Wo(t)},Wc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,_o),Lt(s),h(s,m),h(s,ne),e.animation?A(s,()=>Fo(t)):Fo(t)},17,ne)},jc=t=>{const{target:s}=t,e=s&&M(s,Mo),n=e&&V(e),o=n&&Ls(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show()}},zc=t=>{const s=t.target,e=Ls(s),{type:n,relatedTarget:o}=t;// istanbul ignore else @preserve: a solid filter is required +e&&s!==o&&!s.contains(o)&&([xe,Je].includes(n)?u.clear(s,Q):u.set(s,()=>e.hide(),e.options.delay,Q))};class oe extends nt{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&!n&&(E(e,Bo),Bo.defaultPrevented||Wc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&n&&(E(e,Ro),Ro.defaultPrevented||Fc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:r}=this;// istanbul ignore else @preserve +c&&n(c,N,r);// istanbul ignore else @preserve +a.autohide&&[Je,Fs,xe,Ge].forEach(l=>n(o,l,zc));// istanbul ignore else @preserve +i.length&&i.forEach(l=>n(l,N,jc))});const{element:o,options:i}=this;i.animation&&!f(o,F)?h(o,F):!i.animation&&f(o,F)&&b(o,F),this.dismiss=P(Oc,o),this.triggers=[...Z(Mo,w(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Oo}get defaults(){return Mc}get isShown(){return f(this.element,m)}dispose(){const{element:e,isShown:n}=this;this._toggleEventListeners(),u.clear(e,Q),n&&b(e,m),super.dispose()}}d(oe,"selector",Nc),d(oe,"init",_c),d(oe,"getInstance",Ls);const ks=new Map;[Yt,Ut,qt,Zt,Gt,Qt,te,Rt,ee,se,oe,St].forEach(t=>ks.set(t.prototype.name,t));const Vc=(t,s)=>{[...s].forEach(e=>t(e))},Xc=(t,s)=>{const e=It.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Ns=t=>{const s=t&&t.nodeName?t:document,e=[...as("*",s)];ks.forEach(n=>{const{init:o,selector:i}=n;Vc(o,e.filter(c=>nn(c,i)))})},Kc=t=>{const s=t&&t.nodeName?t:document;ks.forEach(e=>{Xc(e.prototype.name,s)})};return document.body?Ns():_(document,"DOMContentLoaded",()=>Ns(),{once:!0}),H.Alert=Yt,H.Button=Ut,H.Carousel=qt,H.Collapse=Zt,H.Dropdown=Gt,H.Modal=Qt,H.Offcanvas=te,H.Popover=Rt,H.ScrollSpy=ee,H.Tab=se,H.Toast=oe,H.Tooltip=St,H.initCallback=Ns,H.removeDataAPI=Kc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({}); //# sourceMappingURL=bootstrap-native.js.map diff --git a/dist/bootstrap-native.js.map b/dist/bootstrap-native.js.map index 0e4460d0..d19baaec 100644 --- a/dist/bootstrap-native.js.map +++ b/dist/bootstrap-native.js.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap-native.js","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.3/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.5/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const pe = \"aria-checked\", me = \"aria-description\", fe = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Ne = \"aria-valuemax\", ke = \"aria-valuenow\", Me = \"aria-valuetext\", q = \"abort\", G = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", mt = \"mouseenter\", ft = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Nt = \"pointerleave\", kt = \"pointermove\", Mt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Ot = \"select\", Lt = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ft = \"unload\", Te = {\n DOMContentLoaded: P,\n DOMMouseScroll: Y,\n abort: q,\n beforeunload: G,\n blur: J,\n change: K,\n click: it,\n contextmenu: X,\n dblclick: ut,\n error: Z,\n focus: $,\n focusin: _,\n focusout: tt,\n gesturechange: et,\n gestureend: nt,\n gesturestart: ot,\n hover: pt,\n keydown: st,\n keypress: ct,\n keyup: rt,\n load: at,\n mousedown: lt,\n mousemove: bt,\n mousein: gt,\n mouseout: vt,\n mouseenter: mt,\n mouseleave: ft,\n mouseover: Et,\n mouseup: dt,\n mousewheel: ht,\n move: yt,\n orientationchange: wt,\n pointercancel: At,\n pointerdown: St,\n pointerleave: Nt,\n pointermove: kt,\n pointerup: Mt,\n readystatechange: Tt,\n reset: Dt,\n resize: Ct,\n scroll: zt,\n select: Ot,\n selectend: Lt,\n selectstart: It,\n submit: xt,\n touchcancel: Ht,\n touchend: Pt,\n touchmove: Bt,\n touchstart: Vt,\n unload: Ft\n}, De = \"drag\", Ce = \"dragstart\", Oe = \"dragenter\", Le = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), Pe = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, Fe = { in: \"focusin\", out: \"focusout\" }, Ue = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", je = \"ArrowLeft\", qe = \"ArrowRight\", Ge = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"NumpadEnter\", $e = \"Escape\", _e = \"Insert\", tn = \"Meta\", en = \"Pause\", nn = \"ScrollLock\", on = \"Shift\", sn = \"Space\", cn = \"Tab\", Ut = \"animationDuration\", Wt = \"animationDelay\", F = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", U = \"transitionProperty\", rn = \"addEventListener\", an = \"removeEventListener\", un = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, ln = \"offsetHeight\", dn = \"offsetWidth\", pn = \"scrollHeight\", mn = \"scrollWidth\", fn = \"tabindex\", jt = navigator.userAgentData, A = jt, { userAgent: qt } = navigator, S = qt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst gn = O, x = /(iPhone|iPod|iPad)/, vn = A ? A.brands.some((t) => x.test(t.brand)) : (\n /* istanbul ignore next */\n x.test(S)\n), En = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next */\n !1\n), { head: N } = document, bn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), Gt = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n const s = (r) => {\n (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n };\n Gt(t, e, s, o);\n}, Xt = () => {\n}, hn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n Kt(document, P, Xt, e);\n } catch {\n }\n return t;\n})(), yn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), wn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, An = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Sn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), Yt = (t, e) => t.getAttribute(e), Nn = (t, e, n) => e.getAttributeNS(t, n), kn = (t, e) => t.hasAttribute(e), Mn = (t, e, n) => e.hasAttributeNS(t, n), Tn = (t, e, n) => t.setAttribute(e, n), Dn = (t, e, n, o) => e.setAttributeNS(t, n, o), Cn = (t, e) => t.removeAttribute(e), On = (t, e, n) => e.removeAttributeNS(t, n), Ln = (t, ...e) => {\n t.classList.add(...e);\n}, In = (t, ...e) => {\n t.classList.remove(...e);\n}, zn = (t, e) => t.classList.contains(e), { body: xn } = document, { documentElement: Vn } = document, Bn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!u(t)) return;\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!u(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n }\n}, Hn = (t, e) => L.get(t, e), k = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, M = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n if (!t) return;\n if (k(t))\n return d().createElement(t);\n const { tagName: e } = t, n = Zt(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, M(n, o);\n}, $t = (t, e) => {\n if (!t || !e) return;\n if (k(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = $t(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, M(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Pn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, _t = (t) => {\n const e = g(t, F), n = g(t, Wt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, te = (t) => {\n const e = g(t, F), n = g(t, Ut), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Fn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = te(t), r = _t(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ee = (t) => {\n const e = g(t, U), n = g(t, Qt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, ne = (t) => {\n const e = g(t, U), n = g(t, Rt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Un = (t, e) => {\n let n = 0;\n const o = new Event(C), s = ne(t), r = ee(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, Wn = (t) => Float32Array.from(Array.from(t)), Rn = (t) => Float64Array.from(Array.from(t)), Qn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), jn = (t, e, n, o) => {\n const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n return w(r).forEach(([c, m]) => {\n const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (j) => oe(j)) : c;\n l[y] = V(m);\n }), w(s).forEach(([c, m]) => {\n s[c] = V(m);\n }), w(e).forEach(([c, m]) => {\n c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : m;\n }), a;\n}, qn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Gn = (t) => Object.keys(t), Jn = (t) => Object.values(t), Kn = (t) => Object.fromEntries(t), Xn = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n return v(e) && M(n, e), n;\n}, Yn = { passive: !0 }, Zn = (t) => t.offsetHeight, $n = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && k(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, M(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, f = /* @__PURE__ */ new Map(), _n = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n u(t) && (o && o.length ? (f.has(t) || f.set(t, /* @__PURE__ */ new Map()), f.get(t).set(o, setTimeout(e, n))) : f.set(t, setTimeout(e, n)));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!u(t)) return null;\n const n = f.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : se(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!u(t)) return;\n const n = f.get(t);\n e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && f.delete(t)) : (clearTimeout(n), f.delete(t));\n }\n}, to = (t) => t.toUpperCase(), h = (t, e) => {\n const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n let p = 1, c = 1;\n if (e && u(t)) {\n const { offsetWidth: m, offsetHeight: y } = t;\n p = m > 0 ? Math.round(n) / m : (\n /* istanbul ignore next */\n 1\n ), c = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / c,\n top: s / c,\n right: r / p,\n bottom: a / c,\n left: l / p,\n x: l / p,\n y: s / c\n };\n}, eo = (t) => d(t).body, T = (t) => d(t).documentElement, no = (t) => d(t).head, oo = (t) => {\n const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, so = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n if (!u(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, co = (t, e, n) => {\n const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n if (o) {\n const a = h(e, !0);\n r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - r.x,\n y: s.top + n.y - r.y,\n width: s.width,\n height: s.height\n };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n let n = e ? B : H;\n if (e) {\n const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, ro = (t) => {\n var e;\n return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, ao = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, io = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, uo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n return e <= o && n >= 0;\n}, lo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && r <= n && a <= e;\n}, po = (t) => ie(t) && t.every(u) || !1, mo = (t) => typeof t == \"function\" || !1, fo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, go = (t) => u(t) && t.tagName === \"IMG\" || !1, vo = (t) => {\n if (!k(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, Eo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, bo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, ho = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, yo = (t) => T(t).dir === \"rtl\", wo = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Ao = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, So = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), No = (t) => [...de(\"*\", t)].filter(ue), ko = (t, e) => d(e).getElementById(t) || null, Mo = (t, e) => (i(e) ? e : d()).querySelectorAll(t), To = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n t\n), Do = (t, e) => t.matches(e), Co = \"2.0.3\";\nexport {\n Bn as ArrayFrom,\n P as DOMContentLoadedEvent,\n Y as DOMMouseScrollEvent,\n L as Data,\n Wn as Float32ArrayFrom,\n Rn as Float64ArrayFrom,\n M as ObjectAssign,\n w as ObjectEntries,\n Kn as ObjectFromEntries,\n qn as ObjectHasOwn,\n Gn as ObjectKeys,\n Jn as ObjectValues,\n _n as Timer,\n q as abortEvent,\n Ln as addClass,\n rn as addEventListener,\n Wt as animationDelay,\n Ut as animationDuration,\n D as animationEndEvent,\n F as animationName,\n pe as ariaChecked,\n fe as ariaDescribedBy,\n me as ariaDescription,\n ge as ariaExpanded,\n ve as ariaHasPopup,\n Ee as ariaHidden,\n be as ariaLabel,\n he as ariaLabelledBy,\n ye as ariaModal,\n we as ariaPressed,\n Ae as ariaSelected,\n Ne as ariaValueMax,\n Se as ariaValueMin,\n ke as ariaValueNow,\n Me as ariaValueText,\n G as beforeunloadEvent,\n un as bezierEasings,\n J as blurEvent,\n K as changeEvent,\n le as closest,\n X as contextmenuEvent,\n Xn as createCustomEvent,\n Zt as createElement,\n $t as createElementNS,\n Q as dispatchEvent,\n Pn as distinct,\n xn as documentBody,\n Vn as documentElement,\n N as documentHead,\n De as dragEvent,\n ze as dragendEvent,\n Oe as dragenterEvent,\n Le as dragleaveEvent,\n Ie as dragoverEvent,\n Ce as dragstartEvent,\n Fn as emulateAnimationEnd,\n Un as emulateTransitionEnd,\n Z as errorEvent,\n Qn as focus,\n $ as focusEvent,\n Fe as focusEvents,\n _ as focusinEvent,\n tt as focusoutEvent,\n et as gesturechangeEvent,\n nt as gestureendEvent,\n ot as gesturestartEvent,\n Yt as getAttribute,\n Nn as getAttributeNS,\n h as getBoundingClientRect,\n No as getCustomElements,\n d as getDocument,\n eo as getDocumentBody,\n T as getDocumentElement,\n no as getDocumentHead,\n _t as getElementAnimationDelay,\n te as getElementAnimationDuration,\n ko as getElementById,\n g as getElementStyle,\n ee as getElementTransitionDelay,\n ne as getElementTransitionDuration,\n To as getElementsByClassName,\n de as getElementsByTagName,\n Hn as getInstance,\n oo as getNodeScroll,\n so as getParentNode,\n co as getRectRelativeToOffsetParent,\n ae as getUID,\n ro as getWindow,\n kn as hasAttribute,\n Mn as hasAttributeNS,\n zn as hasClass,\n vn as isApple,\n ie as isArray,\n ao as isCanvas,\n ue as isCustomElement,\n R as isDocument,\n io as isElement,\n uo as isElementInScrollRange,\n lo as isElementInViewport,\n po as isElementsArray,\n En as isFirefox,\n mo as isFunction,\n fo as isHTMLCollection,\n u as isHTMLElement,\n go as isHTMLImageElement,\n vo as isJSON,\n I as isMap,\n bo as isMedia,\n gn as isMobile,\n i as isNode,\n ho as isNodeList,\n se as isNumber,\n v as isObject,\n yo as isRTL,\n wo as isSVGElement,\n re as isScaledElement,\n ce as isShadowRoot,\n k as isString,\n Ao as isTableElement,\n Eo as isWeakMap,\n W as isWindow,\n We as keyAlt,\n Re as keyArrowDown,\n je as keyArrowLeft,\n qe as keyArrowRight,\n Qe as keyArrowUp,\n Ge as keyBackspace,\n Je as keyCapsLock,\n Ke as keyControl,\n Xe as keyDelete,\n Ye as keyEnter,\n $e as keyEscape,\n _e as keyInsert,\n tn as keyMeta,\n Ze as keyNumpadEnter,\n en as keyPause,\n nn as keyScrollLock,\n on as keyShift,\n sn as keySpace,\n cn as keyTab,\n Ue as keyboardEventKeys,\n st as keydownEvent,\n ct as keypressEvent,\n rt as keyupEvent,\n at as loadEvent,\n xe as loadstartEvent,\n Do as matches,\n Be as mouseClickEvents,\n He as mouseHoverEvents,\n Ve as mouseSwipeEvents,\n it as mouseclickEvent,\n ut as mousedblclickEvent,\n lt as mousedownEvent,\n mt as mouseenterEvent,\n pt as mousehoverEvent,\n gt as mouseinEvent,\n ft as mouseleaveEvent,\n bt as mousemoveEvent,\n vt as mouseoutEvent,\n Et as mouseoverEvent,\n dt as mouseupEvent,\n ht as mousewheelEvent,\n yt as moveEvent,\n Te as nativeEvents,\n Xt as noop,\n jn as normalizeOptions,\n V as normalizeValue,\n Jt as off,\n ln as offsetHeight,\n dn as offsetWidth,\n Gt as on,\n Kt as one,\n wt as orientationchangeEvent,\n Yn as passiveHandler,\n At as pointercancelEvent,\n St as pointerdownEvent,\n Nt as pointerleaveEvent,\n kt as pointermoveEvent,\n Mt as pointerupEvent,\n So as querySelector,\n Mo as querySelectorAll,\n Tt as readystatechangeEvent,\n Zn as reflow,\n Cn as removeAttribute,\n On as removeAttributeNS,\n In as removeClass,\n an as removeEventListener,\n Dt as resetEvent,\n Ct as resizeEvent,\n zt as scrollEvent,\n pn as scrollHeight,\n mn as scrollWidth,\n Ot as selectEvent,\n Lt as selectendEvent,\n It as selectstartEvent,\n Tn as setAttribute,\n Dn as setAttributeNS,\n $n as setElementStyle,\n xt as submitEvent,\n bn as support3DTransform,\n An as supportAnimation,\n hn as supportPassive,\n wn as supportTouch,\n yn as supportTransform,\n Sn as supportTransition,\n fn as tabindex,\n oe as toLowerCase,\n to as toUpperCase,\n Pe as touchEvents,\n Ht as touchcancelEvent,\n Pt as touchendEvent,\n Bt as touchmoveEvent,\n Vt as touchstartEvent,\n Qt as transitionDelay,\n Rt as transitionDuration,\n C as transitionEndEvent,\n U as transitionProperty,\n Ft as unloadEvent,\n S as userAgent,\n A as userAgentData,\n Co as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n getInstance,\n removeClass,\n hasClass,\n addClass,\n setAttribute,\n mouseclickEvent,\n ariaPressed,\n getAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n getDocumentBody,\n getDocumentElement,\n getDocument,\n getWindow,\n removeClass,\n hasClass,\n addClass,\n getElementsByTagName,\n getAttribute,\n querySelector,\n isHTMLElement,\n isWindow,\n createCustomEvent,\n getInstance,\n scrollEvent,\n passiveHandler,\n dispatchEvent,\n getBoundingClientRect,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement, ops?: Record) => T,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) (instance as T & { dispose: () => void }).dispose();\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), { once: true });\n}\n"],"names":["fe","ge","Ee","ye","we","Ae","P","$","_","tt","st","rt","it","lt","pt","mt","ft","St","kt","Mt","Ct","zt","Vt","Ce","Re","Qe","je","qe","$e","Rt","Qt","C","U","jt","A","qt","S","z","x","vn","N","Gt","e","n","o","s","Jt","Kt","r","Xt","Yt","kn","Tn","Cn","Ln","In","zn","v","i","u","E","L","Hn","k","W","R","d","M","Zt","Q","g","ee","ne","Un","a","l","Qn","V","w","oe","jn","p","c","m","y","j","Gn","Xn","Yn","Zn","$n","I","se","f","_n","h","eo","T","ce","so","B","H","b","ae","ro","ie","uo","mo","ho","yo","Ao","le","So","de","Mo","To","Do","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","keyArrowRight","keyArrowLeft","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","isHTMLElement","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","pad","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","delay","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","completeDisposeToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"bootstrap-native.js","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.5/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.6/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const he = \"aria-checked\", ye = \"aria-description\", we = \"aria-describedby\", Ae = \"aria-expanded\", Se = \"aria-haspopup\", X = \"aria-hidden\", Ne = \"aria-label\", Me = \"aria-labelledby\", Te = \"aria-modal\", ke = \"aria-pressed\", De = \"aria-selected\", Ce = \"aria-valuemin\", Oe = \"aria-valuemax\", Le = \"aria-valuenow\", Ie = \"aria-valuetext\", Y = \"abort\", Z = \"beforeunload\", $ = \"blur\", _ = \"change\", tt = \"contextmenu\", P = \"DOMContentLoaded\", et = \"DOMMouseScroll\", nt = \"error\", ot = \"focus\", st = \"focusin\", ct = \"focusout\", rt = \"gesturechange\", at = \"gestureend\", it = \"gesturestart\", ut = \"keydown\", lt = \"keypress\", dt = \"keyup\", pt = \"load\", ft = \"click\", mt = \"dblclick\", gt = \"mousedown\", vt = \"mouseup\", Et = \"hover\", bt = \"mouseenter\", ht = \"mouseleave\", yt = \"mousein\", wt = \"mouseout\", At = \"mouseover\", St = \"mousemove\", Nt = \"mousewheel\", Mt = \"move\", Tt = \"orientationchange\", kt = \"pointercancel\", Dt = \"pointerdown\", Ct = \"pointerleave\", Ot = \"pointermove\", Lt = \"pointerup\", It = \"readystatechange\", xt = \"reset\", zt = \"resize\", Vt = \"select\", Bt = \"selectend\", Ft = \"selectstart\", Ht = \"scroll\", Pt = \"submit\", Ut = \"touchstart\", Wt = \"touchmove\", Rt = \"touchcancel\", Qt = \"touchend\", jt = \"unload\", xe = {\n DOMContentLoaded: P,\n DOMMouseScroll: et,\n abort: Y,\n beforeunload: Z,\n blur: $,\n change: _,\n click: ft,\n contextmenu: tt,\n dblclick: mt,\n error: nt,\n focus: ot,\n focusin: st,\n focusout: ct,\n gesturechange: rt,\n gestureend: at,\n gesturestart: it,\n hover: Et,\n keydown: ut,\n keypress: lt,\n keyup: dt,\n load: pt,\n mousedown: gt,\n mousemove: St,\n mousein: yt,\n mouseout: wt,\n mouseenter: bt,\n mouseleave: ht,\n mouseover: At,\n mouseup: vt,\n mousewheel: Nt,\n move: Mt,\n orientationchange: Tt,\n pointercancel: kt,\n pointerdown: Dt,\n pointerleave: Ct,\n pointermove: Ot,\n pointerup: Lt,\n readystatechange: It,\n reset: xt,\n resize: zt,\n scroll: Ht,\n select: Vt,\n selectend: Bt,\n selectstart: Ft,\n submit: Pt,\n touchcancel: Rt,\n touchend: Qt,\n touchmove: Wt,\n touchstart: Ut,\n unload: jt\n}, ze = \"drag\", Ve = \"dragstart\", Be = \"dragenter\", Fe = \"dragleave\", He = \"dragover\", Pe = \"dragend\", Ue = \"loadstart\", We = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Re = { down: \"mousedown\", up: \"mouseup\" }, Qe = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), je = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, qe = { in: \"focusin\", out: \"focusout\" }, qt = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]', Ge = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, Ke = \"Alt\", Je = \"ArrowDown\", Xe = \"ArrowUp\", Ye = \"ArrowLeft\", Ze = \"ArrowRight\", $e = \"Backspace\", _e = \"CapsLock\", tn = \"Control\", en = \"Delete\", nn = \"Enter\", on = \"NumpadEnter\", sn = \"Escape\", cn = \"Insert\", rn = \"Meta\", an = \"Pause\", un = \"ScrollLock\", ln = \"Shift\", dn = \"Space\", pn = \"Tab\", Gt = \"animationDuration\", Kt = \"animationDelay\", U = \"animationName\", D = \"animationend\", Jt = \"transitionDuration\", Xt = \"transitionDelay\", C = \"transitionend\", W = \"transitionProperty\", fn = \"addEventListener\", mn = \"removeEventListener\", gn = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, vn = \"offsetHeight\", En = \"offsetWidth\", bn = \"scrollHeight\", hn = \"scrollWidth\", yn = \"tabindex\", Yt = navigator.userAgentData, A = Yt, { userAgent: Zt } = navigator, S = Zt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\n// istanbul ignore else @preserve\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst wn = O, V = /(iPhone|iPod|iPad)/, An = A ? A.brands.some((t) => V.test(t.brand)) : (\n /* istanbul ignore next @preserve */\n V.test(S)\n), Sn = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next @preserve */\n !1\n), { head: N } = document, Nn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), R = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Q = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, $t = (t, e, n, o) => {\n const s = (c) => {\n /* istanbul ignore else @preserve */\n (c.target === t || c.currentTarget === t) && (n.apply(t, [c]), Q(t, e, s, o));\n };\n R(t, e, s, o);\n}, _t = () => {\n}, Mn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n // istanbul ignore next @preserve\n $t(document, P, _t, e);\n } catch {\n }\n return t;\n})(), Tn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), kn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, Dn = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Cn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), j = (t, e) => t.getAttribute(e), On = (t, e, n) => e.getAttributeNS(t, n), te = (t, e) => t.hasAttribute(e), Ln = (t, e, n) => e.hasAttributeNS(t, n), In = (t, e, n) => t.setAttribute(e, n), xn = (t, e, n, o) => e.setAttributeNS(t, n, o), zn = (t, e) => t.removeAttribute(e), Vn = (t, e, n) => e.removeAttributeNS(t, n), Bn = (t, ...e) => {\n t.classList.add(...e);\n}, Fn = (t, ...e) => {\n t.classList.remove(...e);\n}, Hn = (t, e) => t.classList.contains(e), { body: Pn } = document, { documentElement: Un } = document, Wn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, l = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!l(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n if (!n || !l(t)) return;\n n.delete(t);\n // istanbul ignore else @preserve\n n.size === 0 && E.delete(e);\n }\n}, Rn = (t, e) => L.get(t, e), M = (t) => typeof t == \"string\" || !1, q = (t) => v(t) && t.constructor.name === \"Window\" || !1, G = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => q(t) ? t.document : G(t) ? t : i(t) ? t.ownerDocument : window.document, T = (t, ...e) => Object.assign(t, ...e), ee = (t) => {\n if (!t) return;\n if (M(t))\n return d().createElement(t);\n const { tagName: e } = t, n = ee(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, T(n, o);\n}, ne = (t, e) => {\n if (!t || !e) return;\n if (M(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = ne(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, T(o, s);\n}, K = (t, e) => t.dispatchEvent(e), Qn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, oe = (t) => {\n const e = g(t, U), n = g(t, Kt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, se = (t) => {\n const e = g(t, U), n = g(t, Gt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, jn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = se(t), c = oe(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else {\n // istanbul ignore next @preserve\n e.apply(t, [o]);\n }\n}, ce = (t) => {\n const e = g(t, W), n = g(t, Xt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, re = (t) => {\n const e = g(t, W), n = g(t, Jt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, qn = (t, e) => {\n let n = 0;\n const o = new Event(C), s = re(t), c = ce(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else\n e.apply(t, [o]);\n}, Gn = (t) => Float32Array.from(Array.from(t)), Kn = (t) => Float64Array.from(Array.from(t)), Jn = (t, e) => t.focus(e), B = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), ae = (t) => t.toLowerCase(), Xn = (t, e, n, o) => {\n const s = { ...n }, c = { ...t.dataset }, a = { ...e }, u = {}, p = \"title\";\n return w(c).forEach(([r, f]) => {\n const y = o && typeof r == \"string\" && r.includes(o) ? r.replace(o, \"\").replace(/[A-Z]/g, (J) => ae(J)) : (\n /* istanbul ignore next @preserve */\n r\n );\n u[y] = B(f);\n }), w(s).forEach(([r, f]) => {\n s[r] = B(f);\n }), w(e).forEach(([r, f]) => {\n // istanbul ignore else @preserve\n r in s ? a[r] = s[r] : r in u ? a[r] = u[r] : a[r] = r === p ? j(t, p) : f;\n }), a;\n}, Yn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Zn = (t) => Object.keys(t), $n = (t) => Object.values(t), _n = (t) => Object.fromEntries(t), to = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n // istanbul ignore else @preserve\n return v(e) && T(n, e), n;\n}, eo = { passive: !0 }, no = (t) => t.offsetHeight, oo = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && M(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, T(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, ie = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), so = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n if (o && o.length) {\n // istanbul ignore else @preserve\n m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n));\n } else\n m.set(t, setTimeout(e, n));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!l(t)) return null;\n const n = m.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : ie(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!l(t)) return;\n const n = m.get(t);\n if (e && e.length && I(n)) {\n clearTimeout(n.get(e)), n.delete(e);\n // istanbul ignore else @preserve\n n.size === 0 && m.delete(t);\n } else\n clearTimeout(n), m.delete(t);\n }\n}, co = (t) => t.toUpperCase(), ue = (t, e) => (i(e) ? e : d()).querySelectorAll(t), x = /* @__PURE__ */ new Map();\nfunction le(t) {\n const { shiftKey: e, code: n } = t, o = d(this), s = [...ue(qt, this)].filter(\n (u) => !te(u, \"disabled\") && !j(u, X)\n );\n if (!s.length) return;\n const c = s[0], a = s[s.length - 1];\n // istanbul ignore else @preserve\n n === \"Tab\" && (e && o.activeElement === c ? (a.focus(), t.preventDefault()) : !e && o.activeElement === a && (c.focus(), t.preventDefault()));\n}\nconst de = (t) => x.has(t) === !0, ro = (t) => {\n const e = de(t);\n (e ? Q : R)(t, \"keydown\", le), e ? x.delete(t) : x.set(t, !0);\n}, h = (t, e) => {\n const { width: n, height: o, top: s, right: c, bottom: a, left: u } = t.getBoundingClientRect();\n let p = 1, r = 1;\n if (e && l(t)) {\n const { offsetWidth: f, offsetHeight: y } = t;\n p = f > 0 ? Math.round(n) / f : (\n /* istanbul ignore next */\n 1\n ), r = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / r,\n top: s / r,\n right: c / p,\n bottom: a / r,\n left: u / p,\n x: u / p,\n y: s / r\n };\n}, ao = (t) => d(t).body, k = (t) => d(t).documentElement, io = (t) => d(t).head, uo = (t) => {\n const e = q(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, pe = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, lo = (t) => t.nodeName === \"HTML\" ? t : l(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\npe(t) && t.host || // ShadowRoot detected\nk(t), fe = (t) => {\n if (!l(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, po = (t, e, n) => {\n const o = l(e), s = h(t, o && fe(e)), c = { x: 0, y: 0 };\n // istanbul ignore else @preserve\n if (o) {\n const a = h(e, !0);\n c.x = a.x + e.clientLeft, c.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - c.x,\n y: s.top + n.y - c.y,\n width: s.width,\n height: s.height\n };\n};\nlet F = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), me = (t, e) => {\n let n = e ? F : H;\n if (e) {\n const o = me(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), F += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, fo = (t) => {\n var e;\n return t ? G(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ge = (t) => Array.isArray(t) || !1, mo = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ve = (t) => l(t) && !!t.shadowRoot || !1, go = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, vo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = k(t);\n return e <= o && n >= 0;\n}, Eo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = k(t), { top: o, left: s, bottom: c, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && c <= n && a <= e;\n}, bo = (t) => ge(t) && t.every(l) || !1, ho = (t) => typeof t == \"function\" || !1, yo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, wo = (t) => l(t) && t.tagName === \"IMG\" || !1, Ao = (t) => {\n if (!M(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, So = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, No = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, Mo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, To = (t) => k(t).dir === \"rtl\", ko = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Do = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, Ee = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nEe(t.getRootNode().host, e) : null, Co = (t, e) => l(t) ? t : (i(e) ? e : d()).querySelector(t), be = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), Oo = (t) => [...be(\"*\", t)].filter(ve), Lo = (t, e) => d(e).getElementById(t) || null, Io = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(t), xo = (t, e) => t.matches(e), zo = \"2.0.5\";\nexport {\n Wn as ArrayFrom,\n P as DOMContentLoadedEvent,\n et as DOMMouseScrollEvent,\n L as Data,\n Gn as Float32ArrayFrom,\n Kn as Float64ArrayFrom,\n T as ObjectAssign,\n w as ObjectEntries,\n _n as ObjectFromEntries,\n Yn as ObjectHasOwn,\n Zn as ObjectKeys,\n $n as ObjectValues,\n so as Timer,\n Y as abortEvent,\n Bn as addClass,\n fn as addEventListener,\n Kt as animationDelay,\n Gt as animationDuration,\n D as animationEndEvent,\n U as animationName,\n he as ariaChecked,\n we as ariaDescribedBy,\n ye as ariaDescription,\n Ae as ariaExpanded,\n Se as ariaHasPopup,\n X as ariaHidden,\n Ne as ariaLabel,\n Me as ariaLabelledBy,\n Te as ariaModal,\n ke as ariaPressed,\n De as ariaSelected,\n Oe as ariaValueMax,\n Ce as ariaValueMin,\n Le as ariaValueNow,\n Ie as ariaValueText,\n Z as beforeunloadEvent,\n gn as bezierEasings,\n $ as blurEvent,\n _ as changeEvent,\n Ee as closest,\n tt as contextmenuEvent,\n to as createCustomEvent,\n ee as createElement,\n ne as createElementNS,\n K as dispatchEvent,\n Qn as distinct,\n Pn as documentBody,\n Un as documentElement,\n N as documentHead,\n ze as dragEvent,\n Pe as dragendEvent,\n Be as dragenterEvent,\n Fe as dragleaveEvent,\n He as dragoverEvent,\n Ve as dragstartEvent,\n jn as emulateAnimationEnd,\n qn as emulateTransitionEnd,\n nt as errorEvent,\n Jn as focus,\n ot as focusEvent,\n qe as focusEvents,\n qt as focusableSelector,\n st as focusinEvent,\n ct as focusoutEvent,\n rt as gesturechangeEvent,\n at as gestureendEvent,\n it as gesturestartEvent,\n j as getAttribute,\n On as getAttributeNS,\n h as getBoundingClientRect,\n Oo as getCustomElements,\n d as getDocument,\n ao as getDocumentBody,\n k as getDocumentElement,\n io as getDocumentHead,\n oe as getElementAnimationDelay,\n se as getElementAnimationDuration,\n Lo as getElementById,\n g as getElementStyle,\n ce as getElementTransitionDelay,\n re as getElementTransitionDuration,\n Io as getElementsByClassName,\n be as getElementsByTagName,\n Rn as getInstance,\n uo as getNodeScroll,\n lo as getParentNode,\n po as getRectRelativeToOffsetParent,\n me as getUID,\n fo as getWindow,\n te as hasAttribute,\n Ln as hasAttributeNS,\n Hn as hasClass,\n de as hasFocusTrap,\n An as isApple,\n ge as isArray,\n mo as isCanvas,\n ve as isCustomElement,\n G as isDocument,\n go as isElement,\n vo as isElementInScrollRange,\n Eo as isElementInViewport,\n bo as isElementsArray,\n Sn as isFirefox,\n ho as isFunction,\n yo as isHTMLCollection,\n l as isHTMLElement,\n wo as isHTMLImageElement,\n Ao as isJSON,\n I as isMap,\n No as isMedia,\n wn as isMobile,\n i as isNode,\n Mo as isNodeList,\n ie as isNumber,\n v as isObject,\n To as isRTL,\n ko as isSVGElement,\n fe as isScaledElement,\n pe as isShadowRoot,\n M as isString,\n Do as isTableElement,\n So as isWeakMap,\n q as isWindow,\n Ke as keyAlt,\n Je as keyArrowDown,\n Ye as keyArrowLeft,\n Ze as keyArrowRight,\n Xe as keyArrowUp,\n $e as keyBackspace,\n _e as keyCapsLock,\n tn as keyControl,\n en as keyDelete,\n nn as keyEnter,\n sn as keyEscape,\n cn as keyInsert,\n rn as keyMeta,\n on as keyNumpadEnter,\n an as keyPause,\n un as keyScrollLock,\n ln as keyShift,\n dn as keySpace,\n pn as keyTab,\n Ge as keyboardEventKeys,\n ut as keydownEvent,\n lt as keypressEvent,\n dt as keyupEvent,\n pt as loadEvent,\n Ue as loadstartEvent,\n xo as matches,\n Re as mouseClickEvents,\n Qe as mouseHoverEvents,\n We as mouseSwipeEvents,\n ft as mouseclickEvent,\n mt as mousedblclickEvent,\n gt as mousedownEvent,\n bt as mouseenterEvent,\n Et as mousehoverEvent,\n yt as mouseinEvent,\n ht as mouseleaveEvent,\n St as mousemoveEvent,\n wt as mouseoutEvent,\n At as mouseoverEvent,\n vt as mouseupEvent,\n Nt as mousewheelEvent,\n Mt as moveEvent,\n xe as nativeEvents,\n _t as noop,\n Xn as normalizeOptions,\n B as normalizeValue,\n Q as off,\n vn as offsetHeight,\n En as offsetWidth,\n R as on,\n $t as one,\n Tt as orientationchangeEvent,\n eo as passiveHandler,\n kt as pointercancelEvent,\n Dt as pointerdownEvent,\n Ct as pointerleaveEvent,\n Ot as pointermoveEvent,\n Lt as pointerupEvent,\n Co as querySelector,\n ue as querySelectorAll,\n It as readystatechangeEvent,\n no as reflow,\n zn as removeAttribute,\n Vn as removeAttributeNS,\n Fn as removeClass,\n mn as removeEventListener,\n xt as resetEvent,\n zt as resizeEvent,\n Ht as scrollEvent,\n bn as scrollHeight,\n hn as scrollWidth,\n Vt as selectEvent,\n Bt as selectendEvent,\n Ft as selectstartEvent,\n In as setAttribute,\n xn as setAttributeNS,\n oo as setElementStyle,\n Pt as submitEvent,\n Nn as support3DTransform,\n Dn as supportAnimation,\n Mn as supportPassive,\n kn as supportTouch,\n Tn as supportTransform,\n Cn as supportTransition,\n yn as tabindex,\n ae as toLowerCase,\n co as toUpperCase,\n ro as toggleFocusTrap,\n je as touchEvents,\n Rt as touchcancelEvent,\n Qt as touchendEvent,\n Wt as touchmoveEvent,\n Ut as touchstartEvent,\n Xt as transitionDelay,\n Jt as transitionDuration,\n C as transitionEndEvent,\n W as transitionProperty,\n jt as unloadEvent,\n S as userAgent,\n A as userAgentData,\n zo as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n /* istanbul ignore else @preserve */\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n /* istanbul ignore else @preserve */\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n /* istanbul ignore else @preserve */\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n);\n /* istanbul ignore else @preserve */\n a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n /* istanbul ignore else @preserve */\n o && o.has(i) && o.delete(i);\n /* istanbul ignore else @preserve */\n s && (!o || !o.size) && s.delete(t);\n /* istanbul ignore else @preserve */\n (!s || !s.size) && delete e[c];\n /* istanbul ignore else @preserve */\n (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n addClass,\n ariaPressed,\n getAttribute,\n getInstance,\n hasClass,\n mouseclickEvent,\n removeClass,\n setAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\ntype Component =\n | Alert\n | Button\n | Carousel\n | Collapse\n | Dropdown\n | Modal\n | Offcanvas\n | Popover\n | ScrollSpy\n | Tab\n | Toast\n | Tooltip;\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement) => Component,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) {\n (instance as T & { dispose: () => void }).dispose();\n }\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), {\n once: true,\n });\n}\n"],"names":["we","Ae","X","Te","ke","De","P","ot","st","ct","ut","dt","ft","gt","Et","bt","ht","Dt","Ot","Lt","zt","Ht","Ut","Ve","qt","Je","Xe","Ye","Ze","sn","Jt","Xt","C","W","Yt","A","Zt","S","z","V","An","N","R","e","n","o","s","Q","$t","c","_t","j","te","In","zn","Bn","Fn","Hn","v","i","l","E","L","Rn","M","q","G","d","T","ee","K","g","ce","re","qn","a","u","Jn","B","w","ae","Xn","p","r","f","y","J","Zn","to","eo","no","oo","I","ie","m","so","ue","x","le","de","ro","h","ao","k","pe","lo","F","H","b","me","fo","ge","vo","ho","Mo","To","Do","Ee","Co","be","Io","xo","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","arrowKeyNext","keyArrowLeft","keyArrowRight","arrowKeyPrev","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","toggleFocusTrap","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","isOpen","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","delay","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/bootstrap-native.mjs b/dist/bootstrap-native.mjs index 5c77f99b..883d1049 100644 --- a/dist/bootstrap-native.mjs +++ b/dist/bootstrap-native.mjs @@ -1,27 +1,29 @@ -var Bo = Object.defineProperty; -var Ro = (t, s, e) => s in t ? Bo(t, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[s] = e; -var d = (t, s, e) => Ro(t, typeof s != "symbol" ? s + "" : s, e); -const Nn = "aria-describedby", De = "aria-expanded", ke = "aria-hidden", Ne = "aria-modal", Ns = "aria-pressed", Qe = "aria-selected", Wo = "DOMContentLoaded", ws = "focus", Es = "focusin", On = "focusout", Oe = "keydown", Fo = "keyup", N = "click", Mn = "mousedown", jo = "hover", Me = "mouseenter", $s = "mouseleave", zo = "pointerdown", Vo = "pointermove", Ko = "pointerup", _e = "resize", Be = "scroll", Ts = "touchstart", Xo = "dragstart", as = "ArrowDown", rs = "ArrowUp", Os = "ArrowLeft", Ms = "ArrowRight", ys = "Escape", Yo = "transitionDuration", Uo = "transitionDelay", Ze = "transitionend", _n = "transitionProperty", qo = navigator.userAgentData, Ae = qo, { userAgent: Qo } = navigator, Le = Qo, _s = /iPhone|iPad|iPod|Android/i; -Ae ? Ae.brands.some((t) => _s.test(t.brand)) : _s.test(Le); -const Bs = /(iPhone|iPod|iPad)/, Zo = Ae ? Ae.brands.some((t) => Bs.test(t.brand)) : ( - /* istanbul ignore next */ - Bs.test(Le) +var jo = Object.defineProperty; +var zo = (t, s, e) => s in t ? jo(t, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[s] = e; +var d = (t, s, e) => zo(t, typeof s != "symbol" ? s + "" : s, e); +const Mn = "aria-describedby", Ie = "aria-expanded", ve = "aria-hidden", Ne = "aria-modal", Ms = "aria-pressed", Je = "aria-selected", Vo = "DOMContentLoaded", $s = "focus", Ts = "focusin", _n = "focusout", Oe = "keydown", Xo = "keyup", N = "click", Bn = "mousedown", Ko = "hover", Me = "mouseenter", ys = "mouseleave", Yo = "pointerdown", Uo = "pointermove", qo = "pointerup", _e = "resize", Be = "scroll", Cs = "touchstart", Zo = "dragstart", Jo = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]', rs = "ArrowDown", ls = "ArrowUp", _s = "ArrowLeft", Bs = "ArrowRight", xs = "Escape", Go = "transitionDuration", Qo = "transitionDelay", Ge = "transitionend", Rn = "transitionProperty", ti = navigator.userAgentData, Le = ti, { userAgent: ei } = navigator, ke = ei, Rs = /iPhone|iPad|iPod|Android/i; +// istanbul ignore else @preserve +Le ? Le.brands.some((t) => Rs.test(t.brand)) : Rs.test(ke); +const Fs = /(iPhone|iPod|iPad)/, si = Le ? Le.brands.some((t) => Fs.test(t.brand)) : ( + /* istanbul ignore next @preserve */ + Fs.test(ke) ); -Le && Le.includes("Firefox"); +ke && ke.includes("Firefox"); const { head: Re } = document; ["webkitPerspective", "perspective"].some((t) => t in Re.style); -const Go = (t, s, e, n) => { +const Fn = (t, s, e, n) => { const o = n || !1; t.addEventListener(s, e, o); -}, Jo = (t, s, e, n) => { +}, Wn = (t, s, e, n) => { const o = n || !1; t.removeEventListener(s, e, o); -}, ti = (t, s, e, n) => { +}, ni = (t, s, e, n) => { const o = (i) => { - (i.target === t || i.currentTarget === t) && (e.apply(t, [i]), Jo(t, s, o, n)); + /* istanbul ignore else @preserve */ + (i.target === t || i.currentTarget === t) && (e.apply(t, [i]), Wn(t, s, o, n)); }; - Go(t, s, o, n); -}, ge = () => { + Fn(t, s, o, n); +}, fe = () => { }; (() => { let t = !1; @@ -29,7 +31,8 @@ const Go = (t, s, e, n) => { const s = Object.defineProperty({}, "passive", { get: () => (t = !0, t) }); - ti(document, Wo, ge, s); + // istanbul ignore next @preserve + ni(document, Vo, fe, s); } catch { } return t; @@ -37,12 +40,12 @@ const Go = (t, s, e, n) => { ["webkitTransform", "transform"].some((t) => t in Re.style); ["webkitAnimation", "animation"].some((t) => t in Re.style); ["webkitTransition", "transition"].some((t) => t in Re.style); -const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t, s, e) => t.setAttribute(s, e), kt = (t, s) => t.removeAttribute(s), g = (t, ...s) => { +const st = (t, s) => t.getAttribute(s), ge = (t, s) => t.hasAttribute(s), O = (t, s, e) => t.setAttribute(s, e), kt = (t, s) => t.removeAttribute(s), f = (t, ...s) => { t.classList.add(...s); }, b = (t, ...s) => { t.classList.remove(...s); -}, h = (t, s) => t.classList.contains(s), ve = (t) => t != null && typeof t == "object" || !1, L = (t) => ve(t) && typeof t.nodeType == "number" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((s) => t.nodeType === s) || !1, y = (t) => L(t) && t.nodeType === 1 || !1, Ft = /* @__PURE__ */ new Map(), At = { - data: Ft, +}, g = (t, s) => t.classList.contains(s), be = (t) => t != null && typeof t == "object" || !1, D = (t) => be(t) && typeof t.nodeType == "number" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((s) => t.nodeType === s) || !1, T = (t) => D(t) && t.nodeType === 1 || !1, Wt = /* @__PURE__ */ new Map(), At = { + data: Wt, /** * Sets web components data. * @@ -51,7 +54,9 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @param instance the component instance */ set: (t, s, e) => { - y(t) && (Ft.has(s) || Ft.set(s, /* @__PURE__ */ new Map()), Ft.get(s).set(t, e)); + if (!T(t)) return; + // istanbul ignore else @preserve + Wt.has(s) || Wt.set(s, /* @__PURE__ */ new Map()), Wt.get(s).set(t, e); }, /** * Returns all instances for specified component. @@ -59,7 +64,7 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @param component the component's name or a unique key * @returns all the component instances */ - getAllFor: (t) => Ft.get(t) || null, + getAllFor: (t) => Wt.get(t) || null, /** * Returns the instance associated with the target. * @@ -68,7 +73,7 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @returns the instance */ get: (t, s) => { - if (!y(t) || !s) return null; + if (!T(t) || !s) return null; const e = At.getAllFor(s); return t && e && e.get(t) || null; }, @@ -80,11 +85,14 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t */ remove: (t, s) => { const e = At.getAllFor(s); - !e || !y(t) || (e.delete(t), e.size === 0 && Ft.delete(s)); + if (!e || !T(t)) return; + e.delete(t); + // istanbul ignore else @preserve + e.size === 0 && Wt.delete(s); } -}, F = (t, s) => At.get(t, s), be = (t) => typeof t == "string" || !1, Cs = (t) => ve(t) && t.constructor.name === "Window" || !1, Bn = (t) => L(t) && t.nodeType === 9 || !1, E = (t) => Cs(t) ? t.document : Bn(t) ? t : L(t) ? t.ownerDocument : window.document, dt = (t, ...s) => Object.assign(t, ...s), $t = (t) => { +}, W = (t, s) => At.get(t, s), we = (t) => typeof t == "string" || !1, Hs = (t) => be(t) && t.constructor.name === "Window" || !1, jn = (t) => D(t) && t.nodeType === 9 || !1, E = (t) => Hs(t) ? t.document : jn(t) ? t : D(t) ? t.ownerDocument : window.document, dt = (t, ...s) => Object.assign(t, ...s), $t = (t) => { if (!t) return; - if (be(t)) + if (we(t)) return E().createElement(t); const { tagName: s } = t, e = $t(s); if (!e) return; @@ -93,8 +101,8 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t }, w = (t, s) => t.dispatchEvent(s), V = (t, s) => { const e = getComputedStyle(t), n = s.replace("webkit", "Webkit").replace(/([A-Z])/g, "-$1").toLowerCase(); return e.getPropertyValue(n); -}, ei = (t) => { - const s = V(t, _n), e = V(t, Uo), n = e.includes("ms") ? ( +}, oi = (t) => { + const s = V(t, Rn), e = V(t, Qo), n = e.includes("ms") ? ( /* istanbul ignore next */ 1 ) : 1e3, o = s && s !== "none" ? parseFloat(e) * n : ( @@ -105,8 +113,8 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t /* istanbul ignore next */ 0 ) : o; -}, Kt = (t) => { - const s = V(t, _n), e = V(t, Yo), n = e.includes("ms") ? ( +}, Ee = (t) => { + const s = V(t, Rn), e = V(t, Go), n = e.includes("ms") ? ( /* istanbul ignore next */ 1 ) : 1e3, o = s && s !== "none" ? parseFloat(e) * n : ( @@ -117,44 +125,51 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t /* istanbul ignore next */ 0 ) : o; -}, x = (t, s) => { +}, A = (t, s) => { let e = 0; - const n = new Event(Ze), o = Kt(t), i = ei(t); + const n = new Event(Ge), o = Ee(t), i = oi(t); if (o) { const c = (a) => { - a.target === t && (s.apply(t, [a]), t.removeEventListener(Ze, c), e = 1); + // istanbul ignore else @preserve + a.target === t && (s.apply(t, [a]), t.removeEventListener(Ge, c), e = 1); }; - t.addEventListener(Ze, c), setTimeout(() => { + t.addEventListener(Ge, c), setTimeout(() => { + // istanbul ignore next @preserve e || w(t, n); }, o + i + 17); } else s.apply(t, [n]); -}, ht = (t, s) => t.focus(s), Rs = (t) => ["true", !0].includes(t) ? !0 : ["false", !1].includes(t) ? !1 : ["null", "", null, void 0].includes(t) ? null : t !== "" && !Number.isNaN(+t) ? +t : t, Ce = (t) => Object.entries(t), Xt = (t) => t.toLowerCase(), si = (t, s, e, n) => { +}, ht = (t, s) => t.focus(s), Ws = (t) => ["true", !0].includes(t) ? !0 : ["false", !1].includes(t) ? !1 : ["null", "", null, void 0].includes(t) ? null : t !== "" && !Number.isNaN(+t) ? +t : t, He = (t) => Object.entries(t), Xt = (t) => t.toLowerCase(), ii = (t, s, e, n) => { const o = { ...e }, i = { ...t.dataset }, c = { ...s }, a = {}, l = "title"; - return Ce(i).forEach(([r, f]) => { - const p = typeof r == "string" && r.includes(n) ? r.replace(n, "").replace(/[A-Z]/g, (v) => Xt(v)) : r; - a[p] = Rs(f); - }), Ce(o).forEach(([r, f]) => { - o[r] = Rs(f); - }), Ce(s).forEach(([r, f]) => { - r in o ? c[r] = o[r] : r in a ? c[r] = a[r] : c[r] = r === l ? it(t, l) : f; + return He(i).forEach(([r, h]) => { + const p = typeof r == "string" && r.includes(n) ? r.replace(n, "").replace(/[A-Z]/g, (v) => Xt(v)) : ( + /* istanbul ignore next @preserve */ + r + ); + a[p] = Ws(h); + }), He(o).forEach(([r, h]) => { + o[r] = Ws(h); + }), He(s).forEach(([r, h]) => { + // istanbul ignore else @preserve + r in o ? c[r] = o[r] : r in a ? c[r] = a[r] : c[r] = r === l ? st(t, l) : h; }), c; -}, Ws = (t) => Object.keys(t), $ = (t, s) => { +}, js = (t) => Object.keys(t), $ = (t, s) => { const e = new CustomEvent(t, { cancelable: !0, bubbles: !0 }); - return ve(s) && dt(e, s), e; -}, st = { passive: !0 }, Mt = (t) => t.offsetHeight, I = (t, s) => { - Ce(s).forEach(([e, n]) => { - if (n && be(e) && e.includes("--")) + // istanbul ignore else @preserve + return be(s) && dt(e, s), e; +}, nt = { passive: !0 }, Mt = (t) => t.offsetHeight, I = (t, s) => { + He(s).forEach(([e, n]) => { + if (n && we(e) && e.includes("--")) t.style.setProperty(e, n); else { const o = {}; o[e] = n, dt(t.style, o); } }); -}, ls = (t) => ve(t) && t.constructor.name === "Map" || !1, ni = (t) => typeof t == "number" || !1, bt = /* @__PURE__ */ new Map(), u = { +}, ds = (t) => be(t) && t.constructor.name === "Map" || !1, ci = (t) => typeof t == "number" || !1, bt = /* @__PURE__ */ new Map(), u = { /** * Sets a new timeout timer for an element, or element -> key association. * @@ -164,7 +179,13 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @param key a unique key */ set: (t, s, e, n) => { - y(t) && (n && n.length ? (bt.has(t) || bt.set(t, /* @__PURE__ */ new Map()), bt.get(t).set(n, setTimeout(s, e))) : bt.set(t, setTimeout(s, e))); + if (!T(t)) return; + // istanbul ignore else @preserve + if (n && n.length) { + // istanbul ignore else @preserve + bt.has(t) || bt.set(t, /* @__PURE__ */ new Map()), bt.get(t).set(n, setTimeout(s, e)); + } else + bt.set(t, setTimeout(s, e)); }, /** * Returns the timer associated with the target. @@ -174,10 +195,10 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @returns the timer */ get: (t, s) => { - if (!y(t)) return null; + if (!T(t)) return null; const e = bt.get(t); - return s && e && ls(e) ? e.get(s) || /* istanbul ignore next */ - null : ni(e) ? e : null; + return s && e && ds(e) ? e.get(s) || /* istanbul ignore next */ + null : ci(e) ? e : null; }, /** * Clears the element's timer. @@ -186,16 +207,34 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t * @param key a unique key */ clear: (t, s) => { - if (!y(t)) return; + if (!T(t)) return; const e = bt.get(t); - s && s.length && ls(e) ? (clearTimeout(e.get(s)), e.delete(s), e.size === 0 && bt.delete(t)) : (clearTimeout(e), bt.delete(t)); - } -}, we = (t, s) => { + if (s && s.length && ds(e)) { + clearTimeout(e.get(s)), e.delete(s); + // istanbul ignore else @preserve + e.size === 0 && bt.delete(t); + } else + clearTimeout(e), bt.delete(t); + } +}, J = (t, s) => (D(s) ? s : E()).querySelectorAll(t), hs = /* @__PURE__ */ new Map(); +function ai(t) { + const { shiftKey: s, code: e } = t, n = E(this), o = [...J(Jo, this)].filter( + (a) => !ge(a, "disabled") && !st(a, ve) + ); + if (!o.length) return; + const i = o[0], c = o[o.length - 1]; + // istanbul ignore else @preserve + e === "Tab" && (s && n.activeElement === i ? (c.focus(), t.preventDefault()) : !s && n.activeElement === c && (i.focus(), t.preventDefault())); +} +const ri = (t) => hs.has(t) === !0, Fe = (t) => { + const s = ri(t); + (s ? Wn : Fn)(t, "keydown", ai), s ? hs.delete(t) : hs.set(t, !0); +}, $e = (t, s) => { const { width: e, height: n, top: o, right: i, bottom: c, left: a } = t.getBoundingClientRect(); let l = 1, r = 1; - if (s && y(t)) { - const { offsetWidth: f, offsetHeight: p } = t; - l = f > 0 ? Math.round(e) / f : ( + if (s && T(t)) { + const { offsetWidth: h, offsetHeight: p } = t; + l = h > 0 ? Math.round(e) / h : ( /* istanbul ignore next */ 1 ), r = p > 0 ? Math.round(n) / p : ( @@ -213,91 +252,116 @@ const it = (t, s) => t.getAttribute(s), Ie = (t, s) => t.hasAttribute(s), O = (t x: a / l, y: o / r }; -}, St = (t) => E(t).body, ft = (t) => E(t).documentElement, Rn = (t) => L(t) && t.constructor.name === "ShadowRoot" || !1, oi = (t) => t.nodeName === "HTML" ? t : y(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node -L(t) && t.parentNode || // DOM Element detected -Rn(t) && t.host || // ShadowRoot detected +}, xt = (t) => E(t).body, ft = (t) => E(t).documentElement, zn = (t) => D(t) && t.constructor.name === "ShadowRoot" || !1, li = (t) => t.nodeName === "HTML" ? t : T(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node +D(t) && t.parentNode || // DOM Element detected +zn(t) && t.host || // ShadowRoot detected ft(t); -let Fs = 0, js = 0; -const jt = /* @__PURE__ */ new Map(), Wn = (t, s) => { - let e = s ? Fs : js; +let zs = 0, Vs = 0; +const jt = /* @__PURE__ */ new Map(), Vn = (t, s) => { + let e = s ? zs : Vs; if (s) { - const n = Wn(t), o = jt.get(n) || /* @__PURE__ */ new Map(); - jt.has(n) || jt.set(n, o), ls(o) && !o.has(s) ? (o.set(s, e), Fs += 1) : e = o.get(s); + const n = Vn(t), o = jt.get(n) || /* @__PURE__ */ new Map(); + jt.has(n) || jt.set(n, o), ds(o) && !o.has(s) ? (o.set(s, e), zs += 1) : e = o.get(s); } else { const n = t.id || t; - jt.has(n) ? e = jt.get(n) : (jt.set(n, e), js += 1); + jt.has(n) ? e = jt.get(n) : (jt.set(n, e), Vs += 1); } return e; -}, qt = (t) => { +}, Ut = (t) => { var s; - return t ? Bn(t) ? t.defaultView : L(t) ? (s = t == null ? void 0 : t.ownerDocument) == null ? void 0 : s.defaultView : t : window; -}, ii = (t) => Array.isArray(t) || !1, Fn = (t) => { - if (!L(t)) return !1; - const { top: s, bottom: e } = we(t), { clientHeight: n } = ft(t); + return t ? jn(t) ? t.defaultView : D(t) ? (s = t == null ? void 0 : t.ownerDocument) == null ? void 0 : s.defaultView : t : window; +}, di = (t) => Array.isArray(t) || !1, Xn = (t) => { + if (!D(t)) return !1; + const { top: s, bottom: e } = $e(t), { clientHeight: n } = ft(t); return s <= n && e >= 0; -}, ci = (t) => typeof t == "function" || !1, ai = (t) => ve(t) && t.constructor.name === "NodeList" || !1, Ct = (t) => ft(t).dir === "rtl", ri = (t) => L(t) && ["TABLE", "TD", "TH"].includes(t.nodeName) || !1, M = (t, s) => t ? t.closest(s) || // break out of `ShadowRoot` -M(t.getRootNode().host, s) : null, P = (t, s) => y(t) ? t : (L(s) ? s : E()).querySelector(t), Ss = (t, s) => (L(s) ? s : E()).getElementsByTagName(t), tt = (t, s) => (L(s) ? s : E()).querySelectorAll(t), rt = (t, s) => (s && L(s) ? s : E()).getElementsByClassName( - t -), jn = (t, s) => t.matches(s), Vt = {}, zn = (t) => { +}, hi = (t) => typeof t == "function" || !1, fi = (t) => be(t) && t.constructor.name === "NodeList" || !1, Ct = (t) => ft(t).dir === "rtl", gi = (t) => D(t) && ["TABLE", "TD", "TH"].includes(t.nodeName) || !1, M = (t, s) => t ? t.closest(s) || // break out of `ShadowRoot` +M(t.getRootNode().host, s) : null, S = (t, s) => T(t) ? t : (D(s) ? s : E()).querySelector(t), Ss = (t, s) => (D(s) ? s : E()).getElementsByTagName(t), rt = (t, s) => (s && D(s) ? s : E()).getElementsByClassName(t), Kn = (t, s) => t.matches(s), Vt = {}, Yn = (t) => { const { type: s, currentTarget: e } = t; [...Vt[s]].forEach(([n, o]) => { + /* istanbul ignore else @preserve */ e === n && [...o].forEach(([i, c]) => { i.apply(n, [t]), typeof c == "object" && c.once && B(n, s, i, c); }); }); }, _ = (t, s, e, n) => { + /* istanbul ignore else @preserve */ Vt[s] || (Vt[s] = /* @__PURE__ */ new Map()); const o = Vt[s]; + /* istanbul ignore else @preserve */ o.has(t) || o.set(t, /* @__PURE__ */ new Map()); const i = o.get(t), { size: c } = i; - i.set(e, n), c || t.addEventListener(s, zn, n); + i.set(e, n); + /* istanbul ignore else @preserve */ + c || t.addEventListener(s, Yn, n); }, B = (t, s, e, n) => { const o = Vt[s], i = o && o.get(t), c = i && i.get(e), a = c !== void 0 ? c : n; - i && i.has(e) && i.delete(e), o && (!i || !i.size) && o.delete(t), (!o || !o.size) && delete Vt[s], (!i || !i.size) && t.removeEventListener( + /* istanbul ignore else @preserve */ + i && i.has(e) && i.delete(e); + /* istanbul ignore else @preserve */ + o && (!i || !i.size) && o.delete(t); + /* istanbul ignore else @preserve */ + (!o || !o.size) && delete Vt[s]; + /* istanbul ignore else @preserve */ + (!i || !i.size) && t.removeEventListener( s, - zn, + Yn, a ); -}, R = "fade", m = "show", We = "data-bs-dismiss", Fe = "alert", Vn = "Alert", li = "5.0.14", di = li; -class nt { +}, R = "fade", m = "show", We = "data-bs-dismiss", je = "alert", Un = "Alert", pi = "5.0.15", ui = pi; +class ot { /** * @param target `HTMLElement` or selector string * @param config component instance options */ constructor(s, e) { /** just to have something to extend from */ + // istanbul ignore next @preserve coverage wise this isn't important d(this, "_toggleEventListeners", () => { }); - const n = P(s); - if (!n) - throw be(s) ? Error(`${this.name} Error: "${s}" is not a valid selector.`) : Error(`${this.name} Error: your target is not an instance of HTMLElement.`); + let n; + try { + if (T(s)) + n = s; + else if (we(s)) { + n = S(s); + // istanbul ignore else @preserve + if (!n) throw Error(`"${s}" is not a valid selector.`); + } else + throw Error("your target is not an instance of HTMLElement."); + } catch (i) { + throw Error(`${this.name} Error: ${i.message}`); + } const o = At.get(n, this.name); - o && o._toggleEventListeners(), this.element = n, this.options = this.defaults && Ws(this.defaults).length ? si(n, this.defaults, e || {}, "bs") : {}, At.set(n, this.name, this); + // istanbul ignore else @preserve + o && o._toggleEventListeners(), this.element = n, this.options = this.defaults && js(this.defaults).length ? ii(n, this.defaults, e || {}, "bs") : ( + // istanbul ignore next @preserve + {} + ), At.set(n, this.name, this); } - /* istanbul ignore next */ + // istanbul ignore next @preserve get version() { - return di; + return ui; } - /* istanbul ignore next */ + // istanbul ignore next @preserve get name() { return "BaseComponent"; } - /* istanbul ignore next */ + // istanbul ignore next @preserve get defaults() { return {}; } /** Removes component from target element. */ dispose() { - At.remove(this.element, this.name), Ws(this).forEach((s) => { + At.remove(this.element, this.name), js(this).forEach((s) => { delete this[s]; }); } } -const hi = `.${Fe}`, fi = `[${We}="${Fe}"]`, gi = (t) => F(t, Vn), pi = (t) => new ne(t), zs = $(`close.bs.${Fe}`), ui = $(`closed.bs.${Fe}`), Vs = (t) => { +const mi = `.${je}`, vi = `[${We}="${je}"]`, bi = (t) => W(t, Un), wi = (t) => new se(t), Xs = $(`close.bs.${je}`), Ei = $(`closed.bs.${je}`), Ks = (t) => { const { element: s } = t; - w(s, ui), t._toggleEventListeners(), t.dispose(), s.remove(); + w(s, Ei), t._toggleEventListeners(), t.dispose(), s.remove(); }; -class ne extends nt { +class se extends ot { constructor(e) { super(e); d(this, "dismiss"); @@ -310,7 +374,8 @@ class ne extends nt { */ d(this, "close", () => { const { element: e } = this; - e && h(e, m) && (w(e, zs), zs.defaultPrevented || (b(e, m), h(e, R) ? x(e, () => Vs(this)) : Vs(this))); + // istanbul ignore else @preserve + e && g(e, m) && (w(e, Xs), Xs.defaultPrevented || (b(e, m), g(e, R) ? A(e, () => Ks(this)) : Ks(this))); }); /** * Toggle on / off the `click` event listener. @@ -319,22 +384,23 @@ class ne extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B, { dismiss: o, close: i } = this; + // istanbul ignore else @preserve o && n(o, N, i); }); - this.dismiss = P(fi, this.element), this._toggleEventListeners(!0); + this.dismiss = S(vi, this.element), this._toggleEventListeners(!0); } /** Returns component name string. */ get name() { - return Vn; + return Un; } /** Remove the component from target element. */ dispose() { this._toggleEventListeners(), super.dispose(); } } -d(ne, "selector", hi), d(ne, "init", pi), d(ne, "getInstance", gi); -const C = "active", ct = "data-bs-toggle", mi = "button", Kn = "Button", vi = `[${ct}="${mi}"]`, bi = (t) => F(t, Kn), wi = (t) => new oe(t); -class oe extends nt { +d(se, "selector", mi), d(se, "init", wi), d(se, "getInstance", bi); +const C = "active", ct = "data-bs-toggle", $i = "button", qn = "Button", Ti = `[${ct}="${$i}"]`, yi = (t) => W(t, qn), Ci = (t) => new ne(t); +class ne extends ot { /** * @param target usually a `.btn` element */ @@ -351,7 +417,7 @@ class oe extends nt { d(this, "toggle", (e) => { e && e.preventDefault(); const { element: n, isActive: o } = this; - !h(n, "disabled") && !it(n, "disabled") && ((o ? b : g)(n, C), O(n, Ns, o ? "false" : "true"), this.isActive = h(n, C)); + !g(n, "disabled") && !st(n, "disabled") && ((o ? b : f)(n, C), O(n, Ms, o ? "false" : "true"), this.isActive = g(n, C)); }); // BUTTON PRIVATE METHOD // ===================== @@ -364,104 +430,127 @@ class oe extends nt { (e ? _ : B)(this.element, N, this.toggle); }); const { element: n } = this; - this.isActive = h(n, C), O(n, Ns, String(!!this.isActive)), this._toggleEventListeners(!0); + this.isActive = g(n, C), O(n, Ms, String(!!this.isActive)), this._toggleEventListeners(!0); } /** * Returns component name string. */ get name() { - return Kn; + return qn; } /** Removes the `Button` component from the target element. */ dispose() { this._toggleEventListeners(), super.dispose(); } } -d(oe, "selector", vi), d(oe, "init", wi), d(oe, "getInstance", bi); -const ds = "data-bs-target", Lt = "carousel", Xn = "Carousel", Ks = "data-bs-parent", Ei = "data-bs-container", X = (t) => { - const s = [ds, Ks, Ei, "href"], e = E(t); +d(ne, "selector", Ti), d(ne, "init", Ci), d(ne, "getInstance", yi); +const fs = "data-bs-target", It = "carousel", Zn = "Carousel", Ys = "data-bs-parent", xi = "data-bs-container", K = (t) => { + const s = [fs, Ys, xi, "href"], e = E(t); return s.map((n) => { - const o = it(t, n); - return o ? n === Ks ? M(t, o) : P(o, e) : null; + const o = st(t, n); + return o ? n === Ys ? M(t, o) : S(o, e) : null; }).filter((n) => n)[0]; -}, Ee = `[data-bs-ride="${Lt}"]`, Q = `${Lt}-item`, hs = "data-bs-slide-to", Et = "data-bs-slide", Tt = "paused", Xs = { +}, Te = `[data-bs-ride="${It}"]`, Z = `${It}-item`, gs = "data-bs-slide-to", Et = "data-bs-slide", Tt = "paused", Us = { pause: "hover", keyboard: !1, touch: !0, interval: 5e3 -}, gt = (t) => F(t, Xn), $i = (t) => new ie(t); -let se = 0, Se = 0, Ge = 0; -const Je = $(`slide.bs.${Lt}`), fs = $(`slid.bs.${Lt}`), Ys = (t) => { +}, gt = (t) => W(t, Zn), Hi = (t) => new oe(t); +let ee = 0, Se = 0, Qe = 0; +const ts = $(`slide.bs.${It}`), ps = $(`slid.bs.${It}`), qs = (t) => { const { index: s, direction: e, element: n, slides: o, options: i } = t; + // istanbul ignore else @preserve if (t.isAnimating) { - const c = gs(t), a = e === "left" ? "next" : "prev", l = e === "left" ? "start" : "end"; - g(o[s], C), b(o[s], `${Q}-${a}`), b(o[s], `${Q}-${l}`), b(o[c], C), b(o[c], `${Q}-${l}`), w(n, fs), u.clear(n, Et), t.cycle && !E(n).hidden && i.interval && !t.isPaused && t.cycle(); + const c = us(t), a = e === "left" ? "next" : "prev", l = e === "left" ? "start" : "end"; + f(o[s], C), b(o[s], `${Z}-${a}`), b(o[s], `${Z}-${l}`), b(o[c], C), b(o[c], `${Z}-${l}`), w(n, ps), u.clear(n, Et), t.cycle && !E(n).hidden && i.interval && !t.isPaused && t.cycle(); } }; -function Ti() { +function Si() { const t = gt(this); - t && !t.isPaused && !u.get(this, Tt) && g(this, Tt); + // istanbul ignore else @preserve + t && !t.isPaused && !u.get(this, Tt) && f(this, Tt); } -function yi() { +function Pi() { const t = gt(this); + // istanbul ignore else @preserve t && t.isPaused && !u.get(this, Tt) && t.cycle(); } -function Ci(t) { +function Di(t) { t.preventDefault(); - const s = M(this, Ee) || X(this), e = gt(s); + const s = M(this, Te) || K(this), e = gt(s); + // istanbul ignore else @preserve if (e && !e.isAnimating) { - const n = +(it(this, hs) || /* istanbul ignore next */ + const n = +(st(this, gs) || // istanbul ignore next @preserve 0); - this && !h(this, C) && // event target is not active + // istanbul ignore else @preserve + this && !g(this, C) && // event target is not active !Number.isNaN(n) && e.to(n); } } -function Si(t) { +function Ai(t) { t.preventDefault(); - const s = M(this, Ee) || X(this), e = gt(s); + const s = M(this, Te) || K(this), e = gt(s); + // istanbul ignore else @preserve if (e && !e.isAnimating) { - const n = it(this, Et); + const n = st(this, Et); + // istanbul ignore else @preserve n === "next" ? e.next() : n === "prev" && e.prev(); } } -const Hi = ({ code: t, target: s }) => { - const e = E(s), [n] = [...tt(Ee, e)].filter((i) => Fn(i)), o = gt(n); +const Ii = ({ code: t, target: s }) => { + const e = E(s), [n] = [...J(Te, e)].filter((i) => Xn(i)), o = gt(n); + // istanbul ignore next @preserve if (o && !o.isAnimating && !/textarea|input/i.test(s.nodeName)) { - const i = Ct(n); - t === (i ? Ms : Os) ? o.prev() : t === (i ? Os : Ms) && o.next(); + const i = Ct(n), c = i ? _s : Bs, a = i ? Bs : _s; + // istanbul ignore else @preserve + t === a ? o.prev() : t === c && o.next(); } }; -function Us(t) { +function Zs(t) { const { target: s } = t, e = gt(this); + // istanbul ignore next @preserve e && e.isTouch && (e.indicator && !e.indicator.contains(s) || !e.controls.includes(s)) && (t.stopImmediatePropagation(), t.stopPropagation(), t.preventDefault()); } -function xi(t) { +function Li(t) { const { target: s } = t, e = gt(this); + // istanbul ignore else @preserve if (e && !e.isAnimating && !e.isTouch) { const { controls: n, indicators: o } = e; - [...n, ...o].every((i) => i === s || i.contains(s)) || (se = t.pageX, this.contains(s) && (e.isTouch = !0, Yn(e, !0))); + // istanbul ignore else @preserve + if (![...n, ...o].every((i) => i === s || i.contains(s))) { + ee = t.pageX; + // istanbul ignore else @preserve + this.contains(s) && (e.isTouch = !0, Jn(e, !0)); + } } } -const Pi = (t) => { +const ki = (t) => { Se = t.pageX; -}, Di = (t) => { +}, Ni = (t) => { var o; - const { target: s } = t, e = E(s), n = [...tt(Ee, e)].map((i) => gt(i)).find((i) => i.isTouch); + const { target: s } = t, e = E(s), n = [...J(Te, e)].map((i) => gt(i)).find((i) => i.isTouch); + // istanbul ignore else @preserve if (n) { const { element: i, index: c } = n, a = Ct(i); - Ge = t.pageX, n.isTouch = !1, Yn(n), !((o = e.getSelection()) != null && o.toString().length) && i.contains(s) && Math.abs(se - Ge) > 120 && (Se < se ? n.to(c + (a ? -1 : 1)) : Se > se && n.to(c + (a ? 1 : -1))), se = 0, Se = 0, Ge = 0; + if (Qe = t.pageX, n.isTouch = !1, Jn(n), !((o = e.getSelection()) != null && o.toString().length) && i.contains(s) && Math.abs(ee - Qe) > 120) { + // istanbul ignore else @preserve + Se < ee ? n.to(c + (a ? -1 : 1)) : Se > ee && n.to(c + (a ? 1 : -1)); + } + ee = 0, Se = 0, Qe = 0; } -}, ts = (t, s) => { +}, es = (t, s) => { const { indicators: e } = t; - [...e].forEach((n) => b(n, C)), t.indicators[s] && g(e[s], C); -}, Yn = (t, s) => { + [...e].forEach((n) => b(n, C)); + // istanbul ignore else @preserve + t.indicators[s] && f(e[s], C); +}, Jn = (t, s) => { const { element: e } = t, n = s ? _ : B; - n(E(e), Vo, Pi, st), n(E(e), Ko, Di, st); -}, gs = (t) => { - const { slides: s, element: e } = t, n = P(`.${Q}.${C}`, e); - return y(n) ? [...s].indexOf(n) : -1; + n(E(e), Uo, ki, nt), n(E(e), qo, Ni, nt); +}, us = (t) => { + const { slides: s, element: e } = t, n = S(`.${Z}.${C}`, e); + return T(n) ? [...s].indexOf(n) : -1; }; -class ie extends nt { +class oe extends ot { /** * @param target mostly a `.carousel` element * @param config instance options @@ -474,73 +563,87 @@ class ie extends nt { * @param add when `TRUE` event listeners are added */ d(this, "_toggleEventListeners", (e) => { - const { element: n, options: o, slides: i, controls: c, indicators: a } = this, { touch: l, pause: r, interval: f, keyboard: p } = o, v = e ? _ : B; - r && f && (v(n, Me, Ti), v(n, $s, yi)), l && i.length > 2 && (v(n, zo, xi, st), v(n, Ts, Us, { passive: !1 }), v(n, Xo, Us, { passive: !1 })), c.length && c.forEach((D) => { - D && v(D, N, Si); - }), a.length && a.forEach((D) => { - v(D, N, Ci); - }), p && v(E(n), Oe, Hi); + const { element: n, options: o, slides: i, controls: c, indicators: a } = this, { touch: l, pause: r, interval: h, keyboard: p } = o, v = e ? _ : B; + r && h && (v(n, Me, Si), v(n, ys, Pi)), l && i.length > 2 && (v(n, Yo, Li, nt), v(n, Cs, Zs, { passive: !1 }), v(n, Zo, Zs, { passive: !1 })); + // istanbul ignore else @preserve + c.length && c.forEach((P) => { + // istanbul ignore else @preserve + P && v(P, N, Ai); + }); + // istanbul ignore else @preserve + a.length && a.forEach((P) => { + v(P, N, Di); + }), p && v(E(n), Oe, Ii); }); const { element: o } = this; - this.direction = Ct(o) ? "right" : "left", this.isTouch = !1, this.slides = rt(Q, o); + this.direction = Ct(o) ? "right" : "left", this.isTouch = !1, this.slides = rt(Z, o); const { slides: i } = this; if (i.length >= 2) { - const c = gs(this), a = [...i].find((f) => jn(f, `.${Q}-next,.${Q}-next`)); + const c = us(this), a = [...i].find((h) => Kn(h, `.${Z}-next,.${Z}-next`)); this.index = c; const l = E(o); this.controls = [ - ...tt(`[${Et}]`, o), - ...tt(`[${Et}][${ds}="#${o.id}"]`, l) - ].filter((f, p, v) => p === v.indexOf(f)), this.indicator = P(`.${Lt}-indicators`, o), this.indicators = [ - ...this.indicator ? tt(`[${hs}]`, this.indicator) : [], - ...tt(`[${hs}][${ds}="#${o.id}"]`, l) - ].filter((f, p, v) => p === v.indexOf(f)); + ...J(`[${Et}]`, o), + ...J(`[${Et}][${fs}="#${o.id}"]`, l) + ].filter((h, p, v) => p === v.indexOf(h)), this.indicator = S(`.${It}-indicators`, o), this.indicators = [ + ...this.indicator ? J(`[${gs}]`, this.indicator) : ( + // istanbul ignore next @preserve + [] + ), + ...J(`[${gs}][${fs}="#${o.id}"]`, l) + ].filter((h, p, v) => p === v.indexOf(h)); const { options: r } = this; - this.options.interval = r.interval === !0 ? Xs.interval : r.interval, a ? this.index = [...i].indexOf(a) : c < 0 && (this.index = 0, g(i[0], C), this.indicators.length && ts(this, 0)), this.indicators.length && ts(this, this.index), this._toggleEventListeners(!0), r.interval && this.cycle(); + this.options.interval = r.interval === !0 ? Us.interval : r.interval; + // istanbul ignore next @preserve - impossible to test + a ? this.index = [...i].indexOf(a) : c < 0 && (this.index = 0, f(i[0], C), this.indicators.length && es(this, 0)); + // istanbul ignore else @preserve + this.indicators.length && es(this, this.index), this._toggleEventListeners(!0), r.interval && this.cycle(); } } /** * Returns component name string. */ get name() { - return Xn; + return Zn; } /** * Returns component default options. */ get defaults() { - return Xs; + return Us; } /** * Check if instance is paused. */ get isPaused() { - return h(this.element, Tt); + return g(this.element, Tt); } /** * Check if instance is animating. */ get isAnimating() { - return P(`.${Q}-next,.${Q}-prev`, this.element) !== null; + return S(`.${Z}-next,.${Z}-prev`, this.element) !== null; } // CAROUSEL PUBLIC METHODS // ======================= /** Slide automatically through items. */ cycle() { const { element: e, options: n, isPaused: o, index: i } = this; - u.clear(e, Lt), o && (u.clear(e, Tt), b(e, Tt)), u.set( + u.clear(e, It), o && (u.clear(e, Tt), b(e, Tt)), u.set( e, () => { - this.element && !this.isPaused && !this.isTouch && Fn(e) && this.to(i + 1); + // istanbul ignore else @preserve + this.element && !this.isPaused && !this.isTouch && Xn(e) && this.to(i + 1); }, n.interval, - Lt + It ); } /** Pause the automatic cycle. */ pause() { const { element: e, options: n } = this; - !this.isPaused && n.interval && (g(e, Tt), u.set( + // istanbul ignore else @preserve + !this.isPaused && n.interval && (f(e, Tt), u.set( e, () => { }, @@ -550,10 +653,12 @@ class ie extends nt { } /** Slide to the next item. */ next() { + // istanbul ignore else @preserve this.isAnimating || this.to(this.index + 1); } /** Slide to the previous item. */ prev() { + // istanbul ignore else @preserve this.isAnimating || this.to(this.index - 1); } /** @@ -562,32 +667,35 @@ class ie extends nt { * @param idx the index of the item to jump to */ to(e) { - const { element: n, slides: o, options: i } = this, c = gs(this), a = Ct(n); + const { element: n, slides: o, options: i } = this, c = us(this), a = Ct(n); let l = e; if (!this.isAnimating && c !== l && !u.get(n, Et)) { + // istanbul ignore else @preserve c < l || c === 0 && l === o.length - 1 ? this.direction = a ? "right" : "left" : (c > l || c === o.length - 1 && l === 0) && (this.direction = a ? "left" : "right"); const { direction: r } = this; l < 0 ? l = o.length - 1 : l >= o.length && (l = 0); - const f = r === "left" ? "next" : "prev", p = r === "left" ? "start" : "end", v = { + const h = r === "left" ? "next" : "prev", p = r === "left" ? "start" : "end", v = { relatedTarget: o[l], from: c, to: l, direction: r }; - dt(Je, v), dt(fs, v), w(n, Je), Je.defaultPrevented || (this.index = l, ts(this, l), Kt(o[l]) && h(n, "slide") ? u.set( + dt(ts, v), dt(ps, v), w(n, ts), ts.defaultPrevented || (this.index = l, es(this, l), Ee(o[l]) && g(n, "slide") ? u.set( n, () => { - g(o[l], `${Q}-${f}`), Mt(o[l]), g(o[l], `${Q}-${p}`), g(o[c], `${Q}-${p}`), x( + f(o[l], `${Z}-${h}`), Mt(o[l]), f(o[l], `${Z}-${p}`), f(o[c], `${Z}-${p}`), A( o[l], - () => this.slides && this.slides.length && Ys(this) + () => this.slides && this.slides.length && qs(this) ); }, 0, Et - ) : (g(o[l], C), b(o[c], C), u.set( + ) : (f(o[l], C), b(o[c], C), u.set( n, () => { - u.clear(n, Et), n && i.interval && !this.isPaused && this.cycle(), w(n, fs); + u.clear(n, Et); + // istanbul ignore else @preserve + n && i.interval && !this.isPaused && this.cycle(), w(n, ps); }, 0, Et @@ -600,27 +708,32 @@ class ie extends nt { ...this, isAnimating: e }; - this._toggleEventListeners(), super.dispose(), n.isAnimating && x(n.slides[n.index], () => { - Ys(n); + this._toggleEventListeners(), super.dispose(); + // istanbul ignore next @preserve - impossible to test + n.isAnimating && A(n.slides[n.index], () => { + qs(n); }); } } -d(ie, "selector", Ee), d(ie, "init", $i), d(ie, "getInstance", gt); -const Nt = "collapsing", K = "collapse", Un = "Collapse", Ai = `.${K}`, qn = `[${ct}="${K}"]`, Li = { parent: null }, He = (t) => F(t, Un), Ii = (t) => new ce(t), qs = $(`show.bs.${K}`), ki = $(`shown.bs.${K}`), Qs = $(`hide.bs.${K}`), Ni = $(`hidden.bs.${K}`), Oi = (t) => { +d(oe, "selector", Te), d(oe, "init", Hi), d(oe, "getInstance", gt); +const Nt = "collapsing", X = "collapse", Gn = "Collapse", Oi = `.${X}`, Qn = `[${ct}="${X}"]`, Mi = { parent: null }, Pe = (t) => W(t, Gn), _i = (t) => new ie(t), Js = $(`show.bs.${X}`), Bi = $(`shown.bs.${X}`), Gs = $(`hide.bs.${X}`), Ri = $(`hidden.bs.${X}`), Fi = (t) => { const { element: s, parent: e, triggers: n } = t; - w(s, qs), qs.defaultPrevented || (u.set(s, ge, 17), e && u.set(e, ge, 17), g(s, Nt), b(s, K), I(s, { height: `${s.scrollHeight}px` }), x(s, () => { - u.clear(s), e && u.clear(e), n.forEach((o) => O(o, De, "true")), b(s, Nt), g(s, K), g(s, m), I(s, { height: "" }), w(s, ki); + w(s, Js), Js.defaultPrevented || (u.set(s, fe, 17), e && u.set(e, fe, 17), f(s, Nt), b(s, X), I(s, { height: `${s.scrollHeight}px` }), A(s, () => { + u.clear(s), e && u.clear(e), n.forEach((o) => O(o, Ie, "true")), b(s, Nt), f(s, X), f(s, m), I(s, { height: "" }), w(s, Bi); })); -}, Zs = (t) => { +}, Qs = (t) => { const { element: s, parent: e, triggers: n } = t; - w(s, Qs), Qs.defaultPrevented || (u.set(s, ge, 17), e && u.set(e, ge, 17), I(s, { height: `${s.scrollHeight}px` }), b(s, K), b(s, m), g(s, Nt), Mt(s), I(s, { height: "0px" }), x(s, () => { - u.clear(s), e && u.clear(e), n.forEach((o) => O(o, De, "false")), b(s, Nt), g(s, K), I(s, { height: "" }), w(s, Ni); + w(s, Gs), Gs.defaultPrevented || (u.set(s, fe, 17), e && u.set(e, fe, 17), I(s, { height: `${s.scrollHeight}px` }), b(s, X), b(s, m), f(s, Nt), Mt(s), I(s, { height: "0px" }), A(s, () => { + u.clear(s); + // istanbul ignore else @preserve + e && u.clear(e), n.forEach((o) => O(o, Ie, "false")), b(s, Nt), f(s, X), I(s, { height: "" }), w(s, Ri); })); -}, Mi = (t) => { - const { target: s } = t, e = s && M(s, qn), n = e && X(e), o = n && He(n); +}, Wi = (t) => { + const { target: s } = t, e = s && M(s, Qn), n = e && K(e), o = n && Pe(n); + // istanbul ignore else @preserve o && o.toggle(), e && e.tagName === "A" && t.preventDefault(); }; -class ce extends nt { +class ie extends ot { /** * @param target and `Element` that matches the selector * @param config instance options @@ -634,71 +747,82 @@ class ce extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B, { triggers: o } = this; - o.length && o.forEach((i) => n(i, N, Mi)); + // istanbul ignore else @preserve + o.length && o.forEach((i) => n(i, N, Wi)); }); const { element: o, options: i } = this, c = E(o); - this.triggers = [...tt(qn, c)].filter((a) => X(a) === o), this.parent = y(i.parent) ? i.parent : be(i.parent) ? X(o) || P(i.parent, c) : null, this._toggleEventListeners(!0); + this.triggers = [...J(Qn, c)].filter((a) => K(a) === o), this.parent = T(i.parent) ? i.parent : we(i.parent) ? K(o) || S(i.parent, c) : null, this._toggleEventListeners(!0); } /** * Returns component name string. */ get name() { - return Un; + return Gn; } /** * Returns component default options. */ get defaults() { - return Li; + return Mi; } // COLLAPSE PUBLIC METHODS // ======================= /** Hides the collapse. */ hide() { const { triggers: e, element: n } = this; - u.get(n) || (Zs(this), e.length && e.forEach((o) => g(o, `${K}d`))); + // istanbul ignore else @preserve + if (!u.get(n)) { + Qs(this); + // istanbul ignore else @preserve + e.length && e.forEach((o) => f(o, `${X}d`)); + } } /** Shows the collapse. */ show() { const { element: e, parent: n, triggers: o } = this; let i, c; - n && (i = [...tt(`.${K}.${m}`, n)].find( - (a) => He(a) - ), c = i && He(i)), (!n || !u.get(n)) && !u.get(e) && (c && i !== e && (Zs(c), c.triggers.forEach((a) => { - g(a, `${K}d`); - })), Oi(this), o.length && o.forEach((a) => b(a, `${K}d`))); + if (n && (i = [...J(`.${X}.${m}`, n)].find( + (a) => Pe(a) + ), c = i && Pe(i)), (!n || !u.get(n)) && !u.get(e)) { + c && i !== e && (Qs(c), c.triggers.forEach((a) => { + f(a, `${X}d`); + })), Fi(this); + // istanbul ignore else @preserve + o.length && o.forEach((a) => b(a, `${X}d`)); + } } /** Toggles the visibility of the collapse. */ toggle() { - h(this.element, m) ? this.hide() : this.show(); + g(this.element, m) ? this.hide() : this.show(); } /** Remove the `Collapse` component from the target `Element`. */ dispose() { this._toggleEventListeners(), super.dispose(); } } -d(ce, "selector", Ai), d(ce, "init", Ii), d(ce, "getInstance", He); -const Ot = ["dropdown", "dropup", "dropstart", "dropend"], Qn = "Dropdown", Zn = "dropdown-menu", Gn = (t) => { +d(ie, "selector", Oi), d(ie, "init", _i), d(ie, "getInstance", Pe); +const Ot = ["dropdown", "dropup", "dropstart", "dropend"], to = "Dropdown", eo = "dropdown-menu", so = (t) => { const s = M(t, "A"); return t.tagName === "A" && // anchor href starts with # - Ie(t, "href") && it(t, "href").slice(-1) === "#" || // OR a child of an anchor with href starts with # - s && Ie(s, "href") && it(s, "href").slice(-1) === "#"; -}, [et, ps, us, ms] = Ot, Jn = `[${ct}="${et}"]`, Yt = (t) => F(t, Qn), _i = (t) => new ae(t), Bi = `${Zn}-end`, Gs = [et, ps], Js = [us, ms], tn = ["A", "BUTTON"], Ri = { + ge(t, "href") && st(t, "href").slice(-1) === "#" || // OR a child of an anchor with href starts with # + s && ge(s, "href") && st(s, "href").slice(-1) === "#"; +}, [et, ms, vs, bs] = Ot, no = `[${ct}="${et}"]`, Kt = (t) => W(t, to), ji = (t) => new ce(t), zi = `${eo}-end`, tn = [et, ms], en = [vs, bs], sn = ["A", "BUTTON"], Vi = { offset: 5, // [number] 5(px) display: "dynamic" // [dynamic|static] -}, es = $(`show.bs.${et}`), en = $(`shown.bs.${et}`), ss = $(`hide.bs.${et}`), sn = $(`hidden.bs.${et}`), to = $(`updated.bs.${et}`), eo = (t) => { +}, ss = $(`show.bs.${et}`), nn = $(`shown.bs.${et}`), ns = $(`hide.bs.${et}`), on = $(`hidden.bs.${et}`), oo = $(`updated.bs.${et}`), io = (t) => { const { element: s, menu: e, parentElement: n, options: o } = t, { offset: i } = o; + // istanbul ignore else @preserve: this test requires a navbar if (V(e, "position") !== "static") { - const c = Ct(s), a = h(e, Bi); + const c = Ct(s), a = g(e, zi); ["margin", "top", "bottom", "left", "right"].forEach((k) => { const ut = {}; ut[k] = "", I(e, ut); }); - let r = Ot.find((k) => h(n, k)) || /* istanbul ignore next: fallback position */ + let r = Ot.find((k) => g(n, k)) || // istanbul ignore next @preserve: fallback position et; - const f = { + const h = { dropdown: [i, 0, 0], dropup: [0, 0, i], dropstart: c ? [-1, 0, 0, i] : [-1, i, 0], @@ -710,74 +834,100 @@ const Ot = ["dropdown", "dropup", "dropstart", "dropend"], Qn = "Dropdown", Zn = dropend: c ? { left: "auto", right: "100%" } : { left: "100%", right: "auto" }, menuStart: c ? { right: "0", left: "auto" } : { right: "auto", left: "0" }, menuEnd: c ? { right: "auto", left: "0" } : { right: "0", left: "auto" } - }, { offsetWidth: v, offsetHeight: D } = e, { clientWidth: q, clientHeight: T } = ft(s), { + }, { offsetWidth: v, offsetHeight: P } = e, { clientWidth: q, clientHeight: y } = ft(s), { left: j, top: Y, width: Bt, height: at - } = we(s), S = j - v - i < 0, J = j + v + Bt + i >= q, ot = Y + D + i >= T, W = Y + D + at + i >= T, z = Y - D - i < 0, H = (!c && a || c && !a) && j + Bt - v < 0, Rt = (c && a || !c && !a) && j + v >= q; - if (Js.includes(r) && S && J && (r = et), r === us && (c ? J : S) && (r = ms), r === ms && (c ? S : J) && (r = us), r === ps && z && !W && (r = et), r === et && W && !z && (r = ps), Js.includes(r) && ot && dt(p[r], { + } = $e(s), x = j - v - i < 0, tt = j + v + Bt + i >= q, it = Y + P + i >= y, F = Y + P + at + i >= y, z = Y - P - i < 0, H = (!c && a || c && !a) && j + Bt - v < 0, Rt = (c && a || !c && !a) && j + v >= q; + if (en.includes(r) && x && tt && (r = et), r === vs && (c ? tt : x) && (r = bs), r === bs && (c ? x : tt) && (r = vs), r === ms && z && !F && (r = et), r === et && F && !z && (r = ms), en.includes(r) && it && dt(p[r], { top: "auto", bottom: 0 - }), Gs.includes(r) && (H || Rt)) { + }), tn.includes(r) && (H || Rt)) { let k = { left: "auto", right: "auto" }; - !H && Rt && !c && (k = { left: "auto", right: 0 }), H && !Rt && c && (k = { left: 0, right: "auto" }), k && dt(p[r], k); + // istanbul ignore else @preserve + !H && Rt && !c && (k = { left: "auto", right: 0 }); + // istanbul ignore else @preserve + H && !Rt && c && (k = { left: 0, right: "auto" }); + // istanbul ignore else @preserve + k && dt(p[r], k); } - const pt = f[r]; - I(e, { + const pt = h[r]; + if (I(e, { ...p[r], margin: `${pt.map((k) => k && `${k}px`).join(" ")}` - }), Gs.includes(r) && a && a && I(e, p[!c && H || c && Rt ? "menuStart" : ( - /* istanbul ignore next */ - "menuEnd" - )]), w(n, to); + }), tn.includes(r) && a) { + // istanbul ignore else @preserve + a && I(e, p[!c && H || c && Rt ? "menuStart" : ( + // istanbul ignore next @preserve + "menuEnd" + )]); + } + w(n, oo); } -}, Wi = (t) => [...t.children].map((s) => { - if (s && tn.includes(s.tagName)) return s; +}, Xi = (t) => [...t.children].map((s) => { + if (s && sn.includes(s.tagName)) return s; const { firstElementChild: e } = s; - return e && tn.includes(e.tagName) ? e : null; -}).filter((s) => s), nn = (t) => { + return e && sn.includes(e.tagName) ? e : null; +}).filter((s) => s), cn = (t) => { const { element: s, options: e } = t, n = t.open ? _ : B, o = E(s); - n(o, N, on), n(o, ws, on), n(o, Oe, ji), n(o, Fo, zi), e.display === "dynamic" && [Be, _e].forEach((i) => { - n(qt(s), i, Vi, st); + n(o, N, an), n(o, $s, an), n(o, Oe, Yi), n(o, Xo, Ui); + // istanbul ignore else @preserve + e.display === "dynamic" && [Be, _e].forEach((i) => { + n(Ut(s), i, qi, nt); }); -}, je = (t) => { +}, ze = (t) => { const s = [...Ot, "btn-group", "input-group"].map((e) => rt(`${e} ${m}`, E(t))).find((e) => e.length); if (s && s.length) return [...s[0].children].find( - (e) => Ot.some((n) => n === it(e, ct)) + (e) => Ot.some((n) => n === st(e, ct)) ); -}, on = (t) => { +}, an = (t) => { const { target: s, type: e } = t; - if (s && y(s)) { - const n = je(s), o = n && Yt(n); + // istanbul ignore else @preserve + if (s && T(s)) { + const n = ze(s), o = n && Kt(n); + // istanbul ignore else @preserve if (o) { const { parentElement: i, menu: c } = o, a = i && i.contains(s) && (s.tagName === "form" || M(s, "form") !== null); - [N, Mn].includes(e) && Gn(s) && t.preventDefault(), !a && e !== ws && s !== n && s !== c && o.hide(); + [N, Bn].includes(e) && so(s) && t.preventDefault(); + // istanbul ignore else @preserve + !a && e !== $s && s !== n && s !== c && o.hide(); } } -}, Fi = (t) => { - const { target: s } = t, e = s && M(s, Jn), n = e && Yt(e); - n && (t.stopPropagation(), n.toggle(), e && Gn(e) && t.preventDefault()); -}, ji = (t) => { - [as, rs].includes(t.code) && t.preventDefault(); +}, Ki = (t) => { + const { target: s } = t, e = s && M(s, no), n = e && Kt(e); + // istanbul ignore else @preserve + if (n) { + t.stopPropagation(), n.toggle(); + // istanbul ignore else @preserve + e && so(e) && t.preventDefault(); + } +}, Yi = (t) => { + // istanbul ignore else @preserve + [rs, ls].includes(t.code) && t.preventDefault(); }; -function zi(t) { - const { code: s } = t, e = je(this), n = e && Yt(e), { activeElement: o } = e && E(e); +function Ui(t) { + const { code: s } = t, e = ze(this), n = e && Kt(e), { activeElement: o } = e && E(e); + // istanbul ignore else @preserve if (n && o) { - const { menu: i, open: c } = n, a = Wi(i); - if (a && a.length && [as, rs].includes(s)) { + const { menu: i, open: c } = n, a = Xi(i); + if (a && a.length && [rs, ls].includes(s)) { let l = a.indexOf(o); - o === e ? l = 0 : s === rs ? l = l > 1 ? l - 1 : 0 : s === as && (l = l < a.length - 1 ? l + 1 : l), a[l] && ht(a[l]); + // istanbul ignore else @preserve + o === e ? l = 0 : s === ls ? l = l > 1 ? l - 1 : 0 : s === rs && (l = l < a.length - 1 ? l + 1 : l); + // istanbul ignore else @preserve + a[l] && ht(a[l]); } - ys === s && c && (n.toggle(), ht(e)); + xs === s && c && (n.toggle(), ht(e)); } } -function Vi() { - const t = je(this), s = t && Yt(t); - s && s.open && eo(s); +function qi() { + const t = ze(this), s = t && Kt(t); + // istanbul ignore else @preserve + s && s.open && io(s); } -class ae extends nt { +class ce extends ot { /** * @param target Element or string selector * @param config the instance options @@ -790,22 +940,22 @@ class ae extends nt { * @param add when `true`, it will add the event listener */ d(this, "_toggleEventListeners", (e) => { - (e ? _ : B)(this.element, N, Fi); + (e ? _ : B)(this.element, N, Ki); }); - const { parentElement: o } = this.element, [i] = rt(Zn, o); + const { parentElement: o } = this.element, [i] = rt(eo, o); i && (this.parentElement = o, this.menu = i, this._toggleEventListeners(!0)); } /** * Returns component name string. */ get name() { - return Qn; + return to; } /** * Returns component default options. */ get defaults() { - return Ri; + return Vi; } // DROPDOWN PUBLIC METHODS // ======================= @@ -816,140 +966,167 @@ class ae extends nt { /** Shows the dropdown menu to the user. */ show() { const { element: e, open: n, menu: o, parentElement: i } = this; + // istanbul ignore else @preserve if (!n) { - const c = je(e), a = c && Yt(c); - a && a.hide(), [es, en, to].forEach((l) => { + const c = ze(e), a = c && Kt(c); + a && a.hide(), [ss, nn, oo].forEach((l) => { l.relatedTarget = e; - }), w(i, es), es.defaultPrevented || (g(o, m), g(i, m), O(e, De, "true"), eo(this), this.open = !n, ht(e), nn(this), w(i, en)); + }), w(i, ss), ss.defaultPrevented || (f(o, m), f(i, m), O(e, Ie, "true"), io(this), this.open = !n, ht(e), cn(this), w(i, nn)); } } /** Hides the dropdown menu from the user. */ hide() { const { element: e, open: n, menu: o, parentElement: i } = this; - n && ([ss, sn].forEach((c) => { + // istanbul ignore else @preserve + n && ([ns, on].forEach((c) => { c.relatedTarget = e; - }), w(i, ss), ss.defaultPrevented || (b(o, m), b(i, m), O(e, De, "false"), this.open = !n, nn(this), w(i, sn))); + }), w(i, ns), ns.defaultPrevented || (b(o, m), b(i, m), O(e, Ie, "false"), this.open = !n, cn(this), w(i, on))); } /** Removes the `Dropdown` component from the target element. */ dispose() { this.open && this.hide(), this._toggleEventListeners(), super.dispose(); } } -d(ae, "selector", Jn), d(ae, "init", _i), d(ae, "getInstance", Yt); -const U = "modal", Hs = "Modal", xs = "Offcanvas", Ki = "fixed-top", Xi = "fixed-bottom", so = "sticky-top", no = "position-sticky", oo = (t) => [ - ...rt(Ki, t), - ...rt(Xi, t), - ...rt(so, t), - ...rt(no, t), +d(ce, "selector", no), d(ce, "init", ji), d(ce, "getInstance", Kt); +const U = "modal", Ps = "Modal", Ds = "Offcanvas", Zi = "fixed-top", Ji = "fixed-bottom", co = "sticky-top", ao = "position-sticky", ro = (t) => [ + ...rt(Zi, t), + ...rt(Ji, t), + ...rt(co, t), + ...rt(ao, t), ...rt("is-fixed", t) -], Yi = (t) => { - const s = St(t); +], Gi = (t) => { + const s = xt(t); I(s, { paddingRight: "", overflow: "" }); - const e = oo(s); + const e = ro(s); + // istanbul ignore else @preserve e.length && e.forEach((n) => { I(n, { paddingRight: "", marginRight: "" }); }); -}, io = (t) => { - const { clientWidth: s } = ft(t), { innerWidth: e } = qt(t); +}, lo = (t) => { + const { clientWidth: s } = ft(t), { innerWidth: e } = Ut(t); return Math.abs(e - s); -}, co = (t, s) => { - const e = St(t), n = parseInt(V(e, "paddingRight"), 10), i = V(e, "overflow") === "hidden" && n ? 0 : io(t), c = oo(e); - s && (I(e, { - overflow: "hidden", - paddingRight: `${n + i}px` - }), c.length && c.forEach((a) => { - const l = V(a, "paddingRight"); - if (a.style.paddingRight = `${parseInt(l, 10) + i}px`, [so, no].some((r) => h(a, r))) { - const r = V(a, "marginRight"); - a.style.marginRight = `${parseInt(r, 10) - i}px`; - } - })); -}, Z = "offcanvas", yt = $t({ tagName: "div", className: "popup-container" }), ao = (t, s) => { - const e = L(s) && s.nodeName === "BODY", n = L(s) && !e ? s : yt, o = e ? s : St(t); - L(t) && (n === yt && o.append(yt), n.append(t)); -}, ro = (t, s) => { - const e = L(s) && s.nodeName === "BODY", n = L(s) && !e ? s : yt; - L(t) && (t.remove(), n === yt && !yt.children.length && yt.remove()); -}, Ps = (t, s) => { - const e = L(s) && s.nodeName !== "BODY" ? s : yt; - return L(t) && e.contains(t); -}, lo = "backdrop", cn = `${U}-${lo}`, an = `${Z}-${lo}`, ho = `.${U}.${m}`, Ds = `.${Z}.${m}`, A = $t("div"), _t = (t) => P(`${ho},${Ds}`, E(t)), As = (t) => { - const s = t ? cn : an; - [cn, an].forEach((e) => { - b(A, e); - }), g(A, s); -}, fo = (t, s, e) => { - As(e), ao(A, St(t)), s && g(A, R); -}, go = () => { - h(A, m) || (g(A, m), Mt(A)); -}, ze = () => { - b(A, m); -}, po = (t) => { - _t(t) || (b(A, R), ro(A, St(t)), Yi(t)); -}, uo = (t) => y(t) && V(t, "visibility") !== "hidden" && t.offsetParent !== null, Ui = `.${U}`, mo = `[${ct}="${U}"]`, qi = `[${We}="${U}"]`, vo = `${U}-static`, Qi = { +}, ho = (t, s) => { + const e = xt(t), n = parseInt(V(e, "paddingRight"), 10), i = V(e, "overflow") === "hidden" && n ? 0 : lo(t), c = ro(e); + // istanbul ignore else @preserve + if (s) { + I(e, { + overflow: "hidden", + paddingRight: `${n + i}px` + }); + // istanbul ignore else @preserve + c.length && c.forEach((a) => { + const l = V(a, "paddingRight"); + a.style.paddingRight = `${parseInt(l, 10) + i}px`; + // istanbul ignore else @preserve + if ([co, ao].some((r) => g(a, r))) { + const r = V(a, "marginRight"); + a.style.marginRight = `${parseInt(r, 10) - i}px`; + } + }); + } +}, G = "offcanvas", yt = $t({ + tagName: "div", + className: "popup-container" +}), fo = (t, s) => { + const e = D(s) && s.nodeName === "BODY", n = D(s) && !e ? s : yt, o = e ? s : xt(t); + // istanbul ignore else @preserve + D(t) && (n === yt && o.append(yt), n.append(t)); +}, go = (t, s) => { + const e = D(s) && s.nodeName === "BODY", n = D(s) && !e ? s : yt; + // istanbul ignore else @preserve + D(t) && (t.remove(), n === yt && !yt.children.length && yt.remove()); +}, As = (t, s) => { + const e = D(s) && s.nodeName !== "BODY" ? s : yt; + return D(t) && e.contains(t); +}, po = "backdrop", rn = `${U}-${po}`, ln = `${G}-${po}`, uo = `.${U}.${m}`, Is = `.${G}.${m}`, L = $t("div"), _t = (t) => S(`${uo},${Is}`, E(t)), Ls = (t) => { + const s = t ? rn : ln; + [rn, ln].forEach((e) => { + b(L, e); + }), f(L, s); +}, mo = (t, s, e) => { + Ls(e), fo(L, xt(t)), s && f(L, R); +}, vo = () => { + g(L, m) || (f(L, m), Mt(L)); +}, Ve = () => { + b(L, m); +}, bo = (t) => { + _t(t) || (b(L, R), go(L, xt(t)), Gi(t)); +}, wo = (t) => T(t) && V(t, "visibility") !== "hidden" && t.offsetParent !== null, Qi = `.${U}`, Eo = `[${ct}="${U}"]`, tc = `[${We}="${U}"]`, $o = `${U}-static`, ec = { backdrop: !0, keyboard: !0 -}, pe = (t) => F(t, Hs), Zi = (t) => new re(t), xe = $(`show.bs.${U}`), rn = $(`shown.bs.${U}`), ns = $(`hide.bs.${U}`), ln = $(`hidden.bs.${U}`), bo = (t) => { - const { element: s } = t, e = io(s), { clientHeight: n, scrollHeight: o } = ft(s), { clientHeight: i, scrollHeight: c } = s, a = i !== c; +}, pe = (t) => W(t, Ps), sc = (t) => new ae(t), De = $(`show.bs.${U}`), dn = $(`shown.bs.${U}`), os = $(`hide.bs.${U}`), hn = $(`hidden.bs.${U}`), To = (t) => { + const { element: s } = t, e = lo(s), { clientHeight: n, scrollHeight: o } = ft(s), { clientHeight: i, scrollHeight: c } = s, a = i !== c; + // istanbul ignore next @preserve: impossible to test? if (!a && e) { - const l = Ct(s) ? ( - /* istanbul ignore next */ + const r = { [Ct(s) ? ( + // istanbul ignore next @preserve "paddingLeft" - ) : "paddingRight", r = {}; - r[l] = `${e}px`, I(s, r); + ) : "paddingRight"]: `${e}px` }; + I(s, r); } - co(s, a || n !== o); -}, wo = (t, s) => { + ho(s, a || n !== o); +}, yo = (t, s) => { const e = s ? _ : B, { element: n, update: o } = t; - e(n, N, tc), e(qt(n), _e, o, st), e(E(n), Oe, Ji); -}, dn = (t) => { + e(n, N, ic), e(Ut(n), _e, o, nt), e(E(n), Oe, oc); +}, fn = (t) => { const { triggers: s, element: e, relatedTarget: n } = t; - po(e), I(e, { paddingRight: "", display: "" }), wo(t); - const o = xe.relatedTarget || s.find(uo); - o && ht(o), ln.relatedTarget = n, w(e, ln); -}, hn = (t) => { + bo(e), I(e, { paddingRight: "", display: "" }), yo(t); + const o = De.relatedTarget || s.find(wo); + // istanbul ignore else @preserve + o && ht(o), hn.relatedTarget = n, w(e, hn), Fe(e); +}, gn = (t) => { const { element: s, relatedTarget: e } = t; - ht(s), wo(t, !0), rn.relatedTarget = e, w(s, rn); -}, fn = (t) => { + ht(s), yo(t, !0), dn.relatedTarget = e, w(s, dn), Fe(s); +}, pn = (t) => { const { element: s, hasFade: e } = t; - I(s, { display: "block" }), bo(t), _t(s) || I(St(s), { overflow: "hidden" }), g(s, m), kt(s, ke), O(s, Ne, "true"), e ? x(s, () => hn(t)) : hn(t); -}, gn = (t) => { + I(s, { display: "block" }), To(t); + // istanbul ignore else @preserve + _t(s) || I(xt(s), { overflow: "hidden" }), f(s, m), kt(s, ve), O(s, Ne, "true"), e ? A(s, () => gn(t)) : gn(t); +}, un = (t) => { const { element: s, options: e, hasFade: n } = t; - e.backdrop && n && h(A, m) && !_t(s) ? (ze(), x(A, () => dn(t))) : dn(t); -}, Gi = (t) => { - const { target: s } = t, e = s && M(s, mo), n = e && X(e), o = n && pe(n); - o && (e && e.tagName === "A" && t.preventDefault(), o.relatedTarget = e, o.toggle()); -}, Ji = ({ code: t, target: s }) => { - const e = P(ho, E(s)), n = e && pe(e); + e.backdrop && n && g(L, m) && !_t(s) ? (Ve(), A(L, () => fn(t))) : fn(t); +}, nc = (t) => { + const { target: s } = t, e = s && M(s, Eo), n = e && K(e), o = n && pe(n); + // istanbul ignore else @preserve + if (o) { + // istanbul ignore else @preserve + e && e.tagName === "A" && t.preventDefault(), o.relatedTarget = e, o.toggle(); + } +}, oc = ({ code: t, target: s }) => { + const e = S(uo, E(s)), n = e && pe(e); + // istanbul ignore else @preserve if (n) { const { options: o } = n; - o.keyboard && t === ys && // the keyboard option is enabled and the key is 27 - h(e, m) && (n.relatedTarget = null, n.hide()); + // istanbul ignore else @preserve + o.keyboard && t === xs && // the keyboard option is enabled and the key is 27 + g(e, m) && (n.relatedTarget = null, n.hide()); } -}, tc = (t) => { +}, ic = (t) => { var n, o; - const { currentTarget: s } = t, e = s ? pe(s) : null; + const { currentTarget: s } = t, e = s && pe(s); + // istanbul ignore else @preserve if (e && s && !u.get(s)) { - const { options: i, isStatic: c, modalDialog: a } = e, { backdrop: l } = i, { target: r } = t, f = (o = (n = E(s)) == null ? void 0 : n.getSelection()) == null ? void 0 : o.toString().length, p = a.contains(r), v = r && M(r, qi); + const { options: i, isStatic: c, modalDialog: a } = e, { backdrop: l } = i, { target: r } = t, h = (o = (n = E(s)) == null ? void 0 : n.getSelection()) == null ? void 0 : o.toString().length, p = a.contains(r), v = r && M(r, tc); + // istanbul ignore else @preserve c && !p ? u.set( s, () => { - g(s, vo), x(a, () => ec(e)); + f(s, $o), A(a, () => cc(e)); }, 17 - ) : (v || !f && !c && !p && l) && (e.relatedTarget = v || null, e.hide(), t.preventDefault()); + ) : (v || !h && !c && !p && l) && (e.relatedTarget = v || null, e.hide(), t.preventDefault()); } -}, ec = (t) => { - const { element: s, modalDialog: e } = t, n = (Kt(e) || 0) + 17; - b(s, vo), u.set(s, () => u.clear(s), n); +}, cc = (t) => { + const { element: s, modalDialog: e } = t, n = (Ee(e) || 0) + 17; + b(s, $o), u.set(s, () => u.clear(s), n); }; -class re extends nt { +class ae extends ot { /** * @param target usually the `.modal` element * @param config instance options @@ -960,7 +1137,8 @@ class re extends nt { * Updates the modal layout. */ d(this, "update", () => { - h(this.element, m) && bo(this); + // istanbul ignore else @preserve + g(this.element, m) && To(this); }); /** * Toggles on/off the `click` event listener of the `Modal` instance. @@ -969,99 +1147,133 @@ class re extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B, { triggers: o } = this; - o.length && o.forEach((i) => n(i, N, Gi)); + // istanbul ignore else @preserve + o.length && o.forEach((i) => n(i, N, nc)); }); - const { element: o } = this, i = P(`.${U}-dialog`, o); - i && (this.modalDialog = i, this.triggers = [...tt(mo, E(o))].filter( - (c) => X(c) === o - ), this.isStatic = this.options.backdrop === "static", this.hasFade = h(o, R), this.relatedTarget = null, this._toggleEventListeners(!0)); + const { element: o } = this, i = S(`.${U}-dialog`, o); + // istanbul ignore else @preserve + i && (this.modalDialog = i, this.triggers = [...J(Eo, E(o))].filter( + (c) => K(c) === o + ), this.isStatic = this.options.backdrop === "static", this.hasFade = g(o, R), this.relatedTarget = null, this._toggleEventListeners(!0)); } /** * Returns component name string. */ get name() { - return Hs; + return Ps; } /** * Returns component default options. */ get defaults() { - return Qi; + return ec; } // MODAL PUBLIC METHODS // ==================== /** Toggles the visibility of the modal. */ toggle() { - h(this.element, m) ? this.hide() : this.show(); + g(this.element, m) ? this.hide() : this.show(); } /** Shows the modal to the user. */ show() { const { element: e, options: n, hasFade: o, relatedTarget: i } = this, { backdrop: c } = n; let a = 0; - if (!h(e, m) && (xe.relatedTarget = i || void 0, w(e, xe), !xe.defaultPrevented)) { + // istanbul ignore else @preserve + if (!g(e, m) && (De.relatedTarget = i || void 0, w(e, De), !De.defaultPrevented)) { const l = _t(e); + // istanbul ignore else @preserve if (l && l !== e) { - const r = pe(l) || /* istanbul ignore next */ - F(l, xs); + const r = pe(l) || // istanbul ignore next @preserve + W(l, Ds); + // istanbul ignore else @preserve r && r.hide(); } - c ? (Ps(A) ? As(!0) : fo(e, o, !0), a = Kt(A), go(), setTimeout(() => fn(this), a)) : (fn(this), l && h(A, m) && ze()); + if (c) + As(L) ? Ls(!0) : mo(e, o, !0), a = Ee(L), vo(), setTimeout(() => pn(this), a); + else { + pn(this); + // istanbul ignore else @preserve + l && g(L, m) && Ve(); + } } } /** Hide the modal from the user. */ hide() { const { element: e, hasFade: n, relatedTarget: o } = this; - h(e, m) && (ns.relatedTarget = o || void 0, w(e, ns), ns.defaultPrevented || (b(e, m), O(e, ke, "true"), kt(e, Ne), n ? x(e, () => gn(this)) : gn(this))); + // istanbul ignore else @preserve + if (g(e, m)) { + os.relatedTarget = o || void 0, w(e, os); + // istanbul ignore else @preserve + os.defaultPrevented || (b(e, m), O(e, ve, "true"), kt(e, Ne), n ? A(e, () => un(this)) : un(this)); + } } /** Removes the `Modal` component from target element. */ dispose() { - const e = { ...this }, { element: n, modalDialog: o } = e, i = () => super.dispose(); - this._toggleEventListeners(), this.hide(), h(n, "fade") ? x(o, i) : i(); + const e = { ...this }, { modalDialog: n, hasFade: o } = e, i = () => setTimeout(() => super.dispose(), 17); + this.hide(), this._toggleEventListeners(), o ? A(n, i) : i(); } } -d(re, "selector", Ui), d(re, "init", Zi), d(re, "getInstance", pe); -const sc = `.${Z}`, Ls = `[${ct}="${Z}"]`, nc = `[${We}="${Z}"]`, Ve = `${Z}-toggling`, oc = { +d(ae, "selector", Qi), d(ae, "init", sc), d(ae, "getInstance", pe); +const ac = `.${G}`, ks = `[${ct}="${G}"]`, rc = `[${We}="${G}"]`, Xe = `${G}-toggling`, lc = { backdrop: !0, // boolean keyboard: !0, // boolean scroll: !1 // boolean -}, ue = (t) => F(t, xs), ic = (t) => new le(t), Pe = $(`show.bs.${Z}`), Eo = $(`shown.bs.${Z}`), os = $(`hide.bs.${Z}`), $o = $(`hidden.bs.${Z}`), cc = (t) => { +}, ue = (t) => W(t, Ds), dc = (t) => new re(t), Ae = $(`show.bs.${G}`), Co = $(`shown.bs.${G}`), is = $(`hide.bs.${G}`), xo = $(`hidden.bs.${G}`), hc = (t) => { const { element: s } = t, { clientHeight: e, scrollHeight: n } = ft(s); - co(s, e !== n); -}, To = (t, s) => { + ho(s, e !== n); +}, Ho = (t, s) => { const e = s ? _ : B, n = E(t.element); - e(n, Oe, dc), e(n, N, lc); -}, pn = (t) => { + e(n, Oe, uc), e(n, N, pc); +}, mn = (t) => { const { element: s, options: e } = t; - e.scroll || (cc(t), I(St(s), { overflow: "hidden" })), g(s, Ve), g(s, m), I(s, { visibility: "visible" }), x(s, () => hc(t)); -}, ac = (t) => { + // istanbul ignore else @preserve + e.scroll || (hc(t), I(xt(s), { overflow: "hidden" })), f(s, Xe), f(s, m), I(s, { visibility: "visible" }), A(s, () => mc(t)); +}, fc = (t) => { const { element: s, options: e } = t, n = _t(s); - s.blur(), !n && e.backdrop && h(A, m) && ze(), x(s, () => fc(t)); -}, rc = (t) => { - const s = M(t.target, Ls), e = s && X(s), n = e && ue(e); - n && (n.relatedTarget = s, n.toggle(), s && s.tagName === "A" && t.preventDefault()); -}, lc = (t) => { - const { target: s } = t, e = P(Ds, E(s)), n = P(nc, e), o = e && ue(e); + s.blur(), !n && e.backdrop && g(L, m) && Ve(), A(s, () => vc(t)); +}, gc = (t) => { + const s = M(t.target, ks), e = s && K(s), n = e && ue(e); + // istanbul ignore else @preserve + if (n) { + n.relatedTarget = s, n.toggle(); + // istanbul ignore else @preserve + s && s.tagName === "A" && t.preventDefault(); + } +}, pc = (t) => { + const { target: s } = t, e = S(Is, E(s)), n = S(rc, e), o = e && ue(e); + // istanbul ignore else @preserve if (o) { - const { options: i, triggers: c } = o, { backdrop: a } = i, l = M(s, Ls), r = E(e).getSelection(); - (!A.contains(s) || a !== "static") && (!(r && r.toString().length) && (!e.contains(s) && a && /* istanbul ignore next */ - (!l || c.includes(s)) || n && n.contains(s)) && (o.relatedTarget = n && n.contains(s) ? n : null, o.hide()), l && l.tagName === "A" && t.preventDefault()); - } -}, dc = ({ code: t, target: s }) => { - const e = P(Ds, E(s)), n = e && ue(e); - n && n.options.keyboard && t === ys && (n.relatedTarget = null, n.hide()); -}, hc = (t) => { + const { options: i, triggers: c } = o, { backdrop: a } = i, l = M(s, ks), r = E(e).getSelection(); + // istanbul ignore else: a filter is required here @preserve + if (!L.contains(s) || a !== "static") { + // istanbul ignore else @preserve + !(r && r.toString().length) && (!e.contains(s) && a && // istanbul ignore next @preserve + (!l || c.includes(s)) || n && n.contains(s)) && (o.relatedTarget = n && n.contains(s) ? n : null, o.hide()); + // istanbul ignore next @preserve + l && l.tagName === "A" && t.preventDefault(); + } + } +}, uc = ({ code: t, target: s }) => { + const e = S(Is, E(s)), n = e && ue(e); + // istanbul ignore else @preserve + if (n) { + // istanbul ignore else @preserve + n.options.keyboard && t === xs && (n.relatedTarget = null, n.hide()); + } +}, mc = (t) => { const { element: s } = t; - b(s, Ve), kt(s, ke), O(s, Ne, "true"), O(s, "role", "dialog"), w(s, Eo), To(t, !0), ht(s); -}, fc = (t) => { + b(s, Xe), kt(s, ve), O(s, Ne, "true"), O(s, "role", "dialog"), w(s, Co), Ho(t, !0), ht(s), Fe(s); +}, vc = (t) => { const { element: s, triggers: e } = t; - O(s, ke, "true"), kt(s, Ne), kt(s, "role"), I(s, { visibility: "" }); - const n = Pe.relatedTarget || e.find(uo); - n && ht(n), po(s), w(s, $o), b(s, Ve), _t(s) || To(t); + O(s, ve, "true"), kt(s, Ne), kt(s, "role"), I(s, { visibility: "" }); + const n = Ae.relatedTarget || e.find(wo); + // istanbul ignore else @preserve + n && ht(n), bo(s), w(s, xo), b(s, Xe), Fe(s), _t(s) || Ho(t); }; -class le extends nt { +class re extends ot { /** * @param target usually an `.offcanvas` element * @param config instance options @@ -1076,72 +1288,81 @@ class le extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B; - this.triggers.forEach((o) => n(o, N, rc)); + this.triggers.forEach((o) => n(o, N, gc)); }); const { element: o } = this; - this.triggers = [...tt(Ls, E(o))].filter( - (i) => X(i) === o + this.triggers = [...J(ks, E(o))].filter( + (i) => K(i) === o ), this.relatedTarget = null, this._toggleEventListeners(!0); } /** * Returns component name string. */ get name() { - return xs; + return Ds; } /** * Returns component default options. */ get defaults() { - return oc; + return lc; } // OFFCANVAS PUBLIC METHODS // ======================== /** Shows or hides the offcanvas from the user. */ toggle() { - h(this.element, m) ? this.hide() : this.show(); + g(this.element, m) ? this.hide() : this.show(); } /** Shows the offcanvas to the user. */ show() { const { element: e, options: n, relatedTarget: o } = this; let i = 0; - if (!h(e, m) && (Pe.relatedTarget = o || void 0, Eo.relatedTarget = o || void 0, w(e, Pe), !Pe.defaultPrevented)) { + if (!g(e, m) && (Ae.relatedTarget = o || void 0, Co.relatedTarget = o || void 0, w(e, Ae), !Ae.defaultPrevented)) { const c = _t(e); if (c && c !== e) { - const a = ue(c) || /* istanbul ignore next */ - F(c, Hs); + const a = ue(c) || // istanbul ignore next @preserve + W(c, Ps); + // istanbul ignore else @preserve a && a.hide(); } - n.backdrop ? (Ps(A) ? As() : fo(e, !0), i = Kt(A), go(), setTimeout(() => pn(this), i)) : (pn(this), c && h(A, m) && ze()); + if (n.backdrop) + As(L) ? Ls() : mo(e, !0), i = Ee(L), vo(), setTimeout(() => mn(this), i); + else { + mn(this); + // istanbul ignore next @preserve - this test was done on Modal + c && g(L, m) && Ve(); + } } } /** Hides the offcanvas from the user. */ hide() { const { element: e, relatedTarget: n } = this; - h(e, m) && (os.relatedTarget = n || void 0, $o.relatedTarget = n || void 0, w(e, os), os.defaultPrevented || (g(e, Ve), b(e, m), ac(this))); + g(e, m) && (is.relatedTarget = n || void 0, xo.relatedTarget = n || void 0, w(e, is), is.defaultPrevented || (f(e, Xe), b(e, m), fc(this))); } /** Removes the `Offcanvas` from the target element. */ dispose() { - const e = { ...this }, { element: n, options: o } = e, i = o.backdrop ? Kt(A) : ( - /* istanbul ignore next */ - 0 - ), c = () => setTimeout(() => super.dispose(), i + 17); - this._toggleEventListeners(), this.hide(), h(n, m) ? x(n, c) : c(); + const { element: e } = this, n = g(e, m), o = () => setTimeout(() => super.dispose(), 1); + if (this.hide(), this._toggleEventListeners(), n) { + A(e, o); + // istanbul ignore next @preserve + } else + o(); } } -d(le, "selector", sc), d(le, "init", ic), d(le, "getInstance", ue); -const It = "popover", Ke = "Popover", lt = "tooltip", yo = (t) => { +d(re, "selector", ac), d(re, "init", dc), d(re, "getInstance", ue); +const Lt = "popover", Ke = "Popover", lt = "tooltip", So = (t) => { const s = t === lt, e = s ? `${t}-inner` : `${t}-body`, n = s ? "" : `

`, o = `
`, i = `
`; return `
${n + o + i}
`; -}, Co = { +}, Po = { top: "top", bottom: "bottom", left: "start", right: "end" -}, vs = (t) => { +}, ws = (t) => { const s = /\b(top|bottom|start|end)+/, { element: e, tooltip: n, container: o, options: i, arrow: c } = t; + // istanbul ignore else @preserve if (n) { - const a = { ...Co }, l = Ct(e); + const a = { ...Po }, l = Ct(e); I(n, { // top: '0px', left: '0px', right: '', bottom: '', top: "", @@ -1149,18 +1370,18 @@ const It = "popover", Ke = "Popover", lt = "tooltip", yo = (t) => { right: "", bottom: "" }); - const r = t.name === Ke, { offsetWidth: f, offsetHeight: p } = n, { clientWidth: v, clientHeight: D, offsetWidth: q } = ft(e); - let { placement: T } = i; - const { clientWidth: j, offsetWidth: Y } = o, at = V(o, "position") === "fixed", S = Math.abs(at ? j - Y : v - q), J = l && at ? ( - /* istanbul ignore next */ - S - ) : 0, ot = v - (l ? 0 : S) - 1, { - width: W, + const r = t.name === Ke, { offsetWidth: h, offsetHeight: p } = n, { clientWidth: v, clientHeight: P, offsetWidth: q } = ft(e); + let { placement: y } = i; + const { clientWidth: j, offsetWidth: Y } = o, at = V(o, "position") === "fixed", x = Math.abs(at ? j - Y : v - q), tt = l && at ? ( + // istanbul ignore next @preserve + x + ) : 0, it = v - (l ? 0 : x) - 1, { + width: F, height: z, left: H, right: Rt, top: pt - } = we(e, !0), { x: k, y: ut } = { + } = $e(e, !0), { x: k, y: ut } = { x: H, y: pt }; @@ -1170,24 +1391,30 @@ const It = "popover", Ke = "Popover", lt = "tooltip", yo = (t) => { right: "", bottom: "" }); - let Ht = 0, Qt = "", mt = 0, Xe = "", Wt = "", Te = "", Ye = ""; - const xt = c.offsetWidth || 0, vt = c.offsetHeight || 0, Ue = xt / 2; - let Zt = pt - p - vt < 0, Gt = pt + p + z + vt >= D, Jt = H - f - xt < J, te = H + f + W + xt >= ot; - const ye = ["left", "right"], qe = ["top", "bottom"]; - Zt = ye.includes(T) ? pt + z / 2 - p / 2 - vt < 0 : Zt, Gt = ye.includes(T) ? pt + p / 2 + z / 2 + vt >= D : Gt, Jt = qe.includes(T) ? H + W / 2 - f / 2 < J : Jt, te = qe.includes(T) ? H + f / 2 + W / 2 >= ot : te, T = ye.includes(T) && Jt && te ? "top" : T, T = T === "top" && Zt ? "bottom" : T, T = T === "bottom" && Gt ? "top" : T, T = T === "left" && Jt ? "right" : T, T = T === "right" && te ? ( - /* istanbul ignore next */ - "left" - ) : T, n.className.includes(T) || (n.className = n.className.replace(s, a[T])), ye.includes(T) ? (T === "left" ? mt = k - f - (r ? xt : 0) : mt = k + W + (r ? xt : 0), Zt && Gt ? (Ht = 0, Qt = 0, Wt = pt + z / 2 - vt / 2) : Zt ? (Ht = ut, Qt = "", Wt = z / 2 - xt) : Gt ? (Ht = ut - p + z, Qt = "", Wt = p - z / 2 - xt) : (Ht = ut - p / 2 + z / 2, Wt = p / 2 - vt / 2)) : qe.includes(T) && (T === "top" ? Ht = ut - p - (r ? vt : 0) : Ht = ut + z + (r ? vt : 0), Jt ? (mt = 0, Te = k + W / 2 - Ue) : te ? (mt = "auto", Xe = 0, Ye = W / 2 + ot - Rt - Ue) : (mt = k - f / 2 + W / 2, Te = f / 2 - Ue)), I(n, { + let Ht = 0, qt = "", mt = 0, Ye = "", Ft = "", Ce = "", Ue = ""; + const St = c.offsetWidth || 0, vt = c.offsetHeight || 0, qe = St / 2; + let Zt = pt - p - vt < 0, Jt = pt + p + z + vt >= P, Gt = H - h - St < tt, Qt = H + h + F + St >= it; + const xe = ["left", "right"], Ze = ["top", "bottom"]; + Zt = xe.includes(y) ? pt + z / 2 - p / 2 - vt < 0 : Zt, Jt = xe.includes(y) ? pt + p / 2 + z / 2 + vt >= P : Jt, Gt = Ze.includes(y) ? H + F / 2 - h / 2 < tt : Gt, Qt = Ze.includes(y) ? H + h / 2 + F / 2 >= it : Qt, y = xe.includes(y) && Gt && Qt ? "top" : y, y = y === "top" && Zt ? "bottom" : y, y = y === "bottom" && Jt ? "top" : y, y = y === "left" && Gt ? "right" : y, y = y === "right" && Qt ? "left" : ( + // istanbul ignore next @preserve + y + ), n.className.includes(y) || (n.className = n.className.replace(s, a[y])); + // istanbul ignore else @preserve + xe.includes(y) ? (y === "left" ? mt = k - h - (r ? St : 0) : mt = k + F + (r ? St : 0), Zt && Jt ? (Ht = 0, qt = 0, Ft = pt + z / 2 - vt / 2) : Zt ? (Ht = ut, qt = "", Ft = z / 2 - St) : Jt ? (Ht = ut - p + z, qt = "", Ft = p - z / 2 - St) : (Ht = ut - p / 2 + z / 2, Ft = p / 2 - vt / 2)) : Ze.includes(y) && (y === "top" ? Ht = ut - p - (r ? vt : 0) : Ht = ut + z + (r ? vt : 0), Gt ? (mt = 0, Ce = k + F / 2 - qe) : Qt ? (mt = "auto", Ye = 0, Ue = F / 2 + it - Rt - qe) : (mt = k - h / 2 + F / 2, Ce = h / 2 - qe)), I(n, { top: `${Ht}px`, - bottom: Qt === "" ? "" : `${Qt}px`, + bottom: qt === "" ? "" : `${qt}px`, left: mt === "auto" ? mt : `${mt}px`, - right: Xe !== "" ? `${Xe}px` : "" - }), y(c) && (Wt !== "" && (c.style.top = `${Wt}px`), Te !== "" ? c.style.left = `${Te}px` : Ye !== "" && (c.style.right = `${Ye}px`)); - const _o = $(`updated.bs.${Xt(t.name)}`); - w(e, _o); + right: Ye !== "" ? `${Ye}px` : "" + }); + // istanbul ignore else @preserve + T(c) && (Ft !== "" && (c.style.top = `${Ft}px`), Ce !== "" ? c.style.left = `${Ce}px` : Ue !== "" && (c.style.right = `${Ue}px`)); + const Wo = $( + `updated.bs.${Xt(t.name)}` + ); + w(e, Wo); } -}, bs = { - template: yo(lt), +}, Es = { + template: So(lt), title: "", customClass: "", trigger: "hover focus", @@ -1199,101 +1426,138 @@ const It = "popover", Ke = "Popover", lt = "tooltip", yo = (t) => { content: "", dismissible: !1, btnClose: "" -}, So = "data-original-title", Pt = "Tooltip", wt = (t, s, e) => { - if (be(s) && s.length) { +}, Do = "data-original-title", Pt = "Tooltip", wt = (t, s, e) => { + // istanbul ignore else @preserve + if (we(s) && s.length) { let n = s.trim(); - ci(e) && (n = e(n)); + hi(e) && (n = e(n)); const i = new DOMParser().parseFromString(n, "text/html"); t.append(...i.body.childNodes); - } else y(s) ? t.append(s) : (ai(s) || ii(s) && s.every(L)) && t.append(...s); -}, gc = (t) => { - const s = t.name === Pt, { id: e, element: n, options: o } = t, { title: i, placement: c, template: a, animation: l, customClass: r, sanitizeFn: f, dismissible: p, content: v, btnClose: D } = o, q = s ? lt : It, T = { ...Co }; + } else T(s) ? t.append(s) : (fi(s) || di(s) && s.every(D)) && t.append(...s); +}, bc = (t) => { + const s = t.name === Pt, { id: e, element: n, options: o } = t, { title: i, placement: c, template: a, animation: l, customClass: r, sanitizeFn: h, dismissible: p, content: v, btnClose: P } = o, q = s ? lt : Lt, y = { ...Po }; let j = [], Y = []; - Ct(n) && (T.left = "end", T.right = "start"); - const Bt = `bs-${q}-${T[c]}`; + Ct(n) && (y.left = "end", y.right = "start"); + const Bt = `bs-${q}-${y[c]}`; let at; - if (y(a)) + if (T(a)) at = a; else { - const J = $t("div"); - wt(J, a, f), at = J.firstChild; + const tt = $t("div"); + wt(tt, a, h), at = tt.firstChild; } - t.tooltip = y(at) ? at.cloneNode(!0) : ( - /* istanbul ignore next */ + t.tooltip = T(at) ? at.cloneNode(!0) : ( + // istanbul ignore next @preserve void 0 ); - const { tooltip: S } = t; - if (S) { - O(S, "id", e), O(S, "role", lt); - const J = s ? `${lt}-inner` : `${It}-body`, ot = s ? null : P(`.${It}-header`, S), W = P(`.${J}`, S); - t.arrow = P(`.${q}-arrow`, S); + const { tooltip: x } = t; + // istanbul ignore else @preserve + if (x) { + O(x, "id", e), O(x, "role", lt); + const tt = s ? `${lt}-inner` : `${Lt}-body`, it = s ? null : S(`.${Lt}-header`, x), F = S(`.${tt}`, x); + t.arrow = S(`.${q}-arrow`, x); const { arrow: z } = t; - if (y(i)) j = [i.cloneNode(!0)]; + if (T(i)) j = [i.cloneNode(!0)]; else { const H = $t("div"); - wt(H, i, f), j = [...H.childNodes]; + wt(H, i, h), j = [...H.childNodes]; } - if (y(v)) Y = [v.cloneNode(!0)]; + if (T(v)) Y = [v.cloneNode(!0)]; else { const H = $t("div"); - wt(H, v, f), Y = [...H.childNodes]; + wt(H, v, h), Y = [...H.childNodes]; } if (p) if (i) - if (y(D)) j = [...j, D.cloneNode(!0)]; + if (T(P)) + j = [...j, P.cloneNode(!0)]; else { const H = $t("div"); - wt(H, D, f), j = [...j, H.firstChild]; + wt(H, P, h), j = [...j, H.firstChild]; } - else if (ot && ot.remove(), y(D)) Y = [...Y, D.cloneNode(!0)]; else { - const H = $t("div"); - wt(H, D, f), Y = [...Y, H.firstChild]; + // istanbul ignore else @preserve + if (it && it.remove(), T(P)) + Y = [...Y, P.cloneNode(!0)]; + else { + const H = $t("div"); + wt(H, P, h), Y = [...Y, H.firstChild]; + } } - s ? i && W && wt(W, i, f) : (i && ot && wt(ot, j, f), v && W && wt(W, Y, f), t.btn = P(".btn-close", S) || void 0), g(S, "position-fixed"), g(z, "position-absolute"), h(S, q) || g(S, q), l && !h(S, R) && g(S, R), r && !h(S, r) && g(S, r), h(S, Bt) || g(S, Bt); - } -}, pc = (t) => { + // istanbul ignore else @preserve + if (s) + i && F && wt(F, i, h); + else { + // istanbul ignore else @preserve + i && it && wt(it, j, h); + // istanbul ignore else @preserve + v && F && wt(F, Y, h), t.btn = S(".btn-close", x) || void 0; + } + f(x, "position-fixed"), f(z, "position-absolute"); + // istanbul ignore else @preserve + g(x, q) || f(x, q); + // istanbul ignore else @preserve + l && !g(x, R) && f(x, R); + // istanbul ignore else @preserve + r && !g(x, r) && f(x, r); + // istanbul ignore else @preserve + g(x, Bt) || f(x, Bt); + } +}, wc = (t) => { const s = ["HTML", "BODY"], e = []; let { parentNode: n } = t; - for (; n && !s.includes(n.nodeName); ) - n = oi(n), Rn(n) || ri(n) || e.push(n); - return e.find((o, i) => V(o, "position") !== "relative" && e.slice(i + 1).every((c) => V(c, "position") === "static") ? o : null) || /* istanbul ignore next: optional guard */ + for (; n && !s.includes(n.nodeName); ) { + n = li(n); + // istanbul ignore else @preserve + zn(n) || gi(n) || e.push(n); + } + return e.find((o, i) => V(o, "position") !== "relative" && e.slice(i + 1).every((c) => V(c, "position") === "static") ? o : null) || // istanbul ignore next: optional guard E(t).body; -}, uc = `[${ct}="${lt}"],[data-tip="${lt}"]`, Ho = "title"; -let un = (t) => F(t, Pt); -const mc = (t) => new Dt(t), vc = (t) => { +}, Ec = `[${ct}="${lt}"],[data-tip="${lt}"]`, Ao = "title"; +let vn = (t) => W(t, Pt); +const $c = (t) => new Dt(t), Tc = (t) => { const { element: s, tooltip: e, container: n, offsetParent: o } = t; - kt(s, Nn), ro(e, n === o ? n : o); -}, ee = (t) => { + kt(s, Mn), go(e, n === o ? n : o); +}, te = (t) => { const { tooltip: s, container: e, offsetParent: n } = t; - return s && Ps(s, e === n ? e : n); -}, bc = (t, s) => { + return s && As(s, e === n ? e : n); +}, yc = (t, s) => { const { element: e } = t; - t._toggleEventListeners(), Ie(e, So) && t.name === Pt && Po(t), s && s(); -}, xo = (t, s) => { + t._toggleEventListeners(); + // istanbul ignore else @preserve + ge(e, Do) && t.name === Pt && Lo(t); + // istanbul ignore else @preserve + s && s(); +}, Io = (t, s) => { const e = s ? _ : B, { element: n } = t; - e(E(n), Ts, t.handleTouch, st), [Be, _e].forEach((o) => { - e(qt(n), o, t.update, st); + e(E(n), Cs, t.handleTouch, nt), [Be, _e].forEach((o) => { + e(Ut(n), o, t.update, nt); }); -}, mn = (t) => { - const { element: s } = t, e = $(`shown.bs.${Xt(t.name)}`); - xo(t, !0), w(s, e), u.clear(s, "in"); -}, vn = (t) => { - const { element: s } = t, e = $(`hidden.bs.${Xt(t.name)}`); - xo(t), vc(t), w(s, e), u.clear(s, "out"); -}, bn = (t, s) => { - const e = s ? _ : B, { element: n, container: o, offsetParent: i } = t, { offsetHeight: c, scrollHeight: a } = o, l = M(n, `.${U}`), r = M(n, `.${Z}`), f = qt(n), v = o === i && c !== a ? o : f; - e(v, _e, t.update, st), e(v, Be, t.update, st), l && e(l, `hide.bs.${U}`, t.handleHide), r && e(r, `hide.bs.${Z}`, t.handleHide); -}, Po = (t, s) => { - const e = [So, Ho], { element: n } = t; +}, bn = (t) => { + const { element: s } = t, e = $( + `shown.bs.${Xt(t.name)}` + ); + Io(t, !0), w(s, e), u.clear(s, "in"); +}, wn = (t) => { + const { element: s } = t, e = $( + `hidden.bs.${Xt(t.name)}` + ); + Io(t), Tc(t), w(s, e), u.clear(s, "out"); +}, En = (t, s) => { + const e = s ? _ : B, { element: n, container: o, offsetParent: i } = t, { offsetHeight: c, scrollHeight: a } = o, l = M(n, `.${U}`), r = M(n, `.${G}`); + // istanbul ignore else @preserve + const h = Ut(n), v = o === i && c !== a ? o : h; + e(v, _e, t.update, nt), e(v, Be, t.update, nt), l && e(l, `hide.bs.${U}`, t.handleHide), r && e(r, `hide.bs.${G}`, t.handleHide); +}, Lo = (t, s) => { + const e = [Do, Ao], { element: n } = t; O( n, e[s ? 0 : 1], - s || it(n, e[0]) || /* istanbul ignore next */ + s || st(n, e[0]) || // istanbul ignore next @preserve "" ), kt(n, e[s ? 1 : 0]); }; -class Dt extends nt { +class Dt extends ot { /** * @param target the target element * @param config the instance options @@ -1303,6 +1567,7 @@ class Dt extends nt { // TOOLTIP PUBLIC METHODS // ====================== /** Handles the focus event on iOS. */ + // istanbul ignore next @preserve - impossible to test without Apple device d(this, "handleFocus", () => ht(this.element)); /** Shows the tooltip. */ d(this, "handleShow", () => this.show()); @@ -1310,12 +1575,12 @@ class Dt extends nt { d(this, "handleHide", () => this.hide()); /** Updates the tooltip position. */ d(this, "update", () => { - vs(this); + ws(this); }); /** Toggles the tooltip visibility. */ d(this, "toggle", () => { const { tooltip: e } = this; - e && !ee(this) ? this.show() : this.hide(); + e && !te(this) ? this.show() : this.hide(); }); /** * Handles the `touchstart` event listener for `Tooltip` @@ -1325,6 +1590,7 @@ class Dt extends nt { */ d(this, "handleTouch", ({ target: e }) => { const { tooltip: n, element: o } = this; + // istanbul ignore if @preserve n && n.contains(e) || e === o || e && o.contains(e) || this.hide(); }); /** @@ -1334,16 +1600,37 @@ class Dt extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B, { element: o, options: i, btn: c } = this, { trigger: a } = i, r = !!(this.name !== Pt && i.dismissible); + // istanbul ignore else @preserve a.includes("manual") || (this.enabled = !!e, a.split(" ").forEach((p) => { - p === jo ? (n(o, Mn, this.handleShow), n(o, Me, this.handleShow), r || (n(o, $s, this.handleHide), n(E(o), Ts, this.handleTouch, st))) : p === N ? n(o, p, r ? this.handleShow : this.toggle) : p === ws && (n(o, Es, this.handleShow), r || n(o, On, this.handleHide), Zo && n(o, N, this.handleFocus)), r && c && n(c, N, this.handleHide); + // istanbul ignore else @preserve + if (p === Ko) { + n(o, Bn, this.handleShow), n(o, Me, this.handleShow); + // istanbul ignore else @preserve + r || (n(o, ys, this.handleHide), n(E(o), Cs, this.handleTouch, nt)); + } else if (p === N) + n(o, p, r ? this.handleShow : this.toggle); + else if (p === $s) { + n(o, Ts, this.handleShow); + // istanbul ignore else @preserve + r || n(o, _n, this.handleHide); + // istanbul ignore else @preserve + si && n(o, N, this.handleFocus); + } + // istanbul ignore else @preserve + r && c && n(c, N, this.handleHide); })); }); - const { element: o } = this, i = this.name === Pt, c = i ? lt : It, a = i ? Pt : Ke; - un = (r) => F(r, a), this.enabled = !0, this.id = `${c}-${Wn(o, c)}`; + const { element: o } = this, i = this.name === Pt, c = i ? lt : Lt, a = i ? Pt : Ke; + // istanbul ignore next @preserve: this is to set Popover too + vn = (r) => W(r, a), this.enabled = !0, this.id = `${c}-${Vn(o, c)}`; const { options: l } = this; - !l.title && i || !i && !l.content || (dt(bs, { titleAttr: "" }), Ie(o, Ho) && i && typeof l.title == "string" && Po(this, l.title), this.container = pc(o), this.offsetParent = ["sticky", "fixed"].some( - (r) => V(this.container, "position") === r - ) ? this.container : E(this.element).body, gc(this), this._toggleEventListeners(!0)); + if (!(!l.title && i || !i && !l.content)) { + dt(Es, { titleAttr: "" }); + // istanbul ignore else @preserve + ge(o, Ao) && i && typeof l.title == "string" && Lo(this, l.title), this.container = wc(o), this.offsetParent = ["sticky", "fixed"].some( + (r) => V(this.container, "position") === r + ) ? this.container : E(this.element).body, bc(this), this._toggleEventListeners(!0); + } } /** * Returns component name string. @@ -1355,15 +1642,25 @@ class Dt extends nt { * Returns component default options. */ get defaults() { - return bs; + return Es; } show() { - const { options: e, tooltip: n, element: o, container: i, offsetParent: c, id: a } = this, { animation: l } = e, r = u.get(o, "out"), f = i === c ? i : c; - u.clear(o, "out"), n && !r && !ee(this) && u.set( + const { options: e, tooltip: n, element: o, container: i, offsetParent: c, id: a } = this, { animation: l } = e, r = u.get(o, "out"), h = i === c ? i : c; + u.clear(o, "out"), n && !r && !te(this) && u.set( o, () => { - const p = $(`show.bs.${Xt(this.name)}`); - w(o, p), p.defaultPrevented || (ao(n, f), O(o, Nn, `#${a}`), this.update(), bn(this, !0), h(n, m) || g(n, m), l ? x(n, () => mn(this)) : mn(this)); + const p = $( + `show.bs.${Xt(this.name)}` + ); + w(o, p); + // istanbul ignore else @preserve + if (!p.defaultPrevented) { + fo(n, h), O(o, Mn, `#${a}`), this.update(), En(this, !0); + // istanbul ignore else @preserve + g(n, m) || f(n, m); + // istanbul ignore else @preserve + l ? A(n, () => bn(this)) : bn(this); + } }, 17, "in" @@ -1371,11 +1668,21 @@ class Dt extends nt { } hide() { const { options: e, tooltip: n, element: o } = this, { animation: i, delay: c } = e; - u.clear(o, "in"), n && ee(this) && u.set( + u.clear(o, "in"); + // istanbul ignore else @preserve + n && te(this) && u.set( o, () => { - const a = $(`hide.bs.${Xt(this.name)}`); - w(o, a), a.defaultPrevented || (this.update(), b(n, m), bn(this), i ? x(n, () => vn(this)) : vn(this)); + const a = $( + `hide.bs.${Xt(this.name)}` + ); + w(o, a); + // istanbul ignore else @preserve + if (!a.defaultPrevented) { + this.update(), b(n, m), En(this); + // istanbul ignore else @preserve + i ? A(n, () => wn(this)) : wn(this); + } }, c + 17, "out" @@ -1384,12 +1691,14 @@ class Dt extends nt { /** Enables the tooltip. */ enable() { const { enabled: e } = this; + // istanbul ignore else @preserve e || (this._toggleEventListeners(!0), this.enabled = !e); } /** Disables the tooltip. */ disable() { - const { tooltip: e, options: n, enabled: o } = this, { animation: i } = n; - o && (e && ee(this) && i ? (this.hide(), x(e, () => this._toggleEventListeners())) : this._toggleEventListeners(), this.enabled = !o); + const { tooltip: e, enabled: n } = this; + // istanbul ignore else @preserve + n && (e && te(this) && this.hide(), this._toggleEventListeners(), this.enabled = !n); } /** Toggles the `disabled` property. */ toggleEnabled() { @@ -1397,17 +1706,17 @@ class Dt extends nt { } /** Removes the `Tooltip` from the target element. */ dispose() { - const { tooltip: e, options: n } = this, o = { ...this, name: this.name }, i = () => setTimeout(() => bc(o, () => super.dispose()), 17); - n.animation && ee(o) ? (this.options.delay = 0, this.hide(), x(e, i)) : i(); + const { tooltip: e, options: n } = this, o = { ...this, name: this.name }, i = () => setTimeout(() => yc(o, () => super.dispose()), 17); + n.animation && te(o) ? (this.options.delay = 0, this.hide(), A(e, i)) : i(); } } -d(Dt, "selector", uc), d(Dt, "init", mc), d(Dt, "getInstance", un), d(Dt, "styleTip", vs); -const wc = `[${ct}="${It}"],[data-tip="${It}"]`, Ec = dt({}, bs, { - template: yo(It), +d(Dt, "selector", Ec), d(Dt, "init", $c), d(Dt, "getInstance", vn), d(Dt, "styleTip", ws); +const Cc = `[${ct}="${Lt}"],[data-tip="${Lt}"]`, xc = dt({}, Es, { + template: So(Lt), content: "", dismissible: !1, btnClose: '' -}), $c = (t) => F(t, Ke), Tc = (t) => new zt(t); +}), Hc = (t) => W(t, Ke), Sc = (t) => new zt(t); class zt extends Dt { /** * @param target the target element @@ -1419,6 +1728,7 @@ class zt extends Dt { d(this, "show", () => { super.show(); const { options: e, btn: n } = this; + // istanbul ignore else @preserve e.dismissible && n && setTimeout(() => ht(n), 17); }); } @@ -1432,41 +1742,45 @@ class zt extends Dt { * Returns component default options. */ get defaults() { - return Ec; + return xc; } } -d(zt, "selector", wc), d(zt, "init", Tc), d(zt, "getInstance", $c), d(zt, "styleTip", vs); -const yc = "scrollspy", Do = "ScrollSpy", Cc = '[data-bs-spy="scroll"]', Sc = { +d(zt, "selector", Cc), d(zt, "init", Sc), d(zt, "getInstance", Hc), d(zt, "styleTip", ws); +const Pc = "scrollspy", ko = "ScrollSpy", Dc = '[data-bs-spy="scroll"]', Ac = { offset: 10, target: null -}, Hc = (t) => F(t, Do), xc = (t) => new de(t), wn = $(`activate.bs.${yc}`), Pc = (t) => { - const { target: s, scrollTarget: e, options: n, itemsLength: o, scrollHeight: i, element: c } = t, { offset: a } = n, l = Cs(e), r = s && Ss("A", s), f = e ? Ao(e) : ( - /* istanbul ignore next */ +}, Ic = (t) => W(t, ko), Lc = (t) => new le(t), $n = $(`activate.bs.${Pc}`), kc = (t) => { + const { target: s, scrollTarget: e, options: n, itemsLength: o, scrollHeight: i, element: c } = t, { offset: a } = n, l = Hs(e), r = s && Ss("A", s), h = e ? No(e) : ( + // istanbul ignore next @preserve i ); - if (t.scrollTop = l ? e.scrollY : e.scrollTop, r && (f !== i || o !== r.length)) { - let p, v, D; - t.items = [], t.offsets = [], t.scrollHeight = f, t.maxScroll = t.scrollHeight - Dc(t), [...r].forEach((q) => { - p = it(q, "href"), v = p && p.charAt(0) === "#" && p.slice(-1) !== "#" && P(p, E(c)), v && (t.items.push(q), D = we(v), t.offsets.push((l ? D.top + t.scrollTop : v.offsetTop) - a)); + t.scrollTop = l ? e.scrollY : e.scrollTop; + // istanbul ignore else @preserve + if (r && (h !== i || o !== r.length)) { + let p, v, P; + t.items = [], t.offsets = [], t.scrollHeight = h, t.maxScroll = t.scrollHeight - Nc(t), [...r].forEach((q) => { + p = st(q, "href"), v = p && p.charAt(0) === "#" && p.slice(-1) !== "#" && S(p, E(c)), v && (t.items.push(q), P = $e(v), t.offsets.push((l ? P.top + t.scrollTop : v.offsetTop) - a)); }), t.itemsLength = t.items.length; } -}, Ao = (t) => y(t) ? t.scrollHeight : ft(t).scrollHeight, Dc = ({ element: t, scrollTarget: s }) => Cs(s) ? s.innerHeight : we(t).height, Lo = (t) => { +}, No = (t) => T(t) ? t.scrollHeight : ft(t).scrollHeight, Nc = ({ element: t, scrollTarget: s }) => Hs(s) ? s.innerHeight : $e(t).height, Oo = (t) => { [...Ss("A", t)].forEach((s) => { - h(s, C) && b(s, C); + g(s, C) && b(s, C); }); -}, En = (t, s) => { +}, Tn = (t, s) => { const { target: e, element: n } = t; - y(e) && Lo(e), t.activeItem = s, g(s, C); + // istanbul ignore else @preserve + T(e) && Oo(e), t.activeItem = s, f(s, C); const o = []; let i = s; - for (; i !== St(n); ) - i = i.parentElement, (h(i, "nav") || h(i, "dropdown-menu")) && o.push(i); + for (; i !== xt(n); ) + i = i.parentElement, (g(i, "nav") || g(i, "dropdown-menu")) && o.push(i); o.forEach((c) => { const a = c.previousElementSibling; - a && !h(a, C) && g(a, C); - }), wn.relatedTarget = s, w(n, wn); + // istanbul ignore else @preserve + a && !g(a, C) && f(a, C); + }), $n.relatedTarget = s, w(n, $n); }; -class de extends nt { +class le extends ot { /** * @param target the target element * @param config the instance options @@ -1479,21 +1793,26 @@ class de extends nt { /** Updates all items. */ d(this, "refresh", () => { const { target: e } = this; - if (y(e) && e.offsetHeight > 0) { - Pc(this); + // istanbul ignore else @preserve + if (T(e) && e.offsetHeight > 0) { + kc(this); const { scrollTop: n, maxScroll: o, itemsLength: i, items: c, activeItem: a } = this; if (n >= o) { const r = c[i - 1]; - a !== r && En(this, r); + // istanbul ignore else @preserve + a !== r && Tn(this, r); return; } const { offsets: l } = this; + // istanbul ignore else @preserve if (a && n < l[0] && l[0] > 0) { - this.activeItem = null, e && Lo(e); + this.activeItem = null; + // istanbul ignore else @preserve + e && Oo(e); return; } - c.forEach((r, f) => { - a !== r && n >= l[f] && (typeof l[f + 1] > "u" || n < l[f + 1]) && En(this, r); + c.forEach((r, h) => { + a !== r && n >= l[h] && (typeof l[h + 1] > "u" || n < l[h + 1]) && Tn(this, r); }); } }); @@ -1503,86 +1822,118 @@ class de extends nt { * @param add when `true`, listener is added */ d(this, "_toggleEventListeners", (e) => { - (e ? _ : B)(this.scrollTarget, Be, this.refresh, st); + (e ? _ : B)(this.scrollTarget, Be, this.refresh, nt); }); const { element: o, options: i } = this; - this.target = P(i.target, E(o)), this.target && (this.scrollTarget = o.clientHeight < o.scrollHeight ? o : qt(o), this.scrollHeight = Ao(this.scrollTarget), this._toggleEventListeners(!0), this.refresh()); + this.target = S(i.target, E(o)), this.target && (this.scrollTarget = o.clientHeight < o.scrollHeight ? o : Ut(o), this.scrollHeight = No(this.scrollTarget), this._toggleEventListeners(!0), this.refresh()); } /* eslint-disable */ /** * Returns component name string. */ get name() { - return Do; + return ko; } /** * Returns component default options. */ get defaults() { - return Sc; + return Ac; } /** Removes `ScrollSpy` from the target element. */ dispose() { this._toggleEventListeners(), super.dispose(); } } -d(de, "selector", Cc), d(de, "init", xc), d(de, "getInstance", Hc); -const $e = "tab", Io = "Tab", $n = `[${ct}="${$e}"]`, ko = (t) => F(t, Io), Ac = (t) => new he(t), is = $(`show.bs.${$e}`), Tn = $(`shown.bs.${$e}`), cs = $(`hide.bs.${$e}`), yn = $(`hidden.bs.${$e}`), me = /* @__PURE__ */ new Map(), Cn = (t) => { +d(le, "selector", Dc), d(le, "init", Lc), d(le, "getInstance", Ic); +const ye = "tab", Mo = "Tab", yn = `[${ct}="${ye}"]`, _o = (t) => W(t, Mo), Oc = (t) => new de(t), cs = $(`show.bs.${ye}`), Cn = $(`shown.bs.${ye}`), as = $(`hide.bs.${ye}`), xn = $(`hidden.bs.${ye}`), me = /* @__PURE__ */ new Map(), Hn = (t) => { const { tabContent: s, nav: e } = t; - s && h(s, Nt) && (s.style.height = "", b(s, Nt)), e && u.clear(e); + // istanbul ignore else @preserve + s && g(s, Nt) && (s.style.height = "", b(s, Nt)); + // istanbul ignore else @preserve + e && u.clear(e); }, Sn = (t) => { - const { element: s, tabContent: e, content: n, nav: o } = t, { tab: i } = y(o) && me.get(o) || /* istanbul ignore next */ - { tab: null }; - if (e && n && h(n, R)) { - const { currentHeight: c, nextHeight: a } = me.get(s) || /* istanbul ignore next */ - { - currentHeight: 0, - nextHeight: 0 - }; - c === a ? Cn(t) : setTimeout(() => { - e.style.height = `${a}px`, Mt(e), x(e, () => Cn(t)); - }, 50); + const { element: s, tabContent: e, content: n, nav: o } = t, { tab: i } = T(o) && me.get(o) || { tab: null }; + // istanbul ignore next @preserve + // istanbul ignore else @preserve + if (e && n && g(n, R)) { + const { currentHeight: c, nextHeight: a } = me.get(s) || { currentHeight: 0, nextHeight: 0 }; + // istanbul ignore next @preserve + // istanbul ignore else @preserve: vitest won't validate this branch + c !== a ? setTimeout(() => { + e.style.height = `${a}px`, Mt(e), A(e, () => Hn(t)); + }, 50) : Hn(t); } else o && u.clear(o); - Tn.relatedTarget = i, w(s, Tn); -}, Hn = (t) => { - const { element: s, content: e, tabContent: n, nav: o } = t, { tab: i, content: c } = o && me.get(o) || /* istanbul ignore next */ - { tab: null, content: null }; + Cn.relatedTarget = i, w(s, Cn); +}, Pn = (t) => { + const { element: s, content: e, tabContent: n, nav: o } = t, { tab: i, content: c } = o && me.get(o) || { + // istanbul ignore next @preserve + tab: null, + content: null + }; let a = 0; - if (n && e && h(e, R) && ([c, e].forEach((l) => { - y(l) && g(l, "overflow-hidden"); - }), a = y(c) ? c.scrollHeight : ( - /* istanbul ignore next */ + // istanbul ignore else @preserve + n && e && g(e, R) && ([c, e].forEach((l) => { + // istanbul ignore else @preserve + T(l) && f(l, "overflow-hidden"); + }), a = T(c) ? c.scrollHeight : ( + // istanbul ignore next @preserve 0 - )), is.relatedTarget = i, yn.relatedTarget = s, w(s, is), !is.defaultPrevented) { - if (e && g(e, C), c && b(c, C), n && e && h(e, R)) { + )), cs.relatedTarget = i, xn.relatedTarget = s, w(s, cs); + // istanbul ignore else @preserve + if (!cs.defaultPrevented) { + // istanbul ignore else @preserve + e && f(e, C); + // istanbul ignore else @preserve + c && b(c, C); + // istanbul ignore else @preserve + if (n && e && g(e, R)) { const l = e.scrollHeight; - me.set(s, { currentHeight: a, nextHeight: l, tab: null, content: null }), g(n, Nt), n.style.height = `${a}px`, Mt(n), [c, e].forEach((r) => { + me.set(s, { + currentHeight: a, + nextHeight: l, + tab: null, + content: null + }), f(n, Nt), n.style.height = `${a}px`, Mt(n), [c, e].forEach((r) => { + // istanbul ignore else @preserve r && b(r, "overflow-hidden"); }); } - e && e && h(e, R) ? setTimeout(() => { - g(e, m), x(e, () => { - Sn(t); - }); - }, 1) : (e && g(e, m), Sn(t)), i && w(i, yn); + if (e && e && g(e, R)) + setTimeout(() => { + f(e, m), A(e, () => { + Sn(t); + }); + }, 1); + else { + // istanbul ignore else @preserve + e && f(e, m), Sn(t); + } + // istanbul ignore else @preserve + i && w(i, xn); } -}, xn = (t) => { +}, Dn = (t) => { const { nav: s } = t; - if (!y(s)) return { tab: null, content: null }; + // istanbul ignore next @preserve + if (!T(s)) + return { tab: null, content: null }; const e = rt(C, s); let n = null; - e.length === 1 && !Ot.some((i) => h(e[0].parentElement, i)) ? [n] = e : e.length > 1 && (n = e[e.length - 1]); - const o = y(n) ? X(n) : null; + // istanbul ignore else @preserve + e.length === 1 && !Ot.some((i) => g(e[0].parentElement, i)) ? [n] = e : e.length > 1 && (n = e[e.length - 1]); + const o = T(n) ? K(n) : null; return { tab: n, content: o }; -}, Pn = (t) => { - if (!y(t)) return null; +}, An = (t) => { + // istanbul ignore next @preserve + if (!T(t)) return null; const s = M(t, `.${Ot.join(",.")}`); - return s ? P(`.${Ot[0]}-toggle`, s) : null; -}, Lc = (t) => { - const s = ko(t.target); + return s ? S(`.${Ot[0]}-toggle`, s) : null; +}, Mc = (t) => { + const s = _o(t.target); + // istanbul ignore else @preserve s && (t.preventDefault(), s.show()); }; -class he extends nt { +class de extends ot { /** @param target the target element */ constructor(e) { super(e); @@ -1592,16 +1943,18 @@ class he extends nt { * @param add when `true`, event listener is added */ d(this, "_toggleEventListeners", (e) => { - (e ? _ : B)(this.element, N, Lc); + (e ? _ : B)(this.element, N, Mc); }); - const { element: n } = this, o = X(n); + const { element: n } = this, o = K(n); + // istanbul ignore else @preserve if (o) { const i = M(n, ".nav"), c = M(o, ".tab-content"); - this.nav = i, this.content = o, this.tabContent = c, this.dropdown = Pn(n); - const { tab: a } = xn(this); + this.nav = i, this.content = o, this.tabContent = c, this.dropdown = An(n); + const { tab: a } = Dn(this); if (i && !a) { - const l = P($n, i), r = l && X(l); - r && (g(l, C), g(r, m), g(r, C), O(n, Qe, "true")); + const l = S(yn, i), r = l && K(l); + // istanbul ignore else @preserve + r && (f(l, C), f(r, m), f(r, C), O(n, Je, "true")); } this._toggleEventListeners(!0); } @@ -1610,25 +1963,37 @@ class he extends nt { * Returns component name string. */ get name() { - return Io; + return Mo; } // TAB PUBLIC METHODS // ================== /** Shows the tab to the user. */ show() { const { element: e, content: n, nav: o, dropdown: i } = this; - if (!(o && u.get(o)) && !h(e, C)) { - const { tab: c, content: a } = xn(this); - if (o && me.set(o, { tab: c, content: a, currentHeight: 0, nextHeight: 0 }), cs.relatedTarget = e, y(c) && (w(c, cs), !cs.defaultPrevented)) { - g(e, C), O(e, Qe, "true"); - const l = y(c) && Pn(c); - if (l && h(l, C) && b(l, C), o) { - const r = () => { - c && (b(c, C), O(c, Qe, "false")), i && !h(i, C) && g(i, C); - }; - a && (h(a, R) || n && h(n, R)) ? u.set(o, r, 1) : r(); + // istanbul ignore else @preserve + if (!(o && u.get(o)) && !g(e, C)) { + const { tab: c, content: a } = Dn(this); + // istanbul ignore else @preserve + o && me.set(o, { tab: c, content: a, currentHeight: 0, nextHeight: 0 }), as.relatedTarget = e; + // istanbul ignore else @preserve + if (T(c)) { + w(c, as); + // istanbul ignore else @preserve + if (!as.defaultPrevented) { + f(e, C), O(e, Je, "true"); + const l = T(c) && An(c); + l && g(l, C) && b(l, C); + // istanbul ignore else @preserve + if (o) { + const r = () => { + // istanbul ignore else @preserve + c && (b(c, C), O(c, Je, "false")), i && !g(i, C) && f(i, C); + }; + a && (g(a, R) || n && g(n, R)) ? u.set(o, r, 1) : r(); + } + // istanbul ignore else @preserve + a && (b(a, m), g(a, R) ? A(a, () => Pn(this)) : Pn(this)); } - a && (b(a, m), h(a, R) ? x(a, () => Hn(this)) : Hn(this)); } } } @@ -1637,40 +2002,45 @@ class he extends nt { this._toggleEventListeners(), super.dispose(); } } -d(he, "selector", $n), d(he, "init", Ac), d(he, "getInstance", ko); -const G = "toast", No = "Toast", Ic = `.${G}`, kc = `[${We}="${G}"]`, Oo = `[${ct}="${G}"]`, Ut = "showing", Mo = "hide", Nc = { +d(de, "selector", yn), d(de, "init", Oc), d(de, "getInstance", _o); +const Q = "toast", Bo = "Toast", _c = `.${Q}`, Bc = `[${We}="${Q}"]`, Ro = `[${ct}="${Q}"]`, Yt = "showing", Fo = "hide", Rc = { animation: !0, autohide: !0, delay: 5e3 -}, Is = (t) => F(t, No), Oc = (t) => new fe(t), Dn = $(`show.bs.${G}`), Mc = $(`shown.bs.${G}`), An = $(`hide.bs.${G}`), _c = $(`hidden.bs.${G}`), Ln = (t) => { +}, Ns = (t) => W(t, Bo), Fc = (t) => new he(t), In = $(`show.bs.${Q}`), Wc = $(`shown.bs.${Q}`), Ln = $(`hide.bs.${Q}`), jc = $(`hidden.bs.${Q}`), kn = (t) => { const { element: s, options: e } = t; - b(s, Ut), u.clear(s, Ut), w(s, Mc), e.autohide && u.set(s, () => t.hide(), e.delay, G); -}, In = (t) => { + b(s, Yt), u.clear(s, Yt), w(s, Wc); + // istanbul ignore else @preserve + e.autohide && u.set(s, () => t.hide(), e.delay, Q); +}, Nn = (t) => { const { element: s } = t; - b(s, Ut), b(s, m), g(s, Mo), u.clear(s, G), w(s, _c); -}, Bc = (t) => { + b(s, Yt), b(s, m), f(s, Fo), u.clear(s, Q), w(s, jc); +}, zc = (t) => { const { element: s, options: e } = t; - g(s, Ut), e.animation ? (Mt(s), x(s, () => In(t))) : In(t); -}, Rc = (t) => { + f(s, Yt), e.animation ? (Mt(s), A(s, () => Nn(t))) : Nn(t); +}, Vc = (t) => { const { element: s, options: e } = t; u.set( s, () => { - b(s, Mo), Mt(s), g(s, m), g(s, Ut), e.animation ? x(s, () => Ln(t)) : Ln(t); + b(s, Fo), Mt(s), f(s, m), f(s, Yt), e.animation ? A(s, () => kn(t)) : kn(t); }, 17, - Ut + Yt ); -}, Wc = (t) => { - u.clear(t.element, G), t._toggleEventListeners(); -}, Fc = (t) => { - const { target: s } = t, e = s && M(s, Oo), n = e && X(e), o = n && Is(n); - o && (e && e.tagName === "A" && t.preventDefault(), o.relatedTarget = e, o.show()); -}, jc = (t) => { - const s = t.target, e = Is(s), { type: n, relatedTarget: o } = t; - e && s !== o && !s.contains(o) && ([Me, Es].includes(n) ? u.clear(s, G) : u.set(s, () => e.hide(), e.options.delay, G)); +}, Xc = (t) => { + const { target: s } = t, e = s && M(s, Ro), n = e && K(e), o = n && Ns(n); + // istanbul ignore else @preserve + if (o) { + // istanbul ignore else @preserve + e && e.tagName === "A" && t.preventDefault(), o.relatedTarget = e, o.show(); + } +}, Kc = (t) => { + const s = t.target, e = Ns(s), { type: n, relatedTarget: o } = t; + // istanbul ignore else @preserve: a solid filter is required + e && s !== o && !s.contains(o) && ([Me, Ts].includes(n) ? u.clear(s, Q) : u.set(s, () => e.hide(), e.options.delay, Q)); }; -class fe extends nt { +class he extends ot { /** * @param target the target `.toast` element * @param config the instance options @@ -1682,12 +2052,14 @@ class fe extends nt { /** Shows the toast. */ d(this, "show", () => { const { element: e, isShown: n } = this; - e && !n && (w(e, Dn), Dn.defaultPrevented || Rc(this)); + // istanbul ignore else @preserve + e && !n && (w(e, In), In.defaultPrevented || Vc(this)); }); /** Hides the toast. */ d(this, "hide", () => { const { element: e, isShown: n } = this; - e && n && (w(e, An), An.defaultPrevented || Bc(this)); + // istanbul ignore else @preserve + e && n && (w(e, Ln), Ln.defaultPrevented || zc(this)); }); /** * Toggles on/off the `click` event listener. @@ -1696,81 +2068,88 @@ class fe extends nt { */ d(this, "_toggleEventListeners", (e) => { const n = e ? _ : B, { element: o, triggers: i, dismiss: c, options: a, hide: l } = this; - c && n(c, N, l), a.autohide && [Es, On, Me, $s].forEach( - (r) => n(o, r, jc) - ), i.length && i.forEach((r) => n(r, N, Fc)); + // istanbul ignore else @preserve + c && n(c, N, l); + // istanbul ignore else @preserve + a.autohide && [Ts, _n, Me, ys].forEach( + (r) => n(o, r, Kc) + ); + // istanbul ignore else @preserve + i.length && i.forEach((r) => n(r, N, Xc)); }); const { element: o, options: i } = this; - i.animation && !h(o, R) ? g(o, R) : !i.animation && h(o, R) && b(o, R), this.dismiss = P(kc, o), this.triggers = [...tt(Oo, E(o))].filter( - (c) => X(c) === o + i.animation && !g(o, R) ? f(o, R) : !i.animation && g(o, R) && b(o, R), this.dismiss = S(Bc, o), this.triggers = [...J(Ro, E(o))].filter( + (c) => K(c) === o ), this._toggleEventListeners(!0); } /** * Returns component name string. */ get name() { - return No; + return Bo; } /** * Returns component default options. */ get defaults() { - return Nc; + return Rc; } /** * Returns *true* when toast is visible. */ get isShown() { - return h(this.element, m); + return g(this.element, m); } /** Removes the `Toast` component from the target element. */ dispose() { const { element: e, isShown: n } = this; - n && b(e, m), Wc(this), super.dispose(); + this._toggleEventListeners(), u.clear(e, Q), n && b(e, m), super.dispose(); } } -d(fe, "selector", Ic), d(fe, "init", Oc), d(fe, "getInstance", Is); -const ks = /* @__PURE__ */ new Map(); -[ne, oe, ie, ce, ae, re, le, zt, de, he, fe, Dt].forEach( - (t) => ks.set(t.prototype.name, t) +d(he, "selector", _c), d(he, "init", Fc), d(he, "getInstance", Ns); +const Os = /* @__PURE__ */ new Map(); +[se, ne, oe, ie, ce, ae, re, zt, le, de, he, Dt].forEach( + (t) => Os.set(t.prototype.name, t) ); -const zc = (t, s) => { +const Yc = (t, s) => { [...s].forEach((e) => t(e)); -}, Vc = (t, s) => { +}, Uc = (t, s) => { const e = At.getAllFor(t); e && [...e].forEach(([n, o]) => { s.contains(n) && o.dispose(); }); -}, kn = (t) => { +}, On = (t) => { const s = t && t.nodeName ? t : document, e = [...Ss("*", s)]; - ks.forEach((n) => { + Os.forEach((n) => { const { init: o, selector: i } = n; - zc( + Yc( o, - e.filter((c) => jn(c, i)) + e.filter((c) => Kn(c, i)) ); }); -}, Xc = (t) => { +}, Zc = (t) => { const s = t && t.nodeName ? t : document; - ks.forEach((e) => { - Vc(e.prototype.name, s); + Os.forEach((e) => { + Uc(e.prototype.name, s); }); }; -document.body ? kn() : _(document, "DOMContentLoaded", () => kn(), { once: !0 }); +document.body ? On() : _(document, "DOMContentLoaded", () => On(), { + once: !0 +}); export { - ne as Alert, - oe as Button, - ie as Carousel, - ce as Collapse, - ae as Dropdown, - re as Modal, - le as Offcanvas, + se as Alert, + ne as Button, + oe as Carousel, + ie as Collapse, + ce as Dropdown, + ae as Modal, + re as Offcanvas, zt as Popover, - de as ScrollSpy, - he as Tab, - fe as Toast, + le as ScrollSpy, + de as Tab, + he as Toast, Dt as Tooltip, - kn as initCallback, - Xc as removeDataAPI + On as initCallback, + Zc as removeDataAPI }; //# sourceMappingURL=bootstrap-native.mjs.map diff --git a/dist/bootstrap-native.mjs.map b/dist/bootstrap-native.mjs.map index 53bb8307..5e0de234 100644 --- a/dist/bootstrap-native.mjs.map +++ b/dist/bootstrap-native.mjs.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap-native.mjs","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.3/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.5/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const pe = \"aria-checked\", me = \"aria-description\", fe = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Ne = \"aria-valuemax\", ke = \"aria-valuenow\", Me = \"aria-valuetext\", q = \"abort\", G = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", mt = \"mouseenter\", ft = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Nt = \"pointerleave\", kt = \"pointermove\", Mt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Ot = \"select\", Lt = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ft = \"unload\", Te = {\n DOMContentLoaded: P,\n DOMMouseScroll: Y,\n abort: q,\n beforeunload: G,\n blur: J,\n change: K,\n click: it,\n contextmenu: X,\n dblclick: ut,\n error: Z,\n focus: $,\n focusin: _,\n focusout: tt,\n gesturechange: et,\n gestureend: nt,\n gesturestart: ot,\n hover: pt,\n keydown: st,\n keypress: ct,\n keyup: rt,\n load: at,\n mousedown: lt,\n mousemove: bt,\n mousein: gt,\n mouseout: vt,\n mouseenter: mt,\n mouseleave: ft,\n mouseover: Et,\n mouseup: dt,\n mousewheel: ht,\n move: yt,\n orientationchange: wt,\n pointercancel: At,\n pointerdown: St,\n pointerleave: Nt,\n pointermove: kt,\n pointerup: Mt,\n readystatechange: Tt,\n reset: Dt,\n resize: Ct,\n scroll: zt,\n select: Ot,\n selectend: Lt,\n selectstart: It,\n submit: xt,\n touchcancel: Ht,\n touchend: Pt,\n touchmove: Bt,\n touchstart: Vt,\n unload: Ft\n}, De = \"drag\", Ce = \"dragstart\", Oe = \"dragenter\", Le = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), Pe = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, Fe = { in: \"focusin\", out: \"focusout\" }, Ue = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", je = \"ArrowLeft\", qe = \"ArrowRight\", Ge = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"NumpadEnter\", $e = \"Escape\", _e = \"Insert\", tn = \"Meta\", en = \"Pause\", nn = \"ScrollLock\", on = \"Shift\", sn = \"Space\", cn = \"Tab\", Ut = \"animationDuration\", Wt = \"animationDelay\", F = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", U = \"transitionProperty\", rn = \"addEventListener\", an = \"removeEventListener\", un = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, ln = \"offsetHeight\", dn = \"offsetWidth\", pn = \"scrollHeight\", mn = \"scrollWidth\", fn = \"tabindex\", jt = navigator.userAgentData, A = jt, { userAgent: qt } = navigator, S = qt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst gn = O, x = /(iPhone|iPod|iPad)/, vn = A ? A.brands.some((t) => x.test(t.brand)) : (\n /* istanbul ignore next */\n x.test(S)\n), En = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next */\n !1\n), { head: N } = document, bn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), Gt = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n const s = (r) => {\n (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n };\n Gt(t, e, s, o);\n}, Xt = () => {\n}, hn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n Kt(document, P, Xt, e);\n } catch {\n }\n return t;\n})(), yn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), wn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, An = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Sn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), Yt = (t, e) => t.getAttribute(e), Nn = (t, e, n) => e.getAttributeNS(t, n), kn = (t, e) => t.hasAttribute(e), Mn = (t, e, n) => e.hasAttributeNS(t, n), Tn = (t, e, n) => t.setAttribute(e, n), Dn = (t, e, n, o) => e.setAttributeNS(t, n, o), Cn = (t, e) => t.removeAttribute(e), On = (t, e, n) => e.removeAttributeNS(t, n), Ln = (t, ...e) => {\n t.classList.add(...e);\n}, In = (t, ...e) => {\n t.classList.remove(...e);\n}, zn = (t, e) => t.classList.contains(e), { body: xn } = document, { documentElement: Vn } = document, Bn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!u(t)) return;\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!u(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n }\n}, Hn = (t, e) => L.get(t, e), k = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, M = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n if (!t) return;\n if (k(t))\n return d().createElement(t);\n const { tagName: e } = t, n = Zt(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, M(n, o);\n}, $t = (t, e) => {\n if (!t || !e) return;\n if (k(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = $t(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, M(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Pn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, _t = (t) => {\n const e = g(t, F), n = g(t, Wt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, te = (t) => {\n const e = g(t, F), n = g(t, Ut), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Fn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = te(t), r = _t(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ee = (t) => {\n const e = g(t, U), n = g(t, Qt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, ne = (t) => {\n const e = g(t, U), n = g(t, Rt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Un = (t, e) => {\n let n = 0;\n const o = new Event(C), s = ne(t), r = ee(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, Wn = (t) => Float32Array.from(Array.from(t)), Rn = (t) => Float64Array.from(Array.from(t)), Qn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), jn = (t, e, n, o) => {\n const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n return w(r).forEach(([c, m]) => {\n const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (j) => oe(j)) : c;\n l[y] = V(m);\n }), w(s).forEach(([c, m]) => {\n s[c] = V(m);\n }), w(e).forEach(([c, m]) => {\n c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : m;\n }), a;\n}, qn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Gn = (t) => Object.keys(t), Jn = (t) => Object.values(t), Kn = (t) => Object.fromEntries(t), Xn = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n return v(e) && M(n, e), n;\n}, Yn = { passive: !0 }, Zn = (t) => t.offsetHeight, $n = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && k(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, M(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, f = /* @__PURE__ */ new Map(), _n = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n u(t) && (o && o.length ? (f.has(t) || f.set(t, /* @__PURE__ */ new Map()), f.get(t).set(o, setTimeout(e, n))) : f.set(t, setTimeout(e, n)));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!u(t)) return null;\n const n = f.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : se(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!u(t)) return;\n const n = f.get(t);\n e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && f.delete(t)) : (clearTimeout(n), f.delete(t));\n }\n}, to = (t) => t.toUpperCase(), h = (t, e) => {\n const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n let p = 1, c = 1;\n if (e && u(t)) {\n const { offsetWidth: m, offsetHeight: y } = t;\n p = m > 0 ? Math.round(n) / m : (\n /* istanbul ignore next */\n 1\n ), c = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / c,\n top: s / c,\n right: r / p,\n bottom: a / c,\n left: l / p,\n x: l / p,\n y: s / c\n };\n}, eo = (t) => d(t).body, T = (t) => d(t).documentElement, no = (t) => d(t).head, oo = (t) => {\n const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, so = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n if (!u(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, co = (t, e, n) => {\n const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n if (o) {\n const a = h(e, !0);\n r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - r.x,\n y: s.top + n.y - r.y,\n width: s.width,\n height: s.height\n };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n let n = e ? B : H;\n if (e) {\n const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, ro = (t) => {\n var e;\n return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, ao = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, io = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, uo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n return e <= o && n >= 0;\n}, lo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && r <= n && a <= e;\n}, po = (t) => ie(t) && t.every(u) || !1, mo = (t) => typeof t == \"function\" || !1, fo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, go = (t) => u(t) && t.tagName === \"IMG\" || !1, vo = (t) => {\n if (!k(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, Eo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, bo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, ho = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, yo = (t) => T(t).dir === \"rtl\", wo = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Ao = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, So = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), No = (t) => [...de(\"*\", t)].filter(ue), ko = (t, e) => d(e).getElementById(t) || null, Mo = (t, e) => (i(e) ? e : d()).querySelectorAll(t), To = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n t\n), Do = (t, e) => t.matches(e), Co = \"2.0.3\";\nexport {\n Bn as ArrayFrom,\n P as DOMContentLoadedEvent,\n Y as DOMMouseScrollEvent,\n L as Data,\n Wn as Float32ArrayFrom,\n Rn as Float64ArrayFrom,\n M as ObjectAssign,\n w as ObjectEntries,\n Kn as ObjectFromEntries,\n qn as ObjectHasOwn,\n Gn as ObjectKeys,\n Jn as ObjectValues,\n _n as Timer,\n q as abortEvent,\n Ln as addClass,\n rn as addEventListener,\n Wt as animationDelay,\n Ut as animationDuration,\n D as animationEndEvent,\n F as animationName,\n pe as ariaChecked,\n fe as ariaDescribedBy,\n me as ariaDescription,\n ge as ariaExpanded,\n ve as ariaHasPopup,\n Ee as ariaHidden,\n be as ariaLabel,\n he as ariaLabelledBy,\n ye as ariaModal,\n we as ariaPressed,\n Ae as ariaSelected,\n Ne as ariaValueMax,\n Se as ariaValueMin,\n ke as ariaValueNow,\n Me as ariaValueText,\n G as beforeunloadEvent,\n un as bezierEasings,\n J as blurEvent,\n K as changeEvent,\n le as closest,\n X as contextmenuEvent,\n Xn as createCustomEvent,\n Zt as createElement,\n $t as createElementNS,\n Q as dispatchEvent,\n Pn as distinct,\n xn as documentBody,\n Vn as documentElement,\n N as documentHead,\n De as dragEvent,\n ze as dragendEvent,\n Oe as dragenterEvent,\n Le as dragleaveEvent,\n Ie as dragoverEvent,\n Ce as dragstartEvent,\n Fn as emulateAnimationEnd,\n Un as emulateTransitionEnd,\n Z as errorEvent,\n Qn as focus,\n $ as focusEvent,\n Fe as focusEvents,\n _ as focusinEvent,\n tt as focusoutEvent,\n et as gesturechangeEvent,\n nt as gestureendEvent,\n ot as gesturestartEvent,\n Yt as getAttribute,\n Nn as getAttributeNS,\n h as getBoundingClientRect,\n No as getCustomElements,\n d as getDocument,\n eo as getDocumentBody,\n T as getDocumentElement,\n no as getDocumentHead,\n _t as getElementAnimationDelay,\n te as getElementAnimationDuration,\n ko as getElementById,\n g as getElementStyle,\n ee as getElementTransitionDelay,\n ne as getElementTransitionDuration,\n To as getElementsByClassName,\n de as getElementsByTagName,\n Hn as getInstance,\n oo as getNodeScroll,\n so as getParentNode,\n co as getRectRelativeToOffsetParent,\n ae as getUID,\n ro as getWindow,\n kn as hasAttribute,\n Mn as hasAttributeNS,\n zn as hasClass,\n vn as isApple,\n ie as isArray,\n ao as isCanvas,\n ue as isCustomElement,\n R as isDocument,\n io as isElement,\n uo as isElementInScrollRange,\n lo as isElementInViewport,\n po as isElementsArray,\n En as isFirefox,\n mo as isFunction,\n fo as isHTMLCollection,\n u as isHTMLElement,\n go as isHTMLImageElement,\n vo as isJSON,\n I as isMap,\n bo as isMedia,\n gn as isMobile,\n i as isNode,\n ho as isNodeList,\n se as isNumber,\n v as isObject,\n yo as isRTL,\n wo as isSVGElement,\n re as isScaledElement,\n ce as isShadowRoot,\n k as isString,\n Ao as isTableElement,\n Eo as isWeakMap,\n W as isWindow,\n We as keyAlt,\n Re as keyArrowDown,\n je as keyArrowLeft,\n qe as keyArrowRight,\n Qe as keyArrowUp,\n Ge as keyBackspace,\n Je as keyCapsLock,\n Ke as keyControl,\n Xe as keyDelete,\n Ye as keyEnter,\n $e as keyEscape,\n _e as keyInsert,\n tn as keyMeta,\n Ze as keyNumpadEnter,\n en as keyPause,\n nn as keyScrollLock,\n on as keyShift,\n sn as keySpace,\n cn as keyTab,\n Ue as keyboardEventKeys,\n st as keydownEvent,\n ct as keypressEvent,\n rt as keyupEvent,\n at as loadEvent,\n xe as loadstartEvent,\n Do as matches,\n Be as mouseClickEvents,\n He as mouseHoverEvents,\n Ve as mouseSwipeEvents,\n it as mouseclickEvent,\n ut as mousedblclickEvent,\n lt as mousedownEvent,\n mt as mouseenterEvent,\n pt as mousehoverEvent,\n gt as mouseinEvent,\n ft as mouseleaveEvent,\n bt as mousemoveEvent,\n vt as mouseoutEvent,\n Et as mouseoverEvent,\n dt as mouseupEvent,\n ht as mousewheelEvent,\n yt as moveEvent,\n Te as nativeEvents,\n Xt as noop,\n jn as normalizeOptions,\n V as normalizeValue,\n Jt as off,\n ln as offsetHeight,\n dn as offsetWidth,\n Gt as on,\n Kt as one,\n wt as orientationchangeEvent,\n Yn as passiveHandler,\n At as pointercancelEvent,\n St as pointerdownEvent,\n Nt as pointerleaveEvent,\n kt as pointermoveEvent,\n Mt as pointerupEvent,\n So as querySelector,\n Mo as querySelectorAll,\n Tt as readystatechangeEvent,\n Zn as reflow,\n Cn as removeAttribute,\n On as removeAttributeNS,\n In as removeClass,\n an as removeEventListener,\n Dt as resetEvent,\n Ct as resizeEvent,\n zt as scrollEvent,\n pn as scrollHeight,\n mn as scrollWidth,\n Ot as selectEvent,\n Lt as selectendEvent,\n It as selectstartEvent,\n Tn as setAttribute,\n Dn as setAttributeNS,\n $n as setElementStyle,\n xt as submitEvent,\n bn as support3DTransform,\n An as supportAnimation,\n hn as supportPassive,\n wn as supportTouch,\n yn as supportTransform,\n Sn as supportTransition,\n fn as tabindex,\n oe as toLowerCase,\n to as toUpperCase,\n Pe as touchEvents,\n Ht as touchcancelEvent,\n Pt as touchendEvent,\n Bt as touchmoveEvent,\n Vt as touchstartEvent,\n Qt as transitionDelay,\n Rt as transitionDuration,\n C as transitionEndEvent,\n U as transitionProperty,\n Ft as unloadEvent,\n S as userAgent,\n A as userAgentData,\n Co as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n getInstance,\n removeClass,\n hasClass,\n addClass,\n setAttribute,\n mouseclickEvent,\n ariaPressed,\n getAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n getDocumentBody,\n getDocumentElement,\n getDocument,\n getWindow,\n removeClass,\n hasClass,\n addClass,\n getElementsByTagName,\n getAttribute,\n querySelector,\n isHTMLElement,\n isWindow,\n createCustomEvent,\n getInstance,\n scrollEvent,\n passiveHandler,\n dispatchEvent,\n getBoundingClientRect,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement, ops?: Record) => T,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) (instance as T & { dispose: () => void }).dispose();\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), { once: true });\n}\n"],"names":["fe","ge","Ee","ye","we","Ae","P","$","_","tt","st","rt","it","lt","pt","mt","ft","St","kt","Mt","Ct","zt","Vt","Ce","Re","Qe","je","qe","$e","Rt","Qt","C","U","jt","A","qt","S","z","x","vn","N","Gt","e","n","o","s","Jt","Kt","r","Xt","Yt","kn","Tn","Cn","Ln","In","zn","v","i","u","E","L","Hn","k","W","R","d","M","Zt","Q","g","ee","ne","Un","a","l","Qn","V","w","oe","jn","p","c","m","y","j","Gn","Xn","Yn","Zn","$n","I","se","f","_n","h","eo","T","ce","so","B","H","b","ae","ro","ie","uo","mo","ho","yo","Ao","le","So","de","Mo","To","Do","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","keyArrowRight","keyArrowLeft","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","isHTMLElement","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","pad","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","_b","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","delay","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","completeDisposeToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"bootstrap-native.mjs","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.5/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.6/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const he = \"aria-checked\", ye = \"aria-description\", we = \"aria-describedby\", Ae = \"aria-expanded\", Se = \"aria-haspopup\", X = \"aria-hidden\", Ne = \"aria-label\", Me = \"aria-labelledby\", Te = \"aria-modal\", ke = \"aria-pressed\", De = \"aria-selected\", Ce = \"aria-valuemin\", Oe = \"aria-valuemax\", Le = \"aria-valuenow\", Ie = \"aria-valuetext\", Y = \"abort\", Z = \"beforeunload\", $ = \"blur\", _ = \"change\", tt = \"contextmenu\", P = \"DOMContentLoaded\", et = \"DOMMouseScroll\", nt = \"error\", ot = \"focus\", st = \"focusin\", ct = \"focusout\", rt = \"gesturechange\", at = \"gestureend\", it = \"gesturestart\", ut = \"keydown\", lt = \"keypress\", dt = \"keyup\", pt = \"load\", ft = \"click\", mt = \"dblclick\", gt = \"mousedown\", vt = \"mouseup\", Et = \"hover\", bt = \"mouseenter\", ht = \"mouseleave\", yt = \"mousein\", wt = \"mouseout\", At = \"mouseover\", St = \"mousemove\", Nt = \"mousewheel\", Mt = \"move\", Tt = \"orientationchange\", kt = \"pointercancel\", Dt = \"pointerdown\", Ct = \"pointerleave\", Ot = \"pointermove\", Lt = \"pointerup\", It = \"readystatechange\", xt = \"reset\", zt = \"resize\", Vt = \"select\", Bt = \"selectend\", Ft = \"selectstart\", Ht = \"scroll\", Pt = \"submit\", Ut = \"touchstart\", Wt = \"touchmove\", Rt = \"touchcancel\", Qt = \"touchend\", jt = \"unload\", xe = {\n DOMContentLoaded: P,\n DOMMouseScroll: et,\n abort: Y,\n beforeunload: Z,\n blur: $,\n change: _,\n click: ft,\n contextmenu: tt,\n dblclick: mt,\n error: nt,\n focus: ot,\n focusin: st,\n focusout: ct,\n gesturechange: rt,\n gestureend: at,\n gesturestart: it,\n hover: Et,\n keydown: ut,\n keypress: lt,\n keyup: dt,\n load: pt,\n mousedown: gt,\n mousemove: St,\n mousein: yt,\n mouseout: wt,\n mouseenter: bt,\n mouseleave: ht,\n mouseover: At,\n mouseup: vt,\n mousewheel: Nt,\n move: Mt,\n orientationchange: Tt,\n pointercancel: kt,\n pointerdown: Dt,\n pointerleave: Ct,\n pointermove: Ot,\n pointerup: Lt,\n readystatechange: It,\n reset: xt,\n resize: zt,\n scroll: Ht,\n select: Vt,\n selectend: Bt,\n selectstart: Ft,\n submit: Pt,\n touchcancel: Rt,\n touchend: Qt,\n touchmove: Wt,\n touchstart: Ut,\n unload: jt\n}, ze = \"drag\", Ve = \"dragstart\", Be = \"dragenter\", Fe = \"dragleave\", He = \"dragover\", Pe = \"dragend\", Ue = \"loadstart\", We = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Re = { down: \"mousedown\", up: \"mouseup\" }, Qe = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), je = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, qe = { in: \"focusin\", out: \"focusout\" }, qt = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]', Ge = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, Ke = \"Alt\", Je = \"ArrowDown\", Xe = \"ArrowUp\", Ye = \"ArrowLeft\", Ze = \"ArrowRight\", $e = \"Backspace\", _e = \"CapsLock\", tn = \"Control\", en = \"Delete\", nn = \"Enter\", on = \"NumpadEnter\", sn = \"Escape\", cn = \"Insert\", rn = \"Meta\", an = \"Pause\", un = \"ScrollLock\", ln = \"Shift\", dn = \"Space\", pn = \"Tab\", Gt = \"animationDuration\", Kt = \"animationDelay\", U = \"animationName\", D = \"animationend\", Jt = \"transitionDuration\", Xt = \"transitionDelay\", C = \"transitionend\", W = \"transitionProperty\", fn = \"addEventListener\", mn = \"removeEventListener\", gn = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, vn = \"offsetHeight\", En = \"offsetWidth\", bn = \"scrollHeight\", hn = \"scrollWidth\", yn = \"tabindex\", Yt = navigator.userAgentData, A = Yt, { userAgent: Zt } = navigator, S = Zt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\n// istanbul ignore else @preserve\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst wn = O, V = /(iPhone|iPod|iPad)/, An = A ? A.brands.some((t) => V.test(t.brand)) : (\n /* istanbul ignore next @preserve */\n V.test(S)\n), Sn = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next @preserve */\n !1\n), { head: N } = document, Nn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), R = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Q = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, $t = (t, e, n, o) => {\n const s = (c) => {\n /* istanbul ignore else @preserve */\n (c.target === t || c.currentTarget === t) && (n.apply(t, [c]), Q(t, e, s, o));\n };\n R(t, e, s, o);\n}, _t = () => {\n}, Mn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n // istanbul ignore next @preserve\n $t(document, P, _t, e);\n } catch {\n }\n return t;\n})(), Tn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), kn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, Dn = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Cn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), j = (t, e) => t.getAttribute(e), On = (t, e, n) => e.getAttributeNS(t, n), te = (t, e) => t.hasAttribute(e), Ln = (t, e, n) => e.hasAttributeNS(t, n), In = (t, e, n) => t.setAttribute(e, n), xn = (t, e, n, o) => e.setAttributeNS(t, n, o), zn = (t, e) => t.removeAttribute(e), Vn = (t, e, n) => e.removeAttributeNS(t, n), Bn = (t, ...e) => {\n t.classList.add(...e);\n}, Fn = (t, ...e) => {\n t.classList.remove(...e);\n}, Hn = (t, e) => t.classList.contains(e), { body: Pn } = document, { documentElement: Un } = document, Wn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, l = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!l(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n if (!n || !l(t)) return;\n n.delete(t);\n // istanbul ignore else @preserve\n n.size === 0 && E.delete(e);\n }\n}, Rn = (t, e) => L.get(t, e), M = (t) => typeof t == \"string\" || !1, q = (t) => v(t) && t.constructor.name === \"Window\" || !1, G = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => q(t) ? t.document : G(t) ? t : i(t) ? t.ownerDocument : window.document, T = (t, ...e) => Object.assign(t, ...e), ee = (t) => {\n if (!t) return;\n if (M(t))\n return d().createElement(t);\n const { tagName: e } = t, n = ee(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, T(n, o);\n}, ne = (t, e) => {\n if (!t || !e) return;\n if (M(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = ne(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, T(o, s);\n}, K = (t, e) => t.dispatchEvent(e), Qn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, oe = (t) => {\n const e = g(t, U), n = g(t, Kt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, se = (t) => {\n const e = g(t, U), n = g(t, Gt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, jn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = se(t), c = oe(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else {\n // istanbul ignore next @preserve\n e.apply(t, [o]);\n }\n}, ce = (t) => {\n const e = g(t, W), n = g(t, Xt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, re = (t) => {\n const e = g(t, W), n = g(t, Jt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, qn = (t, e) => {\n let n = 0;\n const o = new Event(C), s = re(t), c = ce(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else\n e.apply(t, [o]);\n}, Gn = (t) => Float32Array.from(Array.from(t)), Kn = (t) => Float64Array.from(Array.from(t)), Jn = (t, e) => t.focus(e), B = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), ae = (t) => t.toLowerCase(), Xn = (t, e, n, o) => {\n const s = { ...n }, c = { ...t.dataset }, a = { ...e }, u = {}, p = \"title\";\n return w(c).forEach(([r, f]) => {\n const y = o && typeof r == \"string\" && r.includes(o) ? r.replace(o, \"\").replace(/[A-Z]/g, (J) => ae(J)) : (\n /* istanbul ignore next @preserve */\n r\n );\n u[y] = B(f);\n }), w(s).forEach(([r, f]) => {\n s[r] = B(f);\n }), w(e).forEach(([r, f]) => {\n // istanbul ignore else @preserve\n r in s ? a[r] = s[r] : r in u ? a[r] = u[r] : a[r] = r === p ? j(t, p) : f;\n }), a;\n}, Yn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Zn = (t) => Object.keys(t), $n = (t) => Object.values(t), _n = (t) => Object.fromEntries(t), to = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n // istanbul ignore else @preserve\n return v(e) && T(n, e), n;\n}, eo = { passive: !0 }, no = (t) => t.offsetHeight, oo = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && M(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, T(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, ie = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), so = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n if (o && o.length) {\n // istanbul ignore else @preserve\n m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n));\n } else\n m.set(t, setTimeout(e, n));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!l(t)) return null;\n const n = m.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : ie(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!l(t)) return;\n const n = m.get(t);\n if (e && e.length && I(n)) {\n clearTimeout(n.get(e)), n.delete(e);\n // istanbul ignore else @preserve\n n.size === 0 && m.delete(t);\n } else\n clearTimeout(n), m.delete(t);\n }\n}, co = (t) => t.toUpperCase(), ue = (t, e) => (i(e) ? e : d()).querySelectorAll(t), x = /* @__PURE__ */ new Map();\nfunction le(t) {\n const { shiftKey: e, code: n } = t, o = d(this), s = [...ue(qt, this)].filter(\n (u) => !te(u, \"disabled\") && !j(u, X)\n );\n if (!s.length) return;\n const c = s[0], a = s[s.length - 1];\n // istanbul ignore else @preserve\n n === \"Tab\" && (e && o.activeElement === c ? (a.focus(), t.preventDefault()) : !e && o.activeElement === a && (c.focus(), t.preventDefault()));\n}\nconst de = (t) => x.has(t) === !0, ro = (t) => {\n const e = de(t);\n (e ? Q : R)(t, \"keydown\", le), e ? x.delete(t) : x.set(t, !0);\n}, h = (t, e) => {\n const { width: n, height: o, top: s, right: c, bottom: a, left: u } = t.getBoundingClientRect();\n let p = 1, r = 1;\n if (e && l(t)) {\n const { offsetWidth: f, offsetHeight: y } = t;\n p = f > 0 ? Math.round(n) / f : (\n /* istanbul ignore next */\n 1\n ), r = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / r,\n top: s / r,\n right: c / p,\n bottom: a / r,\n left: u / p,\n x: u / p,\n y: s / r\n };\n}, ao = (t) => d(t).body, k = (t) => d(t).documentElement, io = (t) => d(t).head, uo = (t) => {\n const e = q(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, pe = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, lo = (t) => t.nodeName === \"HTML\" ? t : l(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\npe(t) && t.host || // ShadowRoot detected\nk(t), fe = (t) => {\n if (!l(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, po = (t, e, n) => {\n const o = l(e), s = h(t, o && fe(e)), c = { x: 0, y: 0 };\n // istanbul ignore else @preserve\n if (o) {\n const a = h(e, !0);\n c.x = a.x + e.clientLeft, c.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - c.x,\n y: s.top + n.y - c.y,\n width: s.width,\n height: s.height\n };\n};\nlet F = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), me = (t, e) => {\n let n = e ? F : H;\n if (e) {\n const o = me(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), F += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, fo = (t) => {\n var e;\n return t ? G(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ge = (t) => Array.isArray(t) || !1, mo = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ve = (t) => l(t) && !!t.shadowRoot || !1, go = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, vo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = k(t);\n return e <= o && n >= 0;\n}, Eo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = k(t), { top: o, left: s, bottom: c, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && c <= n && a <= e;\n}, bo = (t) => ge(t) && t.every(l) || !1, ho = (t) => typeof t == \"function\" || !1, yo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, wo = (t) => l(t) && t.tagName === \"IMG\" || !1, Ao = (t) => {\n if (!M(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, So = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, No = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, Mo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, To = (t) => k(t).dir === \"rtl\", ko = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Do = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, Ee = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nEe(t.getRootNode().host, e) : null, Co = (t, e) => l(t) ? t : (i(e) ? e : d()).querySelector(t), be = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), Oo = (t) => [...be(\"*\", t)].filter(ve), Lo = (t, e) => d(e).getElementById(t) || null, Io = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(t), xo = (t, e) => t.matches(e), zo = \"2.0.5\";\nexport {\n Wn as ArrayFrom,\n P as DOMContentLoadedEvent,\n et as DOMMouseScrollEvent,\n L as Data,\n Gn as Float32ArrayFrom,\n Kn as Float64ArrayFrom,\n T as ObjectAssign,\n w as ObjectEntries,\n _n as ObjectFromEntries,\n Yn as ObjectHasOwn,\n Zn as ObjectKeys,\n $n as ObjectValues,\n so as Timer,\n Y as abortEvent,\n Bn as addClass,\n fn as addEventListener,\n Kt as animationDelay,\n Gt as animationDuration,\n D as animationEndEvent,\n U as animationName,\n he as ariaChecked,\n we as ariaDescribedBy,\n ye as ariaDescription,\n Ae as ariaExpanded,\n Se as ariaHasPopup,\n X as ariaHidden,\n Ne as ariaLabel,\n Me as ariaLabelledBy,\n Te as ariaModal,\n ke as ariaPressed,\n De as ariaSelected,\n Oe as ariaValueMax,\n Ce as ariaValueMin,\n Le as ariaValueNow,\n Ie as ariaValueText,\n Z as beforeunloadEvent,\n gn as bezierEasings,\n $ as blurEvent,\n _ as changeEvent,\n Ee as closest,\n tt as contextmenuEvent,\n to as createCustomEvent,\n ee as createElement,\n ne as createElementNS,\n K as dispatchEvent,\n Qn as distinct,\n Pn as documentBody,\n Un as documentElement,\n N as documentHead,\n ze as dragEvent,\n Pe as dragendEvent,\n Be as dragenterEvent,\n Fe as dragleaveEvent,\n He as dragoverEvent,\n Ve as dragstartEvent,\n jn as emulateAnimationEnd,\n qn as emulateTransitionEnd,\n nt as errorEvent,\n Jn as focus,\n ot as focusEvent,\n qe as focusEvents,\n qt as focusableSelector,\n st as focusinEvent,\n ct as focusoutEvent,\n rt as gesturechangeEvent,\n at as gestureendEvent,\n it as gesturestartEvent,\n j as getAttribute,\n On as getAttributeNS,\n h as getBoundingClientRect,\n Oo as getCustomElements,\n d as getDocument,\n ao as getDocumentBody,\n k as getDocumentElement,\n io as getDocumentHead,\n oe as getElementAnimationDelay,\n se as getElementAnimationDuration,\n Lo as getElementById,\n g as getElementStyle,\n ce as getElementTransitionDelay,\n re as getElementTransitionDuration,\n Io as getElementsByClassName,\n be as getElementsByTagName,\n Rn as getInstance,\n uo as getNodeScroll,\n lo as getParentNode,\n po as getRectRelativeToOffsetParent,\n me as getUID,\n fo as getWindow,\n te as hasAttribute,\n Ln as hasAttributeNS,\n Hn as hasClass,\n de as hasFocusTrap,\n An as isApple,\n ge as isArray,\n mo as isCanvas,\n ve as isCustomElement,\n G as isDocument,\n go as isElement,\n vo as isElementInScrollRange,\n Eo as isElementInViewport,\n bo as isElementsArray,\n Sn as isFirefox,\n ho as isFunction,\n yo as isHTMLCollection,\n l as isHTMLElement,\n wo as isHTMLImageElement,\n Ao as isJSON,\n I as isMap,\n No as isMedia,\n wn as isMobile,\n i as isNode,\n Mo as isNodeList,\n ie as isNumber,\n v as isObject,\n To as isRTL,\n ko as isSVGElement,\n fe as isScaledElement,\n pe as isShadowRoot,\n M as isString,\n Do as isTableElement,\n So as isWeakMap,\n q as isWindow,\n Ke as keyAlt,\n Je as keyArrowDown,\n Ye as keyArrowLeft,\n Ze as keyArrowRight,\n Xe as keyArrowUp,\n $e as keyBackspace,\n _e as keyCapsLock,\n tn as keyControl,\n en as keyDelete,\n nn as keyEnter,\n sn as keyEscape,\n cn as keyInsert,\n rn as keyMeta,\n on as keyNumpadEnter,\n an as keyPause,\n un as keyScrollLock,\n ln as keyShift,\n dn as keySpace,\n pn as keyTab,\n Ge as keyboardEventKeys,\n ut as keydownEvent,\n lt as keypressEvent,\n dt as keyupEvent,\n pt as loadEvent,\n Ue as loadstartEvent,\n xo as matches,\n Re as mouseClickEvents,\n Qe as mouseHoverEvents,\n We as mouseSwipeEvents,\n ft as mouseclickEvent,\n mt as mousedblclickEvent,\n gt as mousedownEvent,\n bt as mouseenterEvent,\n Et as mousehoverEvent,\n yt as mouseinEvent,\n ht as mouseleaveEvent,\n St as mousemoveEvent,\n wt as mouseoutEvent,\n At as mouseoverEvent,\n vt as mouseupEvent,\n Nt as mousewheelEvent,\n Mt as moveEvent,\n xe as nativeEvents,\n _t as noop,\n Xn as normalizeOptions,\n B as normalizeValue,\n Q as off,\n vn as offsetHeight,\n En as offsetWidth,\n R as on,\n $t as one,\n Tt as orientationchangeEvent,\n eo as passiveHandler,\n kt as pointercancelEvent,\n Dt as pointerdownEvent,\n Ct as pointerleaveEvent,\n Ot as pointermoveEvent,\n Lt as pointerupEvent,\n Co as querySelector,\n ue as querySelectorAll,\n It as readystatechangeEvent,\n no as reflow,\n zn as removeAttribute,\n Vn as removeAttributeNS,\n Fn as removeClass,\n mn as removeEventListener,\n xt as resetEvent,\n zt as resizeEvent,\n Ht as scrollEvent,\n bn as scrollHeight,\n hn as scrollWidth,\n Vt as selectEvent,\n Bt as selectendEvent,\n Ft as selectstartEvent,\n In as setAttribute,\n xn as setAttributeNS,\n oo as setElementStyle,\n Pt as submitEvent,\n Nn as support3DTransform,\n Dn as supportAnimation,\n Mn as supportPassive,\n kn as supportTouch,\n Tn as supportTransform,\n Cn as supportTransition,\n yn as tabindex,\n ae as toLowerCase,\n co as toUpperCase,\n ro as toggleFocusTrap,\n je as touchEvents,\n Rt as touchcancelEvent,\n Qt as touchendEvent,\n Wt as touchmoveEvent,\n Ut as touchstartEvent,\n Xt as transitionDelay,\n Jt as transitionDuration,\n C as transitionEndEvent,\n W as transitionProperty,\n jt as unloadEvent,\n S as userAgent,\n A as userAgentData,\n zo as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n /* istanbul ignore else @preserve */\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n /* istanbul ignore else @preserve */\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n /* istanbul ignore else @preserve */\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n);\n /* istanbul ignore else @preserve */\n a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n /* istanbul ignore else @preserve */\n o && o.has(i) && o.delete(i);\n /* istanbul ignore else @preserve */\n s && (!o || !o.size) && s.delete(t);\n /* istanbul ignore else @preserve */\n (!s || !s.size) && delete e[c];\n /* istanbul ignore else @preserve */\n (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n addClass,\n ariaPressed,\n getAttribute,\n getInstance,\n hasClass,\n mouseclickEvent,\n removeClass,\n setAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\ntype Component =\n | Alert\n | Button\n | Carousel\n | Collapse\n | Dropdown\n | Modal\n | Offcanvas\n | Popover\n | ScrollSpy\n | Tab\n | Toast\n | Tooltip;\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement) => Component,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) {\n (instance as T & { dispose: () => void }).dispose();\n }\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), {\n once: true,\n });\n}\n"],"names":["we","Ae","X","Te","ke","De","P","ot","st","ct","ut","dt","ft","gt","Et","bt","ht","Dt","Ot","Lt","zt","Ht","Ut","Ve","qt","Je","Xe","Ye","Ze","sn","Jt","Xt","C","W","Yt","A","Zt","S","z","V","An","N","R","e","n","o","s","Q","$t","c","_t","j","te","In","zn","Bn","Fn","Hn","v","i","l","E","L","Rn","M","q","G","d","T","ee","K","g","ce","re","qn","a","u","Jn","B","w","ae","Xn","p","f","y","J","Zn","to","eo","no","oo","I","ie","m","so","ue","x","le","de","ro","h","ao","k","pe","lo","F","H","b","me","fo","ge","vo","ho","Mo","To","Do","Ee","Co","be","Io","xo","r","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","arrowKeyNext","keyArrowLeft","keyArrowRight","arrowKeyPrev","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","toggleFocusTrap","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","_b","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","isOpen","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","delay","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist/components/alert.cjs b/dist/components/alert.cjs index 897e03a9..9e964a02 100644 --- a/dist/components/alert.cjs +++ b/dist/components/alert.cjs @@ -1,2 +1,4 @@ -"use strict";var C=Object.defineProperty;var g=(s,t,e)=>t in s?C(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var o=(s,t,e)=>g(s,typeof t!="symbol"?t+"":t,e);const n=require("@thednp/shorty"),a=require("@thednp/event-listener"),E=require("./fadeClass-Co6nOzNJ.js"),l=require("./showClass-D_Ms1FgG.js"),p=require("./dataBsDismiss-CMHF7If_.js"),q=require("./base-component-j_bwTL_x.js"),r="alert",u="Alert",L=`.${r}`,f=`[${p.dataBsDismiss}="${r}"]`,$=s=>n.getInstance(s,u),b=s=>new i(s),d=n.createCustomEvent(`close.bs.${r}`),w=n.createCustomEvent(`closed.bs.${r}`),m=s=>{const{element:t}=s;n.dispatchEvent(t,w),s._toggleEventListeners(),s.dispose(),t.remove()};class i extends q.BaseComponent{constructor(e){super(e);o(this,"dismiss");o(this,"close",()=>{const{element:e}=this;e&&n.hasClass(e,l.showClass)&&(n.dispatchEvent(e,d),d.defaultPrevented||(n.removeClass(e,l.showClass),n.hasClass(e,E.fadeClass)?n.emulateTransitionEnd(e,()=>m(this)):m(this)))});o(this,"_toggleEventListeners",e=>{const h=e?a.addListener:a.removeListener,{dismiss:c,close:v}=this;c&&h(c,n.mouseclickEvent,v)});this.dismiss=n.querySelector(f,this.element),this._toggleEventListeners(!0)}get name(){return u}dispose(){this._toggleEventListeners(),super.dispose()}}o(i,"selector",L),o(i,"init",b),o(i,"getInstance",$);module.exports=i; +"use strict";var C=Object.defineProperty;var g=(s,t,e)=>t in s?C(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var o=(s,t,e)=>g(s,typeof t!="symbol"?t+"":t,e);const n=require("@thednp/shorty"),a=require("@thednp/event-listener"),E=require("./fadeClass-Co6nOzNJ.js"),l=require("./showClass-D_Ms1FgG.js"),p=require("./dataBsDismiss-CMHF7If_.js"),q=require("./base-component-DBcDoOjV.js"),r="alert",u="Alert",L=`.${r}`,f=`[${p.dataBsDismiss}="${r}"]`,$=s=>n.getInstance(s,u),b=s=>new i(s),d=n.createCustomEvent(`close.bs.${r}`),w=n.createCustomEvent(`closed.bs.${r}`),m=s=>{const{element:t}=s;n.dispatchEvent(t,w),s._toggleEventListeners(),s.dispose(),t.remove()};class i extends q.BaseComponent{constructor(e){super(e);o(this,"dismiss");o(this,"close",()=>{const{element:e}=this;// istanbul ignore else @preserve +e&&n.hasClass(e,l.showClass)&&(n.dispatchEvent(e,d),d.defaultPrevented||(n.removeClass(e,l.showClass),n.hasClass(e,E.fadeClass)?n.emulateTransitionEnd(e,()=>m(this)):m(this)))});o(this,"_toggleEventListeners",e=>{const h=e?a.addListener:a.removeListener,{dismiss:c,close:v}=this;// istanbul ignore else @preserve +c&&h(c,n.mouseclickEvent,v)});this.dismiss=n.querySelector(f,this.element),this._toggleEventListeners(!0)}get name(){return u}dispose(){this._toggleEventListeners(),super.dispose()}}o(i,"selector",L),o(i,"init",b),o(i,"getInstance",$);module.exports=i; //# sourceMappingURL=alert.cjs.map diff --git a/dist/components/alert.cjs.map b/dist/components/alert.cjs.map index 274bb62c..45555447 100644 --- a/dist/components/alert.cjs.map +++ b/dist/components/alert.cjs.map @@ -1 +1 @@ -{"version":3,"file":"alert.cjs","sources":["../../src/strings/alertString.ts","../../src/strings/alertComponent.ts","../../src/components/alert.ts"],"sourcesContent":["/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["alertString","alertComponent","alertSelector","alertDismissSelector","dataBsDismiss","getAlertInstance","element","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","BaseComponent","target","__publicField","hasClass","showClass","removeClass","fadeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","querySelector"],"mappings":"oZACMA,EAAc,QCAdC,EAAiB,QCyBjBC,EAAgB,IAAIF,CAAW,GAC/BG,EAAuB,IAAIC,EAAAA,aAAa,KAAKJ,CAAW,KAOxDK,EAAoBC,GAAyBC,EAAA,YAAmBD,EAASL,CAAc,EAKvFO,EAAwBF,GAAyB,IAAIG,EAAMH,CAAO,EAIlEI,EAAkBC,EAAAA,kBAA8B,YAAYX,CAAW,EAAE,EACzEY,EAAmBD,EAAAA,kBAA8B,aAAaX,CAAW,EAAE,EAS3Ea,EAAsBC,GAAgB,CACpC,KAAA,CAAE,QAAAR,CAAY,EAAAQ,EACpBC,gBAAcT,EAASM,CAAgB,EAEvCE,EAAK,sBAAsB,EAC3BA,EAAK,QAAQ,EACbR,EAAQ,OAAO,CACjB,EAKA,MAAqBG,UAAcO,EAAAA,aAAc,CAM/C,YAAYC,EAA8B,CACxC,MAAMA,CAAM,EAHdC,EAAA,gBAwBAA,EAAA,aAAQ,IAAM,CACN,KAAA,CAAE,QAAAZ,CAAY,EAAA,KAGhBA,GAAWa,EAAAA,SAASb,EAASc,EAAS,SAAA,IACxCL,gBAAcT,EAASI,CAAe,EAEjCA,EAAgB,mBACnBW,cAAYf,EAASc,EAAAA,SAAS,EAE1BD,EAAA,SAASb,EAASgB,EAAAA,SAAS,EAC7BC,EAAAA,qBAAqBjB,EAAS,IAAMO,EAAmB,IAAI,CAAC,IACpC,IAAI,GAElC,GAOFK,EAAA,6BAAyBM,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAc,YAAAC,iBAC7B,CAAE,QAAAC,EAAS,MAAAC,CAAU,EAAA,KAEvBD,GAASH,EAAOG,EAASE,EAAA,gBAAiBD,CAAK,CAAA,GA3CnD,KAAK,QAAUE,EAAA,cAAc5B,EAAsB,KAAK,OAAO,EAG/D,KAAK,sBAAsB,EAAI,CACjC,CAGA,IAAI,MAAO,CACF,OAAAF,CACT,CAsCA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CA5DEiB,EADmBT,EACZ,WAAWP,GAClBgB,EAFmBT,EAEZ,OAAOD,GACdU,EAHmBT,EAGZ,cAAcJ"} \ No newline at end of file +{"version":3,"file":"alert.cjs","sources":["../../src/strings/alertString.ts","../../src/strings/alertComponent.ts","../../src/components/alert.ts"],"sourcesContent":["/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["alertString","alertComponent","alertSelector","alertDismissSelector","dataBsDismiss","getAlertInstance","element","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","BaseComponent","target","__publicField","hasClass","showClass","removeClass","fadeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","querySelector"],"mappings":"oZACMA,EAAc,QCAdC,EAAiB,QCyBjBC,EAAgB,IAAIF,CAAW,GAC/BG,EAAuB,IAAIC,EAAAA,aAAa,KAAKJ,CAAW,KAMxDK,EAAoBC,GAAyBC,EAAA,YAAmBD,EAASL,CAAc,EAKvFO,EAAqBF,GAAyB,IAAIG,EAAMH,CAAO,EAI/DI,EAAkBC,EAAAA,kBAAqD,YAAYX,CAAW,EAAE,EAChGY,EAAmBD,EAAAA,kBAAqD,aAAaX,CAAW,EAAE,EASlGa,EAAsBC,GAAgB,CACpC,KAAA,CAAE,QAAAR,CAAY,EAAAQ,EACpBC,gBAAcT,EAASM,CAAgB,EAEvCE,EAAK,sBAAsB,EAC3BA,EAAK,QAAQ,EACbR,EAAQ,OAAO,CACjB,EAKA,MAAqBG,UAAcO,EAAAA,aAAc,CAM/C,YAAYC,EAA8B,CACxC,MAAMA,CAAM,EAHdC,EAAA,gBAwBAA,EAAA,aAAQ,IAAM,CACN,KAAA,CAAE,QAAAZ,CAAY,EAAA,KAAA;AAGhBA,GAAWa,EAAAA,SAASb,EAASc,EAAS,SAAA,IACxCL,gBAAcT,EAASI,CAAe,EAEjCA,EAAgB,mBACnBW,cAAYf,EAASc,EAAAA,SAAS,EAE1BD,EAAA,SAASb,EAASgB,EAAAA,SAAS,EAC7BC,EAAAA,qBAAqBjB,EAAS,IAAMO,EAAmB,IAAI,CAAC,IACpC,IAAI,GAElC,GAOFK,EAAA,6BAAyBM,GAAkB,CACnC,MAAAC,EAASD,EAAME,EAAc,YAAAC,iBAC7B,CAAE,QAAAC,EAAS,MAAAC,CAAU,EAAA,KAAA;AAEvBD,GAASH,EAAOG,EAASE,EAAA,gBAAiBD,CAAK,CAAA,GA3CnD,KAAK,QAAUE,EAAA,cAAc5B,EAAsB,KAAK,OAAO,EAG/D,KAAK,sBAAsB,EAAI,CACjC,CAGA,IAAI,MAAO,CACF,OAAAF,CACT,CAsCA,SAAU,CACR,KAAK,sBAAsB,EAC3B,MAAM,QAAQ,CAChB,CACF,CA5DEiB,EADmBT,EACZ,WAAWP,GAClBgB,EAFmBT,EAEZ,OAAOD,GACdU,EAHmBT,EAGZ,cAAcJ"} \ No newline at end of file diff --git a/dist/components/alert.d.ts b/dist/components/alert.d.ts index cffe5847..a335c8a0 100644 --- a/dist/components/alert.d.ts +++ b/dist/components/alert.d.ts @@ -20,7 +20,7 @@ declare class BaseComponent { /** Creates a new Alert instance. */ declare class Alert extends BaseComponent { static selector: string; - static init: (element: HTMLElement) => T; + static init: (element: HTMLElement) => Alert; static getInstance: (element: HTMLElement) => Alert | null; dismiss: HTMLElement | null; constructor(target: HTMLElement | string); diff --git a/dist/components/alert.mjs b/dist/components/alert.mjs index 86c28a65..651a5d39 100644 --- a/dist/components/alert.mjs +++ b/dist/components/alert.mjs @@ -6,7 +6,7 @@ import { addListener as S, removeListener as _ } from "@thednp/event-listener"; import { f as b } from "./fadeClass-CLIYI_zn.mjs"; import { s as c } from "./showClass-C8hdJfjQ.mjs"; import { d as B } from "./dataBsDismiss-DdNPQYa-.mjs"; -import { B as k } from "./base-component-DvIOojVW.mjs"; +import { B as k } from "./base-component-nXu3wApu.mjs"; const i = "alert", g = "Alert", w = `.${i}`, x = `[${B}="${i}"]`, A = (t) => I(t, g), D = (t) => new n(t), l = d(`close.bs.${i}`), T = d(`closed.bs.${i}`), m = (t) => { const { element: s } = t; p(s, T), t._toggleEventListeners(), t.dispose(), s.remove(); @@ -24,6 +24,7 @@ class n extends k { */ o(this, "close", () => { const { element: e } = this; + // istanbul ignore else @preserve e && a(e, c) && (p(e, l), l.defaultPrevented || (C(e, c), a(e, b) ? L(e, () => m(this)) : m(this))); }); /** @@ -33,6 +34,7 @@ class n extends k { */ o(this, "_toggleEventListeners", (e) => { const v = e ? S : _, { dismiss: r, close: f } = this; + // istanbul ignore else @preserve r && v(r, $, f); }); this.dismiss = E(x, this.element), this._toggleEventListeners(!0); diff --git a/dist/components/alert.mjs.map b/dist/components/alert.mjs.map index cb0384fb..cf18b81d 100644 --- a/dist/components/alert.mjs.map +++ b/dist/components/alert.mjs.map @@ -1 +1 @@ -{"version":3,"file":"alert.mjs","sources":["../../src/strings/alertString.ts","../../src/strings/alertComponent.ts","../../src/components/alert.ts"],"sourcesContent":["/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["alertString","alertComponent","alertSelector","alertDismissSelector","dataBsDismiss","getAlertInstance","element","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","BaseComponent","target","__publicField","hasClass","showClass","removeClass","fadeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","querySelector"],"mappings":";;;;;;;;;AACA,MAAMA,IAAc,SCAdC,IAAiB,SCyBjBC,IAAgB,IAAIF,CAAW,IAC/BG,IAAuB,IAAIC,CAAa,KAAKJ,CAAW,MAOxDK,IAAmB,CAACC,MAAyBC,EAAmBD,GAASL,CAAc,GAKvFO,IAAoB,CAAIF,MAAyB,IAAIG,EAAMH,CAAO,GAIlEI,IAAkBC,EAA8B,YAAYX,CAAW,EAAE,GACzEY,IAAmBD,EAA8B,aAAaX,CAAW,EAAE,GAS3Ea,IAAqB,CAACC,MAAgB;AACpC,QAAA,EAAE,SAAAR,EAAY,IAAAQ;AACpB,EAAAC,EAAcT,GAASM,CAAgB,GAEvCE,EAAK,sBAAsB,GAC3BA,EAAK,QAAQ,GACbR,EAAQ,OAAO;AACjB;AAKA,MAAqBG,UAAcO,EAAc;AAAA,EAM/C,YAAYC,GAA8B;AACxC,UAAMA,CAAM;AAHd,IAAAC,EAAA;AAwBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,EAAA,eAAQ,MAAM;AACN,YAAA,EAAE,SAAAZ,EAAY,IAAA;AAGpB,MAAIA,KAAWa,EAASb,GAASc,CAAS,MACxCL,EAAcT,GAASI,CAAe,GAEjCA,EAAgB,qBACnBW,EAAYf,GAASc,CAAS,GAE1BD,EAASb,GAASgB,CAAS,IAC7BC,EAAqBjB,GAAS,MAAMO,EAAmB,IAAI,CAAC,MACpC,IAAI;AAAA,IAElC;AAOF;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAK,EAAA,+BAAwB,CAACM,MAAkB;AACnC,YAAAC,IAASD,IAAME,IAAcC,GAC7B,EAAE,SAAAC,GAAS,OAAAC,EAAU,IAAA;AAE3B,MAAID,KAASH,EAAOG,GAASE,GAAiBD,CAAK;AAAA,IAAA;AA3CnD,SAAK,UAAUE,EAAc5B,GAAsB,KAAK,OAAO,GAG/D,KAAK,sBAAsB,EAAI;AAAA,EACjC;AAAA;AAAA,EAGA,IAAI,OAAO;AACF,WAAAF;AAAA,EACT;AAAA;AAAA,EAsCA,UAAU;AACR,SAAK,sBAAsB,GAC3B,MAAM,QAAQ;AAAA,EAChB;AACF;AA5DEiB,EADmBT,GACZ,YAAWP,IAClBgB,EAFmBT,GAEZ,QAAOD,IACdU,EAHmBT,GAGZ,eAAcJ;"} \ No newline at end of file +{"version":3,"file":"alert.mjs","sources":["../../src/strings/alertString.ts","../../src/strings/alertComponent.ts","../../src/components/alert.ts"],"sourcesContent":["/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["alertString","alertComponent","alertSelector","alertDismissSelector","dataBsDismiss","getAlertInstance","element","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","BaseComponent","target","__publicField","hasClass","showClass","removeClass","fadeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","querySelector"],"mappings":";;;;;;;;;AACA,MAAMA,IAAc,SCAdC,IAAiB,SCyBjBC,IAAgB,IAAIF,CAAW,IAC/BG,IAAuB,IAAIC,CAAa,KAAKJ,CAAW,MAMxDK,IAAmB,CAACC,MAAyBC,EAAmBD,GAASL,CAAc,GAKvFO,IAAoB,CAACF,MAAyB,IAAIG,EAAMH,CAAO,GAI/DI,IAAkBC,EAAqD,YAAYX,CAAW,EAAE,GAChGY,IAAmBD,EAAqD,aAAaX,CAAW,EAAE,GASlGa,IAAqB,CAACC,MAAgB;AACpC,QAAA,EAAE,SAAAR,EAAY,IAAAQ;AACpB,EAAAC,EAAcT,GAASM,CAAgB,GAEvCE,EAAK,sBAAsB,GAC3BA,EAAK,QAAQ,GACbR,EAAQ,OAAO;AACjB;AAKA,MAAqBG,UAAcO,EAAc;AAAA,EAM/C,YAAYC,GAA8B;AACxC,UAAMA,CAAM;AAHd,IAAAC,EAAA;AAwBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAA,EAAA,eAAQ,MAAM;AACN,YAAA,EAAE,SAAAZ,EAAY,IAAA;AAAA,MAAA;AAGpB,MAAIA,KAAWa,EAASb,GAASc,CAAS,MACxCL,EAAcT,GAASI,CAAe,GAEjCA,EAAgB,qBACnBW,EAAYf,GAASc,CAAS,GAE1BD,EAASb,GAASgB,CAAS,IAC7BC,EAAqBjB,GAAS,MAAMO,EAAmB,IAAI,CAAC,MACpC,IAAI;AAAA,IAElC;AAOF;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAK,EAAA,+BAAwB,CAACM,MAAkB;AACnC,YAAAC,IAASD,IAAME,IAAcC,GAC7B,EAAE,SAAAC,GAAS,OAAAC,EAAU,IAAA;AAAA,MAAA;AAE3B,MAAID,KAASH,EAAOG,GAASE,GAAiBD,CAAK;AAAA,IAAA;AA3CnD,SAAK,UAAUE,EAAc5B,GAAsB,KAAK,OAAO,GAG/D,KAAK,sBAAsB,EAAI;AAAA,EACjC;AAAA;AAAA,EAGA,IAAI,OAAO;AACF,WAAAF;AAAA,EACT;AAAA;AAAA,EAsCA,UAAU;AACR,SAAK,sBAAsB,GAC3B,MAAM,QAAQ;AAAA,EAChB;AACF;AA5DEiB,EADmBT,GACZ,YAAWP,IAClBgB,EAFmBT,GAEZ,QAAOD,IACdU,EAHmBT,GAGZ,eAAcJ;"} \ No newline at end of file diff --git a/dist/components/base-component-DBcDoOjV.js b/dist/components/base-component-DBcDoOjV.js new file mode 100644 index 00000000..7d049e7e --- /dev/null +++ b/dist/components/base-component-DBcDoOjV.js @@ -0,0 +1,4 @@ +"use strict";var l=Object.defineProperty;var h=(n,e,r)=>e in n?l(n,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[e]=r;var i=(n,e,r)=>h(n,typeof e!="symbol"?e+"":e,r);const t=require("@thednp/shorty"),c="5.0.15",m=c;class u{constructor(e,r){i(this,"_toggleEventListeners",()=>{});let s;try{if(t.isHTMLElement(e))s=e;else if(t.isString(e)){s=t.querySelector(e);// istanbul ignore else @preserve +if(!s)throw Error(`"${e}" is not a valid selector.`)}else throw Error("your target is not an instance of HTMLElement.")}catch(a){throw Error(`${this.name} Error: ${a.message}`)}const o=t.Data.get(s,this.name);// istanbul ignore else @preserve +o&&o._toggleEventListeners(),this.element=s,this.options=this.defaults&&t.ObjectKeys(this.defaults).length?t.normalizeOptions(s,this.defaults,r||{},"bs"):{},t.Data.set(s,this.name,this)}get version(){return m}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){t.Data.remove(this.element,this.name),t.ObjectKeys(this).forEach(e=>{delete this[e]})}}exports.BaseComponent=u; +//# sourceMappingURL=base-component-DBcDoOjV.js.map diff --git a/dist/components/base-component-DBcDoOjV.js.map b/dist/components/base-component-DBcDoOjV.js.map new file mode 100644 index 00000000..b9152923 --- /dev/null +++ b/dist/components/base-component-DBcDoOjV.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base-component-DBcDoOjV.js","sources":["../../src/version.ts","../../src/components/base-component.ts"],"sourcesContent":["import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n"],"names":["Version","version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","e","prevInstance","Data","ObjectKeys","normalizeOptions","prop"],"mappings":"8NAEMA,EAAUC,ECMhB,MAAqBC,CAAc,CAQjC,YAAYC,EAA8BC,EAAsB,CAoDhEC,EAAA,6BAAwB,IAAM,CAAA,GAnDxB,IAAAC,EAEA,GAAA,CACE,GAAAC,EAAAA,cAAcJ,CAAM,EACZG,EAAAH,UACDK,EAAAA,SAASL,CAAM,EAAG,CAC3BG,EAAUG,EAAAA,cAA2BN,CAAM,EAAA;AAE3C,GAAI,CAACG,EAAS,MAAM,MAAM,IAAIH,CAAM,4BAA4B,CAAA,KAEhE,OAAM,MAAM,gDAAgD,QAEvDO,EAAG,CACV,MAAM,MAAM,GAAG,KAAK,IAAI,WAAYA,EAAY,OAAO,EAAE,CAC3D,CAEA,MAAMC,EAAeC,EAAAA,KAAK,IAAiBN,EAAS,KAAK,IAAI,EAAA;AAEzDK,GAGFA,EAAa,sBAAsB,EAGrC,KAAK,QAAUL,EACf,KAAK,QACH,KAAK,UAAYO,EAAA,WAAW,KAAK,QAAQ,EAAE,OACvCC,EAAA,iBAAiBR,EAAS,KAAK,SAAUF,GAAU,GAAI,IAAI,EAE3D,CAAC,EAEPQ,EAAA,KAAK,IAAIN,EAAS,KAAK,KAAM,IAAI,CACnC,CAGA,IAAI,SAAU,CACL,OAAAN,CACT,CAGA,IAAI,MAAO,CACF,MAAA,eACT,CAGA,IAAI,UAAW,CACb,MAAO,EACT,CASA,SAAU,CACRY,EAAA,KAAK,OAAoB,KAAK,QAAS,KAAK,IAAI,EACrCC,EAAAA,WAAA,IAAI,EAAE,QAAgBE,GAAA,CAC/B,OAAO,KAAKA,CAAI,CAAA,CACjB,CACH,CACF"} \ No newline at end of file diff --git a/dist/components/base-component-DvIOojVW.mjs b/dist/components/base-component-DvIOojVW.mjs deleted file mode 100644 index 166395d3..00000000 --- a/dist/components/base-component-DvIOojVW.mjs +++ /dev/null @@ -1,43 +0,0 @@ -var h = Object.defineProperty; -var l = (t, e, s) => e in t ? h(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s; -var i = (t, e, s) => l(t, typeof e != "symbol" ? e + "" : e, s); -import { querySelector as m, isString as c, Data as r, ObjectKeys as a, normalizeOptions as f } from "@thednp/shorty"; -const u = "5.0.14", g = u; -class d { - /** - * @param target `HTMLElement` or selector string - * @param config component instance options - */ - constructor(e, s) { - /** just to have something to extend from */ - i(this, "_toggleEventListeners", () => { - }); - const n = m(e); - if (!n) - throw c(e) ? Error(`${this.name} Error: "${e}" is not a valid selector.`) : Error(`${this.name} Error: your target is not an instance of HTMLElement.`); - const o = r.get(n, this.name); - o && o._toggleEventListeners(), this.element = n, this.options = this.defaults && a(this.defaults).length ? f(n, this.defaults, s || {}, "bs") : {}, r.set(n, this.name, this); - } - /* istanbul ignore next */ - get version() { - return g; - } - /* istanbul ignore next */ - get name() { - return "BaseComponent"; - } - /* istanbul ignore next */ - get defaults() { - return {}; - } - /** Removes component from target element. */ - dispose() { - r.remove(this.element, this.name), a(this).forEach((e) => { - delete this[e]; - }); - } -} -export { - d as B -}; -//# sourceMappingURL=base-component-DvIOojVW.mjs.map diff --git a/dist/components/base-component-DvIOojVW.mjs.map b/dist/components/base-component-DvIOojVW.mjs.map deleted file mode 100644 index d1af5193..00000000 --- a/dist/components/base-component-DvIOojVW.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base-component-DvIOojVW.mjs","sources":["../../src/version.ts","../../src/components/base-component.ts"],"sourcesContent":["import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n"],"names":["Version","version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop"],"mappings":";;;;oBAEMA,IAAUC;ACMhB,MAAqBC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC,YAAYC,GAA8BC,GAAsB;AA4ChE;AAAA,IAAAC,EAAA,+BAAwB,MAAM;AAAA,IAAA;AA3CtB,UAAAC,IAAUC,EAAcJ,CAAM;AAEpC,QAAI,CAACG;AACC,YAAAE,EAASL,CAAM,IACX,MAAM,GAAG,KAAK,IAAI,YAAYA,CAAM,4BAA4B,IAEhE,MAAM,GAAG,KAAK,IAAI,wDAAwD;AAIpF,UAAMM,IAAeC,EAAK,IAAiBJ,GAAS,KAAK,IAAI;AAE7D,IAAIG,KAGFA,EAAa,sBAAsB,GAGrC,KAAK,UAAUH,GACf,KAAK,UACH,KAAK,YAAYK,EAAW,KAAK,QAAQ,EAAE,SACvCC,EAAiBN,GAAS,KAAK,UAAUF,KAAU,IAAI,IAAI,IAC3D,IAENM,EAAK,IAAIJ,GAAS,KAAK,MAAM,IAAI;AAAA,EACnC;AAAA;AAAA,EAGA,IAAI,UAAU;AACL,WAAAN;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,OAAO;AACF,WAAA;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO;EACT;AAAA;AAAA,EAQA,UAAU;AACR,IAAAU,EAAK,OAAoB,KAAK,SAAS,KAAK,IAAI,GACrCC,EAAA,IAAI,EAAE,QAAQ,CAAQE,MAAA;AAC/B,aAAO,KAAKA,CAAI;AAAA,IAAA,CACjB;AAAA,EACH;AACF;"} \ No newline at end of file diff --git a/dist/components/base-component-j_bwTL_x.js b/dist/components/base-component-j_bwTL_x.js deleted file mode 100644 index de34d156..00000000 --- a/dist/components/base-component-j_bwTL_x.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";var a=Object.defineProperty;var h=(s,e,n)=>e in s?a(s,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):s[e]=n;var i=(s,e,n)=>h(s,typeof e!="symbol"?e+"":e,n);const t=require("@thednp/shorty"),l="5.0.14",c=l;class m{constructor(e,n){i(this,"_toggleEventListeners",()=>{});const r=t.querySelector(e);if(!r)throw t.isString(e)?Error(`${this.name} Error: "${e}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=t.Data.get(r,this.name);o&&o._toggleEventListeners(),this.element=r,this.options=this.defaults&&t.ObjectKeys(this.defaults).length?t.normalizeOptions(r,this.defaults,n||{},"bs"):{},t.Data.set(r,this.name,this)}get version(){return c}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){t.Data.remove(this.element,this.name),t.ObjectKeys(this).forEach(e=>{delete this[e]})}}exports.BaseComponent=m; -//# sourceMappingURL=base-component-j_bwTL_x.js.map diff --git a/dist/components/base-component-j_bwTL_x.js.map b/dist/components/base-component-j_bwTL_x.js.map deleted file mode 100644 index 8b49aa79..00000000 --- a/dist/components/base-component-j_bwTL_x.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base-component-j_bwTL_x.js","sources":["../../src/version.ts","../../src/components/base-component.ts"],"sourcesContent":["import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n"],"names":["Version","version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop"],"mappings":"8NAEMA,EAAUC,ECMhB,MAAqBC,CAAc,CAQjC,YAAYC,EAA8BC,EAAsB,CA4ChEC,EAAA,6BAAwB,IAAM,CAAA,GA3CtB,MAAAC,EAAUC,gBAAcJ,CAAM,EAEpC,GAAI,CAACG,EACC,MAAAE,EAAAA,SAASL,CAAM,EACX,MAAM,GAAG,KAAK,IAAI,YAAYA,CAAM,4BAA4B,EAEhE,MAAM,GAAG,KAAK,IAAI,wDAAwD,EAIpF,MAAMM,EAAeC,EAAAA,KAAK,IAAiBJ,EAAS,KAAK,IAAI,EAEzDG,GAGFA,EAAa,sBAAsB,EAGrC,KAAK,QAAUH,EACf,KAAK,QACH,KAAK,UAAYK,EAAAA,WAAW,KAAK,QAAQ,EAAE,OACvCC,EAAAA,iBAAiBN,EAAS,KAAK,SAAUF,GAAU,GAAI,IAAI,EAC3D,GAENM,EAAA,KAAK,IAAIJ,EAAS,KAAK,KAAM,IAAI,CACnC,CAGA,IAAI,SAAU,CACL,OAAAN,CACT,CAGA,IAAI,MAAO,CACF,MAAA,eACT,CAGA,IAAI,UAAW,CACb,MAAO,EACT,CAQA,SAAU,CACRU,EAAA,KAAK,OAAoB,KAAK,QAAS,KAAK,IAAI,EACrCC,EAAAA,WAAA,IAAI,EAAE,QAAgBE,GAAA,CAC/B,OAAO,KAAKA,CAAI,CAAA,CACjB,CACH,CACF"} \ No newline at end of file diff --git a/dist/components/base-component-nXu3wApu.mjs b/dist/components/base-component-nXu3wApu.mjs new file mode 100644 index 00000000..9fe8047b --- /dev/null +++ b/dist/components/base-component-nXu3wApu.mjs @@ -0,0 +1,58 @@ +var h = Object.defineProperty; +var m = (s, e, n) => e in s ? h(s, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : s[e] = n; +var i = (s, e, n) => m(s, typeof e != "symbol" ? e + "" : e, n); +import { isHTMLElement as c, isString as f, querySelector as u, Data as r, ObjectKeys as a, normalizeOptions as E } from "@thednp/shorty"; +const g = "5.0.15", p = g; +class y { + /** + * @param target `HTMLElement` or selector string + * @param config component instance options + */ + constructor(e, n) { + /** just to have something to extend from */ + // istanbul ignore next @preserve coverage wise this isn't important + i(this, "_toggleEventListeners", () => { + }); + let t; + try { + if (c(e)) + t = e; + else if (f(e)) { + t = u(e); + // istanbul ignore else @preserve + if (!t) throw Error(`"${e}" is not a valid selector.`); + } else + throw Error("your target is not an instance of HTMLElement."); + } catch (l) { + throw Error(`${this.name} Error: ${l.message}`); + } + const o = r.get(t, this.name); + // istanbul ignore else @preserve + o && o._toggleEventListeners(), this.element = t, this.options = this.defaults && a(this.defaults).length ? E(t, this.defaults, n || {}, "bs") : ( + // istanbul ignore next @preserve + {} + ), r.set(t, this.name, this); + } + // istanbul ignore next @preserve + get version() { + return p; + } + // istanbul ignore next @preserve + get name() { + return "BaseComponent"; + } + // istanbul ignore next @preserve + get defaults() { + return {}; + } + /** Removes component from target element. */ + dispose() { + r.remove(this.element, this.name), a(this).forEach((e) => { + delete this[e]; + }); + } +} +export { + y as B +}; +//# sourceMappingURL=base-component-nXu3wApu.mjs.map diff --git a/dist/components/base-component-nXu3wApu.mjs.map b/dist/components/base-component-nXu3wApu.mjs.map new file mode 100644 index 00000000..c47faa6f --- /dev/null +++ b/dist/components/base-component-nXu3wApu.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"base-component-nXu3wApu.mjs","sources":["../../src/version.ts","../../src/components/base-component.ts"],"sourcesContent":["import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n"],"names":["Version","version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","e","prevInstance","Data","ObjectKeys","normalizeOptions","prop"],"mappings":";;;;oBAEMA,IAAUC;ACMhB,MAAqBC,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC,YAAYC,GAA8BC,GAAsB;AAoDhE;AAAA;AAAA,IAAAC,EAAA,+BAAwB,MAAM;AAAA,IAAA;AAnDxB,QAAAC;AAEA,QAAA;AACE,UAAAC,EAAcJ,CAAM;AACZ,QAAAG,IAAAH;AAAA,eACDK,EAASL,CAAM,GAAG;AAC3B,QAAAG,IAAUG,EAA2BN,CAAM;AAAA,QAAA;AAE3C,YAAI,CAACG,EAAS,OAAM,MAAM,IAAIH,CAAM,4BAA4B;AAAA,MAAA;AAEhE,cAAM,MAAM,gDAAgD;AAAA,aAEvDO,GAAG;AACV,YAAM,MAAM,GAAG,KAAK,IAAI,WAAYA,EAAY,OAAO,EAAE;AAAA,IAC3D;AAEA,UAAMC,IAAeC,EAAK,IAAiBN,GAAS,KAAK,IAAI;AAAA,IAAA;AAE7D,IAAIK,KAGFA,EAAa,sBAAsB,GAGrC,KAAK,UAAUL,GACf,KAAK,UACH,KAAK,YAAYO,EAAW,KAAK,QAAQ,EAAE,SACvCC,EAAiBR,GAAS,KAAK,UAAUF,KAAU,IAAI,IAAI;AAAA;AAAA,MAE3D,CAAC;AAAA,OAEPQ,EAAK,IAAIN,GAAS,KAAK,MAAM,IAAI;AAAA,EACnC;AAAA;AAAA,EAGA,IAAI,UAAU;AACL,WAAAN;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,OAAO;AACF,WAAA;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO;EACT;AAAA;AAAA,EASA,UAAU;AACR,IAAAY,EAAK,OAAoB,KAAK,SAAS,KAAK,IAAI,GACrCC,EAAA,IAAI,EAAE,QAAQ,CAAQE,MAAA;AAC/B,aAAO,KAAKA,CAAI;AAAA,IAAA,CACjB;AAAA,EACH;AACF;"} \ No newline at end of file diff --git a/dist/components/button.cjs b/dist/components/button.cjs index bbca6948..5f1a490c 100644 --- a/dist/components/button.cjs +++ b/dist/components/button.cjs @@ -1,2 +1,2 @@ -"use strict";var g=Object.defineProperty;var v=(s,n,e)=>n in s?g(s,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[n]=e;var a=(s,n,e)=>v(s,typeof n!="symbol"?n+"":n,e);const t=require("@thednp/shorty"),l=require("@thednp/event-listener"),c=require("./activeClass-CxJYQAGN.js"),d=require("./dataBsToggle-Dj-Ng54N.js"),h=require("./base-component-j_bwTL_x.js"),C="button",u="Button",b=`[${d.dataBsToggle}="${C}"]`,m=s=>t.getInstance(s,u),p=s=>new o(s);class o extends h.BaseComponent{constructor(e){super(e);a(this,"isActive",!1);a(this,"toggle",e=>{e&&e.preventDefault();const{element:i,isActive:r}=this;!t.hasClass(i,"disabled")&&!t.getAttribute(i,"disabled")&&((r?t.removeClass:t.addClass)(i,c.activeClass),t.setAttribute(i,t.ariaPressed,r?"false":"true"),this.isActive=t.hasClass(i,c.activeClass))});a(this,"_toggleEventListeners",e=>{(e?l.addListener:l.removeListener)(this.element,t.mouseclickEvent,this.toggle)});const{element:i}=this;this.isActive=t.hasClass(i,c.activeClass),t.setAttribute(i,t.ariaPressed,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return u}dispose(){this._toggleEventListeners(),super.dispose()}}a(o,"selector",b),a(o,"init",p),a(o,"getInstance",m);module.exports=o; +"use strict";var g=Object.defineProperty;var v=(s,n,e)=>n in s?g(s,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[n]=e;var a=(s,n,e)=>v(s,typeof n!="symbol"?n+"":n,e);const t=require("@thednp/shorty"),l=require("@thednp/event-listener"),c=require("./activeClass-CxJYQAGN.js"),d=require("./dataBsToggle-Dj-Ng54N.js"),h=require("./base-component-DBcDoOjV.js"),C="button",u="Button",b=`[${d.dataBsToggle}="${C}"]`,m=s=>t.getInstance(s,u),p=s=>new o(s);class o extends h.BaseComponent{constructor(e){super(e);a(this,"isActive",!1);a(this,"toggle",e=>{e&&e.preventDefault();const{element:i,isActive:r}=this;!t.hasClass(i,"disabled")&&!t.getAttribute(i,"disabled")&&((r?t.removeClass:t.addClass)(i,c.activeClass),t.setAttribute(i,t.ariaPressed,r?"false":"true"),this.isActive=t.hasClass(i,c.activeClass))});a(this,"_toggleEventListeners",e=>{(e?l.addListener:l.removeListener)(this.element,t.mouseclickEvent,this.toggle)});const{element:i}=this;this.isActive=t.hasClass(i,c.activeClass),t.setAttribute(i,t.ariaPressed,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return u}dispose(){this._toggleEventListeners(),super.dispose()}}a(o,"selector",b),a(o,"init",p),a(o,"getInstance",m);module.exports=o; //# sourceMappingURL=button.cjs.map diff --git a/dist/components/button.cjs.map b/dist/components/button.cjs.map index 40f9e579..afdcffef 100644 --- a/dist/components/button.cjs.map +++ b/dist/components/button.cjs.map @@ -1 +1 @@ -{"version":3,"file":"button.cjs","sources":["../../src/strings/buttonString.ts","../../src/strings/buttonComponent.ts","../../src/components/button.ts"],"sourcesContent":["/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n getInstance,\n removeClass,\n hasClass,\n addClass,\n setAttribute,\n mouseclickEvent,\n ariaPressed,\n getAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance'}),b=t=>r.getInstance(t,e.popoverComponent),m=t=>new i(t);class i extends e.Tooltip{constructor(o,p){super(o,p);n(this,"show",()=>{super.show();const{options:o,btn:p}=this;o.dismissible&&p&&setTimeout(()=>r.focus(p),17)})}get name(){return e.popoverComponent}get defaults(){return g}}n(i,"selector",u),n(i,"init",m),n(i,"getInstance",b),n(i,"styleTip",e.styleTip);module.exports=i; +"use strict";var a=Object.defineProperty;var c=(t,s,o)=>s in t?a(t,s,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[s]=o;var n=(t,s,o)=>c(t,typeof s!="symbol"?s+"":s,o);const r=require("@thednp/shorty"),l=require("./dataBsToggle-Dj-Ng54N.js"),e=require("./tooltip-kta4uOnb.js"),u=`[${l.dataBsToggle}="${e.popoverString}"],[data-tip="${e.popoverString}"]`,g=r.ObjectAssign({},e.tooltipDefaults,{template:e.getTipTemplate(e.popoverString),content:"",dismissible:!1,btnClose:''}),b=t=>r.getInstance(t,e.popoverComponent),m=t=>new i(t);class i extends e.Tooltip{constructor(o,p){super(o,p);n(this,"show",()=>{super.show();const{options:o,btn:p}=this;// istanbul ignore else @preserve +o.dismissible&&p&&setTimeout(()=>r.focus(p),17)})}get name(){return e.popoverComponent}get defaults(){return g}}n(i,"selector",u),n(i,"init",m),n(i,"getInstance",b),n(i,"styleTip",e.styleTip);module.exports=i; //# sourceMappingURL=popover.cjs.map diff --git a/dist/components/popover.cjs.map b/dist/components/popover.cjs.map index a1c3a0f2..afac947a 100644 --- a/dist/components/popover.cjs.map +++ b/dist/components/popover.cjs.map @@ -1 +1 @@ -{"version":3,"file":"popover.cjs","sources":["../../src/components/popover.ts"],"sourcesContent":["/* Native JavaScript for Bootstrap 5 | Popover\n---------------------------------------------- */\nimport { getInstance, ObjectAssign, focus } from '@thednp/shorty';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\n\nimport getTipTemplate from '../util/getTipTemplate';\nimport styleTip from '../util/styleTip';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport Tooltip from './tooltip';\n\nimport type { PopoverOptions /* , PopoverEvent */ } from '../interface/popover';\n\n// POPOVER PRIVATE GC\n// ==================\nconst popoverSelector = `[${dataBsToggle}=\"${popoverString}\"],[data-tip=\"${popoverString}\"]`;\n\nconst popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, {\n template: getTipTemplate(popoverString),\n content: '',\n dismissible: false,\n btnClose: '',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n"],"names":["popoverSelector","dataBsToggle","popoverString","popoverDefaults","ObjectAssign","tooltipDefaults","getTipTemplate","getPopoverInstance","element","getInstance","popoverComponent","popoverInitCallback","Popover","Tooltip","target","config","__publicField","options","btn","focus","styleTip"],"mappings":"8RAiBMA,EAAkB,IAAIC,cAAY,KAAKC,EAAAA,aAAa,iBAAiBA,eAAa,KAElFC,EAAkCC,EAAAA,aAAa,CAAC,EAAGC,kBAAiB,CACxE,SAAUC,iBAAeJ,eAAa,EACtC,QAAS,GACT,YAAa,GACb,SAAU,wDACZ,CAAC,EAOKK,EAAsBC,GAAyBC,EAAA,YAAqBD,EAASE,EAAgB,gBAAA,EAK7FC,EAAuBH,GAAyB,IAAII,EAAQJ,CAAO,EAKzE,MAAqBI,UAAgBC,EAAAA,OAAQ,CAW3C,YAAYC,EAA8BC,EAAkC,CAC1E,MAAMD,EAAQC,CAAM,EAgBtBC,EAAA,YAAO,IAAM,CACX,MAAM,KAAK,EAEL,KAAA,CAAE,QAAAC,EAAS,IAAAC,CAAQ,EAAA,KAErBD,EAAQ,aAAeC,GAAK,WAAW,IAAMC,QAAMD,CAAG,EAAG,EAAE,CAAA,EApBjE,CAIA,IAAI,MAAO,CACF,OAAAR,kBACT,CAIA,IAAI,UAAW,CACN,OAAAP,CACT,CAUF,CAlCEa,EADmBJ,EACZ,WAAWZ,GAClBgB,EAFmBJ,EAEZ,OAAOD,GACdK,EAHmBJ,EAGZ,cAAcL,GACrBS,EAJmBJ,EAIZ,WAAWQ,EAAAA"} \ No newline at end of file +{"version":3,"file":"popover.cjs","sources":["../../src/components/popover.ts"],"sourcesContent":["/* Native JavaScript for Bootstrap 5 | Popover\n---------------------------------------------- */\nimport { focus, getInstance, ObjectAssign } from '@thednp/shorty';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\n\nimport getTipTemplate from '../util/getTipTemplate';\nimport styleTip from '../util/styleTip';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport Tooltip from './tooltip';\n\nimport type { PopoverOptions /* , PopoverEvent */ } from '../interface/popover';\n\n// POPOVER PRIVATE GC\n// ==================\nconst popoverSelector = `[${dataBsToggle}=\"${popoverString}\"],[data-tip=\"${popoverString}\"]`;\n\nconst popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, {\n template: getTipTemplate(popoverString),\n content: '',\n dismissible: false,\n btnClose: '',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n"],"names":["popoverSelector","dataBsToggle","popoverString","popoverDefaults","ObjectAssign","tooltipDefaults","getTipTemplate","getPopoverInstance","element","getInstance","popoverComponent","popoverInitCallback","Popover","Tooltip","target","config","__publicField","options","btn","focus","styleTip"],"mappings":"8RAiBMA,EAAkB,IAAIC,cAAY,KAAKC,EAAAA,aAAa,iBAAiBA,eAAa,KAElFC,EAAkCC,EAAAA,aAAa,CAAC,EAAGC,kBAAiB,CACxE,SAAUC,iBAAeJ,eAAa,EACtC,QAAS,GACT,YAAa,GACb,SAAU,wDACZ,CAAC,EAMKK,EAAsBC,GAAyBC,EAAA,YAAqBD,EAASE,EAAgB,gBAAA,EAK7FC,EAAuBH,GAAyB,IAAII,EAAQJ,CAAO,EAKzE,MAAqBI,UAAgBC,EAAAA,OAAQ,CAW3C,YAAYC,EAA8BC,EAAkC,CAC1E,MAAMD,EAAQC,CAAM,EAgBtBC,EAAA,YAAO,IAAM,CACX,MAAM,KAAK,EAEL,KAAA,CAAE,QAAAC,EAAS,IAAAC,CAAQ,EAAA,KAAA;AAErBD,EAAQ,aAAeC,GAAK,WAAW,IAAMC,QAAMD,CAAG,EAAG,EAAE,CAAA,EApBjE,CAIA,IAAI,MAAO,CACF,OAAAR,kBACT,CAIA,IAAI,UAAW,CACN,OAAAP,CACT,CAUF,CAlCEa,EADmBJ,EACZ,WAAWZ,GAClBgB,EAFmBJ,EAEZ,OAAOD,GACdK,EAHmBJ,EAGZ,cAAcL,GACrBS,EAJmBJ,EAIZ,WAAWQ,EAAAA"} \ No newline at end of file diff --git a/dist/components/popover.mjs b/dist/components/popover.mjs index 33acf543..6dd6ffff 100644 --- a/dist/components/popover.mjs +++ b/dist/components/popover.mjs @@ -3,7 +3,7 @@ var c = (t, s, e) => s in t ? p(t, s, { enumerable: !0, configurable: !0, writab var o = (t, s, e) => c(t, typeof s != "symbol" ? s + "" : s, e); import { ObjectAssign as r, focus as m, getInstance as u } from "@thednp/shorty"; import { d as g } from "./dataBsToggle-B84TS15h.mjs"; -import { t as b, g as f, T as d, s as T, p as l, a as i } from "./tooltip-BuF2bDNc.mjs"; +import { t as b, g as f, T as d, s as T, p as l, a as i } from "./tooltip-B1BCkN2D.mjs"; const C = `[${g}="${i}"],[data-tip="${i}"]`, I = r({}, b, { template: f(i), content: "", @@ -21,6 +21,7 @@ class a extends d { o(this, "show", () => { super.show(); const { options: e, btn: n } = this; + // istanbul ignore else @preserve e.dismissible && n && setTimeout(() => m(n), 17); }); } diff --git a/dist/components/popover.mjs.map b/dist/components/popover.mjs.map index 014c6e39..77523141 100644 --- a/dist/components/popover.mjs.map +++ b/dist/components/popover.mjs.map @@ -1 +1 @@ -{"version":3,"file":"popover.mjs","sources":["../../src/components/popover.ts"],"sourcesContent":["/* Native JavaScript for Bootstrap 5 | Popover\n---------------------------------------------- */\nimport { getInstance, ObjectAssign, focus } from '@thednp/shorty';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\n\nimport getTipTemplate from '../util/getTipTemplate';\nimport styleTip from '../util/styleTip';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport Tooltip from './tooltip';\n\nimport type { PopoverOptions /* , PopoverEvent */ } from '../interface/popover';\n\n// POPOVER PRIVATE GC\n// ==================\nconst popoverSelector = `[${dataBsToggle}=\"${popoverString}\"],[data-tip=\"${popoverString}\"]`;\n\nconst popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, {\n template: getTipTemplate(popoverString),\n content: '',\n dismissible: false,\n btnClose: '',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n"],"names":["popoverSelector","dataBsToggle","popoverString","popoverDefaults","ObjectAssign","tooltipDefaults","getTipTemplate","getPopoverInstance","element","getInstance","popoverComponent","popoverInitCallback","Popover","Tooltip","target","config","__publicField","options","btn","focus","styleTip"],"mappings":";;;;;;AAiBA,MAAMA,IAAkB,IAAIC,CAAY,KAAKC,CAAa,iBAAiBA,CAAa,MAElFC,IAAkCC,EAAa,CAAC,GAAGC,GAAiB;AAAA,EACxE,UAAUC,EAAeJ,CAAa;AAAA,EACtC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,GAOKK,IAAqB,CAACC,MAAyBC,EAAqBD,GAASE,CAAgB,GAK7FC,IAAsB,CAACH,MAAyB,IAAII,EAAQJ,CAAO;AAKzE,MAAqBI,UAAgBC,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAW3C,YAAYC,GAA8BC,GAAkC;AAC1E,UAAMD,GAAQC,CAAM;AAgBtB;AAAA,IAAAC,EAAA,cAAO,MAAM;AACX,YAAM,KAAK;AAEL,YAAA,EAAE,SAAAC,GAAS,KAAAC,EAAQ,IAAA;AAErB,MAAAD,EAAQ,eAAeC,KAAK,WAAW,MAAMC,EAAMD,CAAG,GAAG,EAAE;AAAA,IAAA;AAAA,EApBjE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACF,WAAAR;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW;AACN,WAAAP;AAAA,EACT;AAUF;AAlCEa,EADmBJ,GACZ,YAAWZ,IAClBgB,EAFmBJ,GAEZ,QAAOD,IACdK,EAHmBJ,GAGZ,eAAcL,IACrBS,EAJmBJ,GAIZ,YAAWQ;"} \ No newline at end of file +{"version":3,"file":"popover.mjs","sources":["../../src/components/popover.ts"],"sourcesContent":["/* Native JavaScript for Bootstrap 5 | Popover\n---------------------------------------------- */\nimport { focus, getInstance, ObjectAssign } from '@thednp/shorty';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\n\nimport getTipTemplate from '../util/getTipTemplate';\nimport styleTip from '../util/styleTip';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport Tooltip from './tooltip';\n\nimport type { PopoverOptions /* , PopoverEvent */ } from '../interface/popover';\n\n// POPOVER PRIVATE GC\n// ==================\nconst popoverSelector = `[${dataBsToggle}=\"${popoverString}\"],[data-tip=\"${popoverString}\"]`;\n\nconst popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, {\n template: getTipTemplate(popoverString),\n content: '',\n dismissible: false,\n btnClose: '',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n"],"names":["popoverSelector","dataBsToggle","popoverString","popoverDefaults","ObjectAssign","tooltipDefaults","getTipTemplate","getPopoverInstance","element","getInstance","popoverComponent","popoverInitCallback","Popover","Tooltip","target","config","__publicField","options","btn","focus","styleTip"],"mappings":";;;;;;AAiBA,MAAMA,IAAkB,IAAIC,CAAY,KAAKC,CAAa,iBAAiBA,CAAa,MAElFC,IAAkCC,EAAa,CAAC,GAAGC,GAAiB;AAAA,EACxE,UAAUC,EAAeJ,CAAa;AAAA,EACtC,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,GAMKK,IAAqB,CAACC,MAAyBC,EAAqBD,GAASE,CAAgB,GAK7FC,IAAsB,CAACH,MAAyB,IAAII,EAAQJ,CAAO;AAKzE,MAAqBI,UAAgBC,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,EAW3C,YAAYC,GAA8BC,GAAkC;AAC1E,UAAMD,GAAQC,CAAM;AAgBtB;AAAA,IAAAC,EAAA,cAAO,MAAM;AACX,YAAM,KAAK;AAEL,YAAA,EAAE,SAAAC,GAAS,KAAAC,EAAQ,IAAA;AAAA,MAAA;AAErB,MAAAD,EAAQ,eAAeC,KAAK,WAAW,MAAMC,EAAMD,CAAG,GAAG,EAAE;AAAA,IAAA;AAAA,EApBjE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACF,WAAAR;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW;AACN,WAAAP;AAAA,EACT;AAUF;AAlCEa,EADmBJ,GACZ,YAAWZ,IAClBgB,EAFmBJ,GAEZ,QAAOD,IACdK,EAHmBJ,GAGZ,eAAcL,IACrBS,EAJmBJ,GAIZ,YAAWQ;"} \ No newline at end of file diff --git a/dist/components/popupContainer-C6AuDE5e.mjs b/dist/components/popupContainer-BitC465I.mjs similarity index 69% rename from dist/components/popupContainer-C6AuDE5e.mjs rename to dist/components/popupContainer-BitC465I.mjs index 0a7ccf36..75432ce4 100644 --- a/dist/components/popupContainer-C6AuDE5e.mjs +++ b/dist/components/popupContainer-BitC465I.mjs @@ -1,9 +1,14 @@ import { createElement as c, isNode as n, getDocumentBody as f } from "@thednp/shorty"; -const B = "modal", i = "offcanvas", e = c({ tagName: "div", className: "popup-container" }), m = (p, o) => { +const B = "modal", i = "offcanvas", e = c({ + tagName: "div", + className: "popup-container" +}), m = (p, o) => { const s = n(o) && o.nodeName === "BODY", a = n(o) && !s ? o : e, d = s ? o : f(p); + // istanbul ignore else @preserve n(p) && (a === e && d.append(e), a.append(p)); }, v = (p, o) => { const s = n(o) && o.nodeName === "BODY", a = n(o) && !s ? o : e; + // istanbul ignore else @preserve n(p) && (p.remove(), a === e && !e.children.length && e.remove()); }, N = (p, o) => { const s = n(o) && o.nodeName !== "BODY" ? o : e; @@ -16,4 +21,4 @@ export { i as o, v as r }; -//# sourceMappingURL=popupContainer-C6AuDE5e.mjs.map +//# sourceMappingURL=popupContainer-BitC465I.mjs.map diff --git a/dist/components/popupContainer-BitC465I.mjs.map b/dist/components/popupContainer-BitC465I.mjs.map new file mode 100644 index 00000000..7438a0e7 --- /dev/null +++ b/dist/components/popupContainer-BitC465I.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"popupContainer-BitC465I.mjs","sources":["../../src/strings/modalString.ts","../../src/strings/offcanvasString.ts","../../src/util/popupContainer.ts"],"sourcesContent":["/** @type {string} */\nconst modalString = 'modal';\nexport default modalString;\n","/** @type {string} */\nconst offcanvasString = 'offcanvas';\nexport default offcanvasString;\n","import { createElement, getDocumentBody, isNode } from '@thednp/shorty';\n\n// the default container for Modal, Offcanvas, Popover and Tooltip\nconst popupContainer = createElement({\n tagName: 'div',\n className: 'popup-container',\n}) as HTMLElement;\n\nconst appendPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n const BODY = containerIsBody ? customContainer : getDocumentBody(target);\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n if (lookup === popupContainer) {\n BODY.append(popupContainer);\n }\n lookup.append(target);\n }\n};\n\nconst removePopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n target.remove();\n\n if (lookup === popupContainer && !popupContainer.children.length) {\n popupContainer.remove();\n }\n }\n};\n\nconst hasPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const lookup = isNode(customContainer) && customContainer.nodeName !== 'BODY' ? customContainer : popupContainer;\n return isNode(target) && lookup.contains(target);\n};\n\nexport { appendPopup, hasPopup, popupContainer, removePopup };\n"],"names":["modalString","offcanvasString","popupContainer","createElement","appendPopup","target","customContainer","containerIsBody","isNode","lookup","BODY","getDocumentBody","removePopup","hasPopup"],"mappings":";AACA,MAAMA,IAAc,SCAdC,IAAkB,aCElBC,IAAiBC,EAAc;AAAA,EACnC,SAAS;AAAA,EACT,WAAW;AACb,CAAC,GAEKC,IAAc,CAACC,GAAqBC,MAAiC;AACzE,QAAMC,IAAkBC,EAAOF,CAAe,KAAKA,EAAgB,aAAa,QAC1EG,IAASD,EAAOF,CAAe,KAAK,CAACC,IAAkBD,IAAkBJ,GACzEQ,IAAOH,IAAkBD,IAAkBK,EAAgBN,CAAM;AAAA,EAAA;AAGnE,EAAAG,EAAOH,CAAM,MACXI,MAAWP,KACbQ,EAAK,OAAOR,CAAc,GAE5BO,EAAO,OAAOJ,CAAM;AAExB,GAEMO,IAAc,CAACP,GAAqBC,MAAiC;AACzE,QAAMC,IAAkBC,EAAOF,CAAe,KAAKA,EAAgB,aAAa,QAC1EG,IAASD,EAAOF,CAAe,KAAK,CAACC,IAAkBD,IAAkBJ;AAAA,EAAA;AAG3E,EAAAM,EAAOH,CAAM,MACfA,EAAO,OAAO,GAEVI,MAAWP,KAAkB,CAACA,EAAe,SAAS,UACxDA,EAAe,OAAO;AAG5B,GAEMW,IAAW,CAACR,GAAqBC,MAAiC;AACtE,QAAMG,IAASD,EAAOF,CAAe,KAAKA,EAAgB,aAAa,SAASA,IAAkBJ;AAClG,SAAOM,EAAOH,CAAM,KAAKI,EAAO,SAASJ,CAAM;AACjD;"} \ No newline at end of file diff --git a/dist/components/popupContainer-C6AuDE5e.mjs.map b/dist/components/popupContainer-C6AuDE5e.mjs.map deleted file mode 100644 index 8bde89de..00000000 --- a/dist/components/popupContainer-C6AuDE5e.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"popupContainer-C6AuDE5e.mjs","sources":["../../src/strings/modalString.ts","../../src/strings/offcanvasString.ts","../../src/util/popupContainer.ts"],"sourcesContent":["/** @type {string} */\nconst modalString = 'modal';\nexport default modalString;\n","/** @type {string} */\nconst offcanvasString = 'offcanvas';\nexport default offcanvasString;\n","import { getDocumentBody, isNode, createElement } from '@thednp/shorty';\n\n// the default container for Modal, Offcanvas, Popover and Tooltip\nconst popupContainer = createElement({ tagName: 'div', className: 'popup-container' }) as HTMLElement;\n\nconst appendPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n const BODY = containerIsBody ? customContainer : getDocumentBody(target);\n\n if (isNode(target)) {\n if (lookup === popupContainer) {\n BODY.append(popupContainer);\n }\n lookup.append(target);\n }\n};\n\nconst removePopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n\n if (isNode(target)) {\n target.remove();\n\n if (lookup === popupContainer && !popupContainer.children.length) {\n popupContainer.remove();\n }\n }\n};\n\nconst hasPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const lookup = isNode(customContainer) && customContainer.nodeName !== 'BODY' ? customContainer : popupContainer;\n return isNode(target) && lookup.contains(target);\n};\n\nexport { popupContainer, appendPopup, removePopup, hasPopup };\n"],"names":["modalString","offcanvasString","popupContainer","createElement","appendPopup","target","customContainer","containerIsBody","isNode","lookup","BODY","getDocumentBody","removePopup","hasPopup"],"mappings":";AACA,MAAMA,IAAc,SCAdC,IAAkB,aCElBC,IAAiBC,EAAc,EAAE,SAAS,OAAO,WAAW,mBAAmB,GAE/EC,IAAc,CAACC,GAAqBC,MAAiC;AACzE,QAAMC,IAAkBC,EAAOF,CAAe,KAAKA,EAAgB,aAAa,QAC1EG,IAASD,EAAOF,CAAe,KAAK,CAACC,IAAkBD,IAAkBJ,GACzEQ,IAAOH,IAAkBD,IAAkBK,EAAgBN,CAAM;AAEnE,EAAAG,EAAOH,CAAM,MACXI,MAAWP,KACbQ,EAAK,OAAOR,CAAc,GAE5BO,EAAO,OAAOJ,CAAM;AAExB,GAEMO,IAAc,CAACP,GAAqBC,MAAiC;AACzE,QAAMC,IAAkBC,EAAOF,CAAe,KAAKA,EAAgB,aAAa,QAC1EG,IAASD,EAAOF,CAAe,KAAK,CAACC,IAAkBD,IAAkBJ;AAE3E,EAAAM,EAAOH,CAAM,MACfA,EAAO,OAAO,GAEVI,MAAWP,KAAkB,CAACA,EAAe,SAAS,UACxDA,EAAe,OAAO;AAG5B,GAEMW,IAAW,CAACR,GAAqBC,MAAiC;AACtE,QAAMG,IAASD,EAAOF,CAAe,KAAKA,EAAgB,aAAa,SAASA,IAAkBJ;AAClG,SAAOM,EAAOH,CAAM,KAAKI,EAAO,SAASJ,CAAM;AACjD;"} \ No newline at end of file diff --git a/dist/components/popupContainer-DIlSFkzD.js b/dist/components/popupContainer-DIlSFkzD.js new file mode 100644 index 00000000..6145acc1 --- /dev/null +++ b/dist/components/popupContainer-DIlSFkzD.js @@ -0,0 +1,4 @@ +"use strict";const e=require("@thednp/shorty"),i="modal",a="offcanvas",s=e.createElement({tagName:"div",className:"popup-container"}),N=(p,o)=>{const n=e.isNode(o)&&o.nodeName==="BODY",d=e.isNode(o)&&!n?o:s,c=n?o:e.getDocumentBody(p);// istanbul ignore else @preserve +e.isNode(p)&&(d===s&&c.append(s),d.append(p))},f=(p,o)=>{const n=e.isNode(o)&&o.nodeName==="BODY",d=e.isNode(o)&&!n?o:s;// istanbul ignore else @preserve +e.isNode(p)&&(p.remove(),d===s&&!s.children.length&&s.remove())},l=(p,o)=>{const n=e.isNode(o)&&o.nodeName!=="BODY"?o:s;return e.isNode(p)&&n.contains(p)};exports.appendPopup=N;exports.hasPopup=l;exports.modalString=i;exports.offcanvasString=a;exports.removePopup=f; +//# sourceMappingURL=popupContainer-DIlSFkzD.js.map diff --git a/dist/components/popupContainer-DIlSFkzD.js.map b/dist/components/popupContainer-DIlSFkzD.js.map new file mode 100644 index 00000000..28ab16da --- /dev/null +++ b/dist/components/popupContainer-DIlSFkzD.js.map @@ -0,0 +1 @@ +{"version":3,"file":"popupContainer-DIlSFkzD.js","sources":["../../src/strings/modalString.ts","../../src/strings/offcanvasString.ts","../../src/util/popupContainer.ts"],"sourcesContent":["/** @type {string} */\nconst modalString = 'modal';\nexport default modalString;\n","/** @type {string} */\nconst offcanvasString = 'offcanvas';\nexport default offcanvasString;\n","import { createElement, getDocumentBody, isNode } from '@thednp/shorty';\n\n// the default container for Modal, Offcanvas, Popover and Tooltip\nconst popupContainer = createElement({\n tagName: 'div',\n className: 'popup-container',\n}) as HTMLElement;\n\nconst appendPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n const BODY = containerIsBody ? customContainer : getDocumentBody(target);\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n if (lookup === popupContainer) {\n BODY.append(popupContainer);\n }\n lookup.append(target);\n }\n};\n\nconst removePopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n\n // istanbul ignore else @preserve\n if (isNode(target)) {\n target.remove();\n\n if (lookup === popupContainer && !popupContainer.children.length) {\n popupContainer.remove();\n }\n }\n};\n\nconst hasPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const lookup = isNode(customContainer) && customContainer.nodeName !== 'BODY' ? customContainer : popupContainer;\n return isNode(target) && lookup.contains(target);\n};\n\nexport { appendPopup, hasPopup, popupContainer, removePopup };\n"],"names":["modalString","offcanvasString","popupContainer","createElement","appendPopup","target","customContainer","containerIsBody","isNode","lookup","BODY","getDocumentBody","removePopup","hasPopup"],"mappings":"+CACMA,EAAc,QCAdC,EAAkB,YCElBC,EAAiBC,EAAAA,cAAc,CACnC,QAAS,MACT,UAAW,iBACb,CAAC,EAEKC,EAAc,CAACC,EAAqBC,IAAiC,CACzE,MAAMC,EAAkBC,EAAAA,OAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAAA,OAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBJ,EACzEQ,EAAOH,EAAkBD,EAAkBK,EAAA,gBAAgBN,CAAM,EAAA;AAGnEG,EAAAA,OAAOH,CAAM,IACXI,IAAWP,GACbQ,EAAK,OAAOR,CAAc,EAE5BO,EAAO,OAAOJ,CAAM,EAExB,EAEMO,EAAc,CAACP,EAAqBC,IAAiC,CACzE,MAAMC,EAAkBC,EAAAA,OAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAAA,OAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBJ,EAAA;AAG3EM,EAAAA,OAAOH,CAAM,IACfA,EAAO,OAAO,EAEVI,IAAWP,GAAkB,CAACA,EAAe,SAAS,QACxDA,EAAe,OAAO,EAG5B,EAEMW,EAAW,CAACR,EAAqBC,IAAiC,CACtE,MAAMG,EAASD,EAAO,OAAAF,CAAe,GAAKA,EAAgB,WAAa,OAASA,EAAkBJ,EAClG,OAAOM,EAAAA,OAAOH,CAAM,GAAKI,EAAO,SAASJ,CAAM,CACjD"} \ No newline at end of file diff --git a/dist/components/popupContainer-RgdJuCa1.js b/dist/components/popupContainer-RgdJuCa1.js deleted file mode 100644 index 80e007f0..00000000 --- a/dist/components/popupContainer-RgdJuCa1.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";const e=require("@thednp/shorty"),i="modal",a="offcanvas",s=e.createElement({tagName:"div",className:"popup-container"}),N=(p,o)=>{const n=e.isNode(o)&&o.nodeName==="BODY",d=e.isNode(o)&&!n?o:s,c=n?o:e.getDocumentBody(p);e.isNode(p)&&(d===s&&c.append(s),d.append(p))},f=(p,o)=>{const n=e.isNode(o)&&o.nodeName==="BODY",d=e.isNode(o)&&!n?o:s;e.isNode(p)&&(p.remove(),d===s&&!s.children.length&&s.remove())},l=(p,o)=>{const n=e.isNode(o)&&o.nodeName!=="BODY"?o:s;return e.isNode(p)&&n.contains(p)};exports.appendPopup=N;exports.hasPopup=l;exports.modalString=i;exports.offcanvasString=a;exports.removePopup=f; -//# sourceMappingURL=popupContainer-RgdJuCa1.js.map diff --git a/dist/components/popupContainer-RgdJuCa1.js.map b/dist/components/popupContainer-RgdJuCa1.js.map deleted file mode 100644 index 1e40461e..00000000 --- a/dist/components/popupContainer-RgdJuCa1.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"popupContainer-RgdJuCa1.js","sources":["../../src/strings/modalString.ts","../../src/strings/offcanvasString.ts","../../src/util/popupContainer.ts"],"sourcesContent":["/** @type {string} */\nconst modalString = 'modal';\nexport default modalString;\n","/** @type {string} */\nconst offcanvasString = 'offcanvas';\nexport default offcanvasString;\n","import { getDocumentBody, isNode, createElement } from '@thednp/shorty';\n\n// the default container for Modal, Offcanvas, Popover and Tooltip\nconst popupContainer = createElement({ tagName: 'div', className: 'popup-container' }) as HTMLElement;\n\nconst appendPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n const BODY = containerIsBody ? customContainer : getDocumentBody(target);\n\n if (isNode(target)) {\n if (lookup === popupContainer) {\n BODY.append(popupContainer);\n }\n lookup.append(target);\n }\n};\n\nconst removePopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY';\n const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer;\n\n if (isNode(target)) {\n target.remove();\n\n if (lookup === popupContainer && !popupContainer.children.length) {\n popupContainer.remove();\n }\n }\n};\n\nconst hasPopup = (target: HTMLElement, customContainer?: ParentNode) => {\n const lookup = isNode(customContainer) && customContainer.nodeName !== 'BODY' ? customContainer : popupContainer;\n return isNode(target) && lookup.contains(target);\n};\n\nexport { popupContainer, appendPopup, removePopup, hasPopup };\n"],"names":["modalString","offcanvasString","popupContainer","createElement","appendPopup","target","customContainer","containerIsBody","isNode","lookup","BODY","getDocumentBody","removePopup","hasPopup"],"mappings":"+CACMA,EAAc,QCAdC,EAAkB,YCElBC,EAAiBC,EAAc,cAAA,CAAE,QAAS,MAAO,UAAW,kBAAmB,EAE/EC,EAAc,CAACC,EAAqBC,IAAiC,CACzE,MAAMC,EAAkBC,EAAAA,OAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAAA,OAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBJ,EACzEQ,EAAOH,EAAkBD,EAAkBK,EAAA,gBAAgBN,CAAM,EAEnEG,EAAAA,OAAOH,CAAM,IACXI,IAAWP,GACbQ,EAAK,OAAOR,CAAc,EAE5BO,EAAO,OAAOJ,CAAM,EAExB,EAEMO,EAAc,CAACP,EAAqBC,IAAiC,CACzE,MAAMC,EAAkBC,EAAAA,OAAOF,CAAe,GAAKA,EAAgB,WAAa,OAC1EG,EAASD,EAAAA,OAAOF,CAAe,GAAK,CAACC,EAAkBD,EAAkBJ,EAE3EM,EAAAA,OAAOH,CAAM,IACfA,EAAO,OAAO,EAEVI,IAAWP,GAAkB,CAACA,EAAe,SAAS,QACxDA,EAAe,OAAO,EAG5B,EAEMW,EAAW,CAACR,EAAqBC,IAAiC,CACtE,MAAMG,EAASD,EAAO,OAAAF,CAAe,GAAKA,EAAgB,WAAa,OAASA,EAAkBJ,EAClG,OAAOM,EAAAA,OAAOH,CAAM,GAAKI,EAAO,SAASJ,CAAM,CACjD"} \ No newline at end of file diff --git a/dist/components/scrollspy.cjs b/dist/components/scrollspy.cjs index 0af5ea25..30b6ba90 100644 --- a/dist/components/scrollspy.cjs +++ b/dist/components/scrollspy.cjs @@ -1,2 +1,9 @@ -"use strict";var S=Object.defineProperty;var w=(t,s,n)=>s in t?S(t,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[s]=n;var p=(t,s,n)=>w(t,typeof s!="symbol"?s+"":s,n);const e=require("@thednp/shorty"),E=require("@thednp/event-listener"),m=require("./activeClass-CxJYQAGN.js"),b=require("./base-component-j_bwTL_x.js"),q="scrollspy",T="ScrollSpy",B='[data-bs-spy="scroll"]',A={offset:10,target:null},D=t=>e.getInstance(t,T),x=t=>new f(t),H=e.createCustomEvent(`activate.bs.${q}`),W=t=>{const{target:s,scrollTarget:n,options:i,itemsLength:r,scrollHeight:o,element:g}=t,{offset:c}=i,a=e.isWindow(n),l=s&&e.getElementsByTagName("A",s),h=n?L(n):o;if(t.scrollTop=a?n.scrollY:n.scrollTop,l&&(h!==o||r!==l.length)){let u,d,v;t.items=[],t.offsets=[],t.scrollHeight=h,t.maxScroll=t.scrollHeight-M(t),[...l].forEach(C=>{u=e.getAttribute(C,"href"),d=u&&u.charAt(0)==="#"&&u.slice(-1)!=="#"&&e.querySelector(u,e.getDocument(g)),d&&(t.items.push(C),v=e.getBoundingClientRect(d),t.offsets.push((a?v.top+t.scrollTop:d.offsetTop)-c))}),t.itemsLength=t.items.length}},L=t=>e.isHTMLElement(t)?t.scrollHeight:e.getDocumentElement(t).scrollHeight,M=({element:t,scrollTarget:s})=>e.isWindow(s)?s.innerHeight:e.getBoundingClientRect(t).height,I=t=>{[...e.getElementsByTagName("A",t)].forEach(s=>{e.hasClass(s,m.activeClass)&&e.removeClass(s,m.activeClass)})},y=(t,s)=>{const{target:n,element:i}=t;e.isHTMLElement(n)&&I(n),t.activeItem=s,e.addClass(s,m.activeClass);const r=[];let o=s;for(;o!==e.getDocumentBody(i);)o=o.parentElement,(e.hasClass(o,"nav")||e.hasClass(o,"dropdown-menu"))&&r.push(o);r.forEach(g=>{const c=g.previousElementSibling;c&&!e.hasClass(c,m.activeClass)&&e.addClass(c,m.activeClass)}),H.relatedTarget=s,e.dispatchEvent(i,H)};class f extends b.BaseComponent{constructor(n,i){super(n,i);p(this,"refresh",()=>{const{target:n}=this;if(e.isHTMLElement(n)&&n.offsetHeight>0){W(this);const{scrollTop:i,maxScroll:r,itemsLength:o,items:g,activeItem:c}=this;if(i>=r){const l=g[o-1];c!==l&&y(this,l);return}const{offsets:a}=this;if(c&&i0){this.activeItem=null,n&&I(n);return}g.forEach((l,h)=>{c!==l&&i>=a[h]&&(typeof a[h+1]>"u"||i{(n?E.addListener:E.removeListener)(this.scrollTarget,e.scrollEvent,this.refresh,e.passiveHandler)});const{element:r,options:o}=this;this.target=e.querySelector(o.target,e.getDocument(r)),this.target&&(this.scrollTarget=r.clientHeights in t?S(t,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[s]=n;var p=(t,s,n)=>w(t,typeof s!="symbol"?s+"":s,n);const e=require("@thednp/shorty"),E=require("@thednp/event-listener"),m=require("./activeClass-CxJYQAGN.js"),b=require("./base-component-DBcDoOjV.js"),q="scrollspy",T="ScrollSpy",B='[data-bs-spy="scroll"]',A={offset:10,target:null},D=t=>e.getInstance(t,T),x=t=>new f(t),H=e.createCustomEvent(`activate.bs.${q}`),W=t=>{const{target:s,scrollTarget:n,options:i,itemsLength:r,scrollHeight:o,element:g}=t,{offset:c}=i,a=e.isWindow(n),l=s&&e.getElementsByTagName("A",s),h=n?L(n):o;t.scrollTop=a?n.scrollY:n.scrollTop;// istanbul ignore else @preserve +if(l&&(h!==o||r!==l.length)){let u,d,v;t.items=[],t.offsets=[],t.scrollHeight=h,t.maxScroll=t.scrollHeight-M(t),[...l].forEach(C=>{u=e.getAttribute(C,"href"),d=u&&u.charAt(0)==="#"&&u.slice(-1)!=="#"&&e.querySelector(u,e.getDocument(g)),d&&(t.items.push(C),v=e.getBoundingClientRect(d),t.offsets.push((a?v.top+t.scrollTop:d.offsetTop)-c))}),t.itemsLength=t.items.length}},L=t=>e.isHTMLElement(t)?t.scrollHeight:e.getDocumentElement(t).scrollHeight,M=({element:t,scrollTarget:s})=>e.isWindow(s)?s.innerHeight:e.getBoundingClientRect(t).height,I=t=>{[...e.getElementsByTagName("A",t)].forEach(s=>{e.hasClass(s,m.activeClass)&&e.removeClass(s,m.activeClass)})},y=(t,s)=>{const{target:n,element:i}=t;// istanbul ignore else @preserve +e.isHTMLElement(n)&&I(n),t.activeItem=s,e.addClass(s,m.activeClass);const r=[];let o=s;for(;o!==e.getDocumentBody(i);)o=o.parentElement,(e.hasClass(o,"nav")||e.hasClass(o,"dropdown-menu"))&&r.push(o);r.forEach(g=>{const c=g.previousElementSibling;// istanbul ignore else @preserve +c&&!e.hasClass(c,m.activeClass)&&e.addClass(c,m.activeClass)}),H.relatedTarget=s,e.dispatchEvent(i,H)};class f extends b.BaseComponent{constructor(n,i){super(n,i);p(this,"refresh",()=>{const{target:n}=this;// istanbul ignore else @preserve +if(e.isHTMLElement(n)&&n.offsetHeight>0){W(this);const{scrollTop:i,maxScroll:r,itemsLength:o,items:g,activeItem:c}=this;if(i>=r){const l=g[o-1];// istanbul ignore else @preserve +c!==l&&y(this,l);return}const{offsets:a}=this;// istanbul ignore else @preserve +if(c&&i0){this.activeItem=null;// istanbul ignore else @preserve +n&&I(n);return}g.forEach((l,h)=>{c!==l&&i>=a[h]&&(typeof a[h+1]>"u"||i{(n?E.addListener:E.removeListener)(this.scrollTarget,e.scrollEvent,this.refresh,e.passiveHandler)});const{element:r,options:o}=this;this.target=e.querySelector(o.target,e.getDocument(r)),this.target&&(this.scrollTarget=r.clientHeight getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","element","getInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","createCustomEvent","updateSpyTargets","self","target","scrollTarget","options","itemsLength","scrollHeight","offset","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","getAttribute","querySelector","getDocument","getBoundingClientRect","isHTMLElement","getDocumentElement","clear","item","hasClass","activeClass","removeClass","activate","addClass","parents","parentItem","getDocumentBody","menuItem","parentLink","dispatchEvent","BaseComponent","config","__publicField","scrollTop","maxScroll","items","activeItem","newActiveItem","offsets","i","add","addListener","removeListener","scrollEvent","passiveHandler","getWindow"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scrollspy.cjs","sources":["../../src/strings/scrollspyString.ts","../../src/strings/scrollspyComponent.ts","../../src/components/scrollspy.ts"],"sourcesContent":["/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","element","getInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","createCustomEvent","updateSpyTargets","self","target","scrollTarget","options","itemsLength","scrollHeight","offset","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","getAttribute","querySelector","getDocument","getBoundingClientRect","isHTMLElement","getDocumentElement","clear","item","hasClass","activeClass","removeClass","activate","addClass","parents","parentItem","getDocumentBody","menuItem","parentLink","dispatchEvent","BaseComponent","config","__publicField","scrollTop","maxScroll","items","activeItem","newActiveItem","offsets","i","add","addListener","removeListener","scrollEvent","passiveHandler","getWindow"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/scrollspy.mjs b/dist/components/scrollspy.mjs index d278a181..1f5ce5dd 100644 --- a/dist/components/scrollspy.mjs +++ b/dist/components/scrollspy.mjs @@ -4,16 +4,18 @@ var h = (t, e, s) => W(t, typeof e != "symbol" ? e + "" : e, s); import { createCustomEvent as _, querySelector as L, getDocument as S, getWindow as k, isHTMLElement as v, scrollEvent as q, passiveHandler as G, getInstance as M, isWindow as C, getElementsByTagName as w, getAttribute as N, getBoundingClientRect as b, getDocumentElement as O, hasClass as u, removeClass as R, addClass as y, getDocumentBody as Y, dispatchEvent as $ } from "@thednp/shorty"; import { addListener as j, removeListener as z } from "@thednp/event-listener"; import { a as m } from "./activeClass-iqaD75Su.mjs"; -import { B as F } from "./base-component-DvIOojVW.mjs"; +import { B as F } from "./base-component-nXu3wApu.mjs"; const J = "scrollspy", A = "ScrollSpy", K = '[data-bs-spy="scroll"]', P = { offset: 10, target: null }, Q = (t) => M(t, A), U = (t) => new d(t), I = _(`activate.bs.${J}`), V = (t) => { const { target: e, scrollTarget: s, options: n, itemsLength: r, scrollHeight: o, element: a } = t, { offset: i } = n, l = C(s), c = e && w("A", e), g = s ? B(s) : ( - /* istanbul ignore next */ + // istanbul ignore next @preserve o ); - if (t.scrollTop = l ? s.scrollY : s.scrollTop, c && (g !== o || r !== c.length)) { + t.scrollTop = l ? s.scrollY : s.scrollTop; + // istanbul ignore else @preserve + if (c && (g !== o || r !== c.length)) { let p, f, E; t.items = [], t.offsets = [], t.scrollHeight = g, t.maxScroll = t.scrollHeight - X(t), [...c].forEach((H) => { p = N(H, "href"), f = p && p.charAt(0) === "#" && p.slice(-1) !== "#" && L(p, S(a)), f && (t.items.push(H), E = b(f), t.offsets.push((l ? E.top + t.scrollTop : f.offsetTop) - i)); @@ -25,6 +27,7 @@ const J = "scrollspy", A = "ScrollSpy", K = '[data-bs-spy="scroll"]', P = { }); }, T = (t, e) => { const { target: s, element: n } = t; + // istanbul ignore else @preserve v(s) && x(s), t.activeItem = e, y(e, m); const r = []; let o = e; @@ -32,6 +35,7 @@ const J = "scrollspy", A = "ScrollSpy", K = '[data-bs-spy="scroll"]', P = { o = o.parentElement, (u(o, "nav") || u(o, "dropdown-menu")) && r.push(o); r.forEach((a) => { const i = a.previousElementSibling; + // istanbul ignore else @preserve i && !u(i, m) && y(i, m); }), I.relatedTarget = e, $(n, I); }; @@ -48,17 +52,22 @@ class d extends F { /** Updates all items. */ h(this, "refresh", () => { const { target: s } = this; + // istanbul ignore else @preserve if (v(s) && s.offsetHeight > 0) { V(this); const { scrollTop: n, maxScroll: r, itemsLength: o, items: a, activeItem: i } = this; if (n >= r) { const c = a[o - 1]; + // istanbul ignore else @preserve i !== c && T(this, c); return; } const { offsets: l } = this; + // istanbul ignore else @preserve if (i && n < l[0] && l[0] > 0) { - this.activeItem = null, s && x(s); + this.activeItem = null; + // istanbul ignore else @preserve + s && x(s); return; } a.forEach((c, g) => { diff --git a/dist/components/scrollspy.mjs.map b/dist/components/scrollspy.mjs.map index 317f4ab7..cd3a5bd2 100644 --- a/dist/components/scrollspy.mjs.map +++ b/dist/components/scrollspy.mjs.map @@ -1 +1 @@ -{"version":3,"file":"scrollspy.mjs","sources":["../../src/strings/scrollspyString.ts","../../src/strings/scrollspyComponent.ts","../../src/components/scrollspy.ts"],"sourcesContent":["/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n getDocumentBody,\n getDocumentElement,\n getDocument,\n getWindow,\n removeClass,\n hasClass,\n addClass,\n getElementsByTagName,\n getAttribute,\n querySelector,\n isHTMLElement,\n isWindow,\n createCustomEvent,\n getInstance,\n scrollEvent,\n passiveHandler,\n dispatchEvent,\n getBoundingClientRect,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","element","getInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","createCustomEvent","updateSpyTargets","self","target","scrollTarget","options","itemsLength","scrollHeight","offset","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","getAttribute","querySelector","getDocument","getBoundingClientRect","isHTMLElement","getDocumentElement","clear","item","hasClass","activeClass","removeClass","activate","addClass","parents","parentItem","getDocumentBody","menuItem","parentLink","dispatchEvent","BaseComponent","config","__publicField","scrollTop","maxScroll","items","activeItem","newActiveItem","offsets","i","add","addListener","removeListener","scrollEvent","passiveHandler","getWindow"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"scrollspy.mjs","sources":["../../src/strings/scrollspyString.ts","../../src/strings/scrollspyComponent.ts","../../src/components/scrollspy.ts"],"sourcesContent":["/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","element","getInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","createCustomEvent","updateSpyTargets","self","target","scrollTarget","options","itemsLength","scrollHeight","offset","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","getAttribute","querySelector","getDocument","getBoundingClientRect","isHTMLElement","getDocumentElement","clear","item","hasClass","activeClass","removeClass","activate","addClass","parents","parentItem","getDocumentBody","menuItem","parentLink","dispatchEvent","BaseComponent","config","__publicField","scrollTop","maxScroll","items","activeItem","newActiveItem","offsets","i","add","addListener","removeListener","scrollEvent","passiveHandler","getWindow"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tab.cjs b/dist/components/tab.cjs index 5927deff..2abcfe36 100644 --- a/dist/components/tab.cjs +++ b/dist/components/tab.cjs @@ -1,2 +1,30 @@ -"use strict";var P=Object.defineProperty;var k=(n,s,t)=>s in n?P(n,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[s]=t;var g=(n,s,t)=>k(n,typeof s!="symbol"?s+"":s,t);const e=require("@thednp/shorty"),H=require("@thednp/event-listener"),E=require("./collapsingClass-CLblascz.js"),d=require("./activeClass-CxJYQAGN.js"),h=require("./fadeClass-Co6nOzNJ.js"),m=require("./showClass-D_Ms1FgG.js"),p=require("./dropdownClasses-CnEyz_iw.js"),D=require("./dataBsToggle-Dj-Ng54N.js"),w=require("./getTargetElement-Cl-PhUJH.js"),_=require("./base-component-j_bwTL_x.js"),f="tab",B="Tab",L=`[${D.dataBsToggle}="${f}"]`,I=n=>e.getInstance(n,B),j=n=>new u(n),b=e.createCustomEvent(`show.bs.${f}`),q=e.createCustomEvent(`shown.bs.${f}`),T=e.createCustomEvent(`hide.bs.${f}`),M=e.createCustomEvent(`hidden.bs.${f}`),v=new Map,x=n=>{const{tabContent:s,nav:t}=n;s&&e.hasClass(s,E.collapsingClass)&&(s.style.height="",e.removeClass(s,E.collapsingClass)),t&&e.Timer.clear(t)},$=n=>{const{element:s,tabContent:t,content:a,nav:l}=n,{tab:r}=e.isHTMLElement(l)&&v.get(l)||{tab:null};if(t&&a&&e.hasClass(a,h.fadeClass)){const{currentHeight:o,nextHeight:i}=v.get(s)||{currentHeight:0,nextHeight:0};o===i?x(n):setTimeout(()=>{t.style.height=`${i}px`,e.reflow(t),e.emulateTransitionEnd(t,()=>x(n))},50)}else l&&e.Timer.clear(l);q.relatedTarget=r,e.dispatchEvent(s,q)},S=n=>{const{element:s,content:t,tabContent:a,nav:l}=n,{tab:r,content:o}=l&&v.get(l)||{tab:null,content:null};let i=0;if(a&&t&&e.hasClass(t,h.fadeClass)&&([o,t].forEach(c=>{e.isHTMLElement(c)&&e.addClass(c,"overflow-hidden")}),i=e.isHTMLElement(o)?o.scrollHeight:0),b.relatedTarget=r,M.relatedTarget=s,e.dispatchEvent(s,b),!b.defaultPrevented){if(t&&e.addClass(t,d.activeClass),o&&e.removeClass(o,d.activeClass),a&&t&&e.hasClass(t,h.fadeClass)){const c=t.scrollHeight;v.set(s,{currentHeight:i,nextHeight:c,tab:null,content:null}),e.addClass(a,E.collapsingClass),a.style.height=`${i}px`,e.reflow(a),[o,t].forEach(C=>{C&&e.removeClass(C,"overflow-hidden")})}t&&t&&e.hasClass(t,h.fadeClass)?setTimeout(()=>{e.addClass(t,m.showClass),e.emulateTransitionEnd(t,()=>{$(n)})},1):(t&&e.addClass(t,m.showClass),$(n)),r&&e.dispatchEvent(r,M)}},y=n=>{const{nav:s}=n;if(!e.isHTMLElement(s))return{tab:null,content:null};const t=e.getElementsByClassName(d.activeClass,s);let a=null;t.length===1&&!p.dropdownMenuClasses.some(r=>e.hasClass(t[0].parentElement,r))?[a]=t:t.length>1&&(a=t[t.length-1]);const l=e.isHTMLElement(a)?w.getTargetElement(a):null;return{tab:a,content:l}},A=n=>{if(!e.isHTMLElement(n))return null;const s=e.closest(n,`.${p.dropdownMenuClasses.join(",.")}`);return s?e.querySelector(`.${p.dropdownMenuClasses[0]}-toggle`,s):null},N=n=>{const s=I(n.target);s&&(n.preventDefault(),s.show())};class u extends _.BaseComponent{constructor(t){super(t);g(this,"_toggleEventListeners",t=>{(t?H.addListener:H.removeListener)(this.element,e.mouseclickEvent,N)});const{element:a}=this,l=w.getTargetElement(a);if(l){const r=e.closest(a,".nav"),o=e.closest(l,".tab-content");this.nav=r,this.content=l,this.tabContent=o,this.dropdown=A(a);const{tab:i}=y(this);if(r&&!i){const c=e.querySelector(L,r),C=c&&w.getTargetElement(c);C&&(e.addClass(c,d.activeClass),e.addClass(C,m.showClass),e.addClass(C,d.activeClass),e.setAttribute(a,e.ariaSelected,"true"))}this._toggleEventListeners(!0)}}get name(){return B}show(){const{element:t,content:a,nav:l,dropdown:r}=this;if(!(l&&e.Timer.get(l))&&!e.hasClass(t,d.activeClass)){const{tab:o,content:i}=y(this);if(l&&v.set(l,{tab:o,content:i,currentHeight:0,nextHeight:0}),T.relatedTarget=t,e.isHTMLElement(o)&&(e.dispatchEvent(o,T),!T.defaultPrevented)){e.addClass(t,d.activeClass),e.setAttribute(t,e.ariaSelected,"true");const c=e.isHTMLElement(o)&&A(o);if(c&&e.hasClass(c,d.activeClass)&&e.removeClass(c,d.activeClass),l){const C=()=>{o&&(e.removeClass(o,d.activeClass),e.setAttribute(o,e.ariaSelected,"false")),r&&!e.hasClass(r,d.activeClass)&&e.addClass(r,d.activeClass)};i&&(e.hasClass(i,h.fadeClass)||a&&e.hasClass(a,h.fadeClass))?e.Timer.set(l,C,1):C()}i&&(e.removeClass(i,m.showClass),e.hasClass(i,h.fadeClass)?e.emulateTransitionEnd(i,()=>S(this)):S(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}g(u,"selector",L),g(u,"init",j),g(u,"getInstance",I);module.exports=u; +"use strict";var P=Object.defineProperty;var k=(n,s,t)=>s in n?P(n,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[s]=t;var g=(n,s,t)=>k(n,typeof s!="symbol"?s+"":s,t);const e=require("@thednp/shorty"),H=require("@thednp/event-listener"),E=require("./collapsingClass-CLblascz.js"),d=require("./activeClass-CxJYQAGN.js"),h=require("./fadeClass-Co6nOzNJ.js"),m=require("./showClass-D_Ms1FgG.js"),p=require("./dropdownClasses-CnEyz_iw.js"),D=require("./dataBsToggle-Dj-Ng54N.js"),w=require("./getTargetElement-Cl-PhUJH.js"),_=require("./base-component-DBcDoOjV.js"),f="tab",B="Tab",L=`[${D.dataBsToggle}="${f}"]`,I=n=>e.getInstance(n,B),j=n=>new u(n),b=e.createCustomEvent(`show.bs.${f}`),q=e.createCustomEvent(`shown.bs.${f}`),T=e.createCustomEvent(`hide.bs.${f}`),M=e.createCustomEvent(`hidden.bs.${f}`),v=new Map,x=n=>{const{tabContent:s,nav:t}=n;// istanbul ignore else @preserve +s&&e.hasClass(s,E.collapsingClass)&&(s.style.height="",e.removeClass(s,E.collapsingClass));// istanbul ignore else @preserve +t&&e.Timer.clear(t)},$=n=>{const{element:s,tabContent:t,content:a,nav:l}=n,{tab:r}=e.isHTMLElement(l)&&v.get(l)||{tab:null};// istanbul ignore next @preserve +// istanbul ignore else @preserve +if(t&&a&&e.hasClass(a,h.fadeClass)){const{currentHeight:o,nextHeight:i}=v.get(s)||{currentHeight:0,nextHeight:0};// istanbul ignore next @preserve +// istanbul ignore else @preserve: vitest won't validate this branch +o!==i?setTimeout(()=>{t.style.height=`${i}px`,e.reflow(t),e.emulateTransitionEnd(t,()=>x(n))},50):x(n)}else l&&e.Timer.clear(l);q.relatedTarget=r,e.dispatchEvent(s,q)},S=n=>{const{element:s,content:t,tabContent:a,nav:l}=n,{tab:r,content:o}=l&&v.get(l)||{tab:null,content:null};let i=0;// istanbul ignore else @preserve +a&&t&&e.hasClass(t,h.fadeClass)&&([o,t].forEach(c=>{// istanbul ignore else @preserve +e.isHTMLElement(c)&&e.addClass(c,"overflow-hidden")}),i=e.isHTMLElement(o)?o.scrollHeight:0),b.relatedTarget=r,M.relatedTarget=s,e.dispatchEvent(s,b);// istanbul ignore else @preserve +if(!b.defaultPrevented){// istanbul ignore else @preserve +t&&e.addClass(t,d.activeClass);// istanbul ignore else @preserve +o&&e.removeClass(o,d.activeClass);// istanbul ignore else @preserve +if(a&&t&&e.hasClass(t,h.fadeClass)){const c=t.scrollHeight;v.set(s,{currentHeight:i,nextHeight:c,tab:null,content:null}),e.addClass(a,E.collapsingClass),a.style.height=`${i}px`,e.reflow(a),[o,t].forEach(C=>{// istanbul ignore else @preserve +C&&e.removeClass(C,"overflow-hidden")})}if(t&&t&&e.hasClass(t,h.fadeClass))setTimeout(()=>{e.addClass(t,m.showClass),e.emulateTransitionEnd(t,()=>{$(n)})},1);else{// istanbul ignore else @preserve +t&&e.addClass(t,m.showClass),$(n)}// istanbul ignore else @preserve +r&&e.dispatchEvent(r,M)}},y=n=>{const{nav:s}=n;// istanbul ignore next @preserve +if(!e.isHTMLElement(s))return{tab:null,content:null};const t=e.getElementsByClassName(d.activeClass,s);let a=null;// istanbul ignore else @preserve +t.length===1&&!p.dropdownMenuClasses.some(r=>e.hasClass(t[0].parentElement,r))?[a]=t:t.length>1&&(a=t[t.length-1]);const l=e.isHTMLElement(a)?w.getTargetElement(a):null;return{tab:a,content:l}},A=n=>{// istanbul ignore next @preserve +if(!e.isHTMLElement(n))return null;const s=e.closest(n,`.${p.dropdownMenuClasses.join(",.")}`);return s?e.querySelector(`.${p.dropdownMenuClasses[0]}-toggle`,s):null},N=n=>{const s=I(n.target);// istanbul ignore else @preserve +s&&(n.preventDefault(),s.show())};class u extends _.BaseComponent{constructor(t){super(t);g(this,"_toggleEventListeners",t=>{(t?H.addListener:H.removeListener)(this.element,e.mouseclickEvent,N)});const{element:a}=this,l=w.getTargetElement(a);// istanbul ignore else @preserve +if(l){const r=e.closest(a,".nav"),o=e.closest(l,".tab-content");this.nav=r,this.content=l,this.tabContent=o,this.dropdown=A(a);const{tab:i}=y(this);if(r&&!i){const c=e.querySelector(L,r),C=c&&w.getTargetElement(c);// istanbul ignore else @preserve +C&&(e.addClass(c,d.activeClass),e.addClass(C,m.showClass),e.addClass(C,d.activeClass),e.setAttribute(a,e.ariaSelected,"true"))}this._toggleEventListeners(!0)}}get name(){return B}show(){const{element:t,content:a,nav:l,dropdown:r}=this;// istanbul ignore else @preserve +if(!(l&&e.Timer.get(l))&&!e.hasClass(t,d.activeClass)){const{tab:o,content:i}=y(this);// istanbul ignore else @preserve +l&&v.set(l,{tab:o,content:i,currentHeight:0,nextHeight:0}),T.relatedTarget=t;// istanbul ignore else @preserve +if(e.isHTMLElement(o)){e.dispatchEvent(o,T);// istanbul ignore else @preserve +if(!T.defaultPrevented){e.addClass(t,d.activeClass),e.setAttribute(t,e.ariaSelected,"true");const c=e.isHTMLElement(o)&&A(o);c&&e.hasClass(c,d.activeClass)&&e.removeClass(c,d.activeClass);// istanbul ignore else @preserve +if(l){const C=()=>{// istanbul ignore else @preserve +o&&(e.removeClass(o,d.activeClass),e.setAttribute(o,e.ariaSelected,"false")),r&&!e.hasClass(r,d.activeClass)&&e.addClass(r,d.activeClass)};i&&(e.hasClass(i,h.fadeClass)||a&&e.hasClass(a,h.fadeClass))?e.Timer.set(l,C,1):C()}// istanbul ignore else @preserve +i&&(e.removeClass(i,m.showClass),e.hasClass(i,h.fadeClass)?e.emulateTransitionEnd(i,()=>S(this)):S(this))}}}}dispose(){this._toggleEventListeners(),super.dispose()}}g(u,"selector",L),g(u,"init",j),g(u,"getInstance",I);module.exports=u; //# sourceMappingURL=tab.cjs.map diff --git a/dist/components/tab.cjs.map b/dist/components/tab.cjs.map index 0c6ee27a..d4ff95e3 100644 --- a/dist/components/tab.cjs.map +++ b/dist/components/tab.cjs.map @@ -1 +1 @@ -{"version":3,"file":"tab.cjs","sources":["../../src/strings/tabString.ts","../../src/strings/tabComponent.ts","../../src/components/tab.ts"],"sourcesContent":["/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["tabString","tabComponent","tabSelector","dataBsToggle","getTabInstance","element","getInstance","tabInitCallback","Tab","showTabEvent","createCustomEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","self","tabContent","nav","hasClass","collapsingClass","removeClass","Timer","triggerTabShow","nextContent","tab","isHTMLElement","fadeClass","currentHeight","nextHeight","reflow","emulateTransitionEnd","dispatchEvent","triggerTabHide","content","addClass","activeClass","c","showClass","getActiveTab","activeTabs","getElementsByClassName","dropdownClasses","getTargetElement","getParentDropdown","dropdown","closest","querySelector","tabClickHandler","e","BaseComponent","target","__publicField","add","addListener","removeListener","mouseclickEvent","container","firstTab","firstTabContent","setAttribute","ariaSelected","activeDropdown","toggleTab"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tab.cjs","sources":["../../src/strings/tabString.ts","../../src/strings/tabComponent.ts","../../src/components/tab.ts"],"sourcesContent":["/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["tabString","tabComponent","tabSelector","dataBsToggle","getTabInstance","element","getInstance","tabInitCallback","Tab","showTabEvent","createCustomEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","self","tabContent","nav","hasClass","collapsingClass","removeClass","Timer","triggerTabShow","nextContent","tab","isHTMLElement","fadeClass","currentHeight","nextHeight","reflow","emulateTransitionEnd","dispatchEvent","triggerTabHide","content","addClass","activeClass","c","showClass","getActiveTab","activeTabs","getElementsByClassName","dropdownClasses","getTargetElement","getParentDropdown","dropdown","closest","querySelector","tabClickHandler","e","BaseComponent","target","__publicField","add","addListener","removeListener","mouseclickEvent","container","firstTab","firstTabContent","setAttribute","ariaSelected","activeDropdown","toggleTab"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tab.mjs b/dist/components/tab.mjs index 644a4ddb..075f5c95 100644 --- a/dist/components/tab.mjs +++ b/dist/components/tab.mjs @@ -10,60 +10,92 @@ import { s as E } from "./showClass-C8hdJfjQ.mjs"; import { d as I } from "./dropdownClasses-CdCdZ-PX.mjs"; import { d as Y } from "./dataBsToggle-B84TS15h.mjs"; import { g as P } from "./getTargetElement-DbfK8LsG.mjs"; -import { B as Z } from "./base-component-DvIOojVW.mjs"; +import { B as Z } from "./base-component-nXu3wApu.mjs"; const v = "tab", J = "Tab", D = `[${Y}="${v}"]`, K = (n) => U(n, J), tt = (n) => new T(n), L = H(`show.bs.${v}`), M = H(`shown.bs.${v}`), y = H(`hide.bs.${v}`), _ = H(`hidden.bs.${v}`), p = /* @__PURE__ */ new Map(), A = (n) => { const { tabContent: e, nav: t } = n; - e && f(e, B) && (e.style.height = "", b(e, B)), t && C.clear(t); + // istanbul ignore else @preserve + e && f(e, B) && (e.style.height = "", b(e, B)); + // istanbul ignore else @preserve + t && C.clear(t); }, j = (n) => { - const { element: e, tabContent: t, content: s, nav: o } = n, { tab: r } = d(o) && p.get(o) || /* istanbul ignore next */ - { tab: null }; + const { element: e, tabContent: t, content: s, nav: o } = n, { tab: r } = d(o) && p.get(o) || { tab: null }; + // istanbul ignore next @preserve + // istanbul ignore else @preserve if (t && s && f(s, m)) { - const { currentHeight: i, nextHeight: a } = p.get(e) || /* istanbul ignore next */ - { - currentHeight: 0, - nextHeight: 0 - }; - i === a ? A(n) : setTimeout(() => { + const { currentHeight: i, nextHeight: a } = p.get(e) || { currentHeight: 0, nextHeight: 0 }; + // istanbul ignore next @preserve + // istanbul ignore else @preserve: vitest won't validate this branch + i !== a ? setTimeout(() => { t.style.height = `${a}px`, G(t), k(t, () => A(n)); - }, 50); + }, 50) : A(n); } else o && C.clear(o); M.relatedTarget = r, w(e, M); }, q = (n) => { - const { element: e, content: t, tabContent: s, nav: o } = n, { tab: r, content: i } = o && p.get(o) || /* istanbul ignore next */ - { tab: null, content: null }; + const { element: e, content: t, tabContent: s, nav: o } = n, { tab: r, content: i } = o && p.get(o) || { + // istanbul ignore next @preserve + tab: null, + content: null + }; let a = 0; - if (s && t && f(t, m) && ([i, t].forEach((c) => { + // istanbul ignore else @preserve + s && t && f(t, m) && ([i, t].forEach((c) => { + // istanbul ignore else @preserve d(c) && g(c, "overflow-hidden"); }), a = d(i) ? i.scrollHeight : ( - /* istanbul ignore next */ + // istanbul ignore next @preserve 0 - )), L.relatedTarget = r, _.relatedTarget = e, w(e, L), !L.defaultPrevented) { - if (t && g(t, l), i && b(i, l), s && t && f(t, m)) { + )), L.relatedTarget = r, _.relatedTarget = e, w(e, L); + // istanbul ignore else @preserve + if (!L.defaultPrevented) { + // istanbul ignore else @preserve + t && g(t, l); + // istanbul ignore else @preserve + i && b(i, l); + // istanbul ignore else @preserve + if (s && t && f(t, m)) { const c = t.scrollHeight; - p.set(e, { currentHeight: a, nextHeight: c, tab: null, content: null }), g(s, B), s.style.height = `${a}px`, G(s), [i, t].forEach((h) => { + p.set(e, { + currentHeight: a, + nextHeight: c, + tab: null, + content: null + }), g(s, B), s.style.height = `${a}px`, G(s), [i, t].forEach((h) => { + // istanbul ignore else @preserve h && b(h, "overflow-hidden"); }); } - t && t && f(t, m) ? setTimeout(() => { - g(t, E), k(t, () => { - j(n); - }); - }, 1) : (t && g(t, E), j(n)), r && w(r, _); + if (t && t && f(t, m)) + setTimeout(() => { + g(t, E), k(t, () => { + j(n); + }); + }, 1); + else { + // istanbul ignore else @preserve + t && g(t, E), j(n); + } + // istanbul ignore else @preserve + r && w(r, _); } }, N = (n) => { const { nav: e } = n; - if (!d(e)) return { tab: null, content: null }; + // istanbul ignore next @preserve + if (!d(e)) + return { tab: null, content: null }; const t = V(l, e); let s = null; + // istanbul ignore else @preserve t.length === 1 && !I.some((r) => f(t[0].parentElement, r)) ? [s] = t : t.length > 1 && (s = t[t.length - 1]); const o = d(s) ? P(s) : null; return { tab: s, content: o }; }, z = (n) => { + // istanbul ignore next @preserve if (!d(n)) return null; const e = S(n, `.${I.join(",.")}`); return e ? F(`.${I[0]}-toggle`, e) : null; }, et = (n) => { const e = K(n.target); + // istanbul ignore else @preserve e && (n.preventDefault(), e.show()); }; class T extends Z { @@ -79,12 +111,14 @@ class T extends Z { (t ? W : X)(this.element, R, et); }); const { element: s } = this, o = P(s); + // istanbul ignore else @preserve if (o) { const r = S(s, ".nav"), i = S(o, ".tab-content"); this.nav = r, this.content = o, this.tabContent = i, this.dropdown = z(s); const { tab: a } = N(this); if (r && !a) { const c = F(D, r), h = c && P(c); + // istanbul ignore else @preserve h && (g(c, l), g(h, E), g(h, l), x(s, $, "true")); } this._toggleEventListeners(!0); @@ -101,18 +135,30 @@ class T extends Z { /** Shows the tab to the user. */ show() { const { element: t, content: s, nav: o, dropdown: r } = this; + // istanbul ignore else @preserve if (!(o && C.get(o)) && !f(t, l)) { const { tab: i, content: a } = N(this); - if (o && p.set(o, { tab: i, content: a, currentHeight: 0, nextHeight: 0 }), y.relatedTarget = t, d(i) && (w(i, y), !y.defaultPrevented)) { - g(t, l), x(t, $, "true"); - const c = d(i) && z(i); - if (c && f(c, l) && b(c, l), o) { - const h = () => { - i && (b(i, l), x(i, $, "false")), r && !f(r, l) && g(r, l); - }; - a && (f(a, m) || s && f(s, m)) ? C.set(o, h, 1) : h(); + // istanbul ignore else @preserve + o && p.set(o, { tab: i, content: a, currentHeight: 0, nextHeight: 0 }), y.relatedTarget = t; + // istanbul ignore else @preserve + if (d(i)) { + w(i, y); + // istanbul ignore else @preserve + if (!y.defaultPrevented) { + g(t, l), x(t, $, "true"); + const c = d(i) && z(i); + c && f(c, l) && b(c, l); + // istanbul ignore else @preserve + if (o) { + const h = () => { + // istanbul ignore else @preserve + i && (b(i, l), x(i, $, "false")), r && !f(r, l) && g(r, l); + }; + a && (f(a, m) || s && f(s, m)) ? C.set(o, h, 1) : h(); + } + // istanbul ignore else @preserve + a && (b(a, E), f(a, m) ? k(a, () => q(this)) : q(this)); } - a && (b(a, E), f(a, m) ? k(a, () => q(this)) : q(this)); } } } diff --git a/dist/components/tab.mjs.map b/dist/components/tab.mjs.map index 1e2cdffa..1f86dcc1 100644 --- a/dist/components/tab.mjs.map +++ b/dist/components/tab.mjs.map @@ -1 +1 @@ -{"version":3,"file":"tab.mjs","sources":["../../src/strings/tabString.ts","../../src/strings/tabComponent.ts","../../src/components/tab.ts"],"sourcesContent":["/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["tabString","tabComponent","tabSelector","dataBsToggle","getTabInstance","element","getInstance","tabInitCallback","Tab","showTabEvent","createCustomEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","self","tabContent","nav","hasClass","collapsingClass","removeClass","Timer","triggerTabShow","nextContent","tab","isHTMLElement","fadeClass","currentHeight","nextHeight","reflow","emulateTransitionEnd","dispatchEvent","triggerTabHide","content","addClass","activeClass","c","showClass","getActiveTab","activeTabs","getElementsByClassName","dropdownClasses","getTargetElement","getParentDropdown","dropdown","closest","querySelector","tabClickHandler","e","BaseComponent","target","__publicField","add","addListener","removeListener","mouseclickEvent","container","firstTab","firstTabContent","setAttribute","ariaSelected","activeDropdown","toggleTab"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tab.mjs","sources":["../../src/strings/tabString.ts","../../src/strings/tabComponent.ts","../../src/components/tab.ts"],"sourcesContent":["/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n"],"names":["tabString","tabComponent","tabSelector","dataBsToggle","getTabInstance","element","getInstance","tabInitCallback","Tab","showTabEvent","createCustomEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","self","tabContent","nav","hasClass","collapsingClass","removeClass","Timer","triggerTabShow","nextContent","tab","isHTMLElement","fadeClass","currentHeight","nextHeight","reflow","emulateTransitionEnd","dispatchEvent","triggerTabHide","content","addClass","activeClass","c","showClass","getActiveTab","activeTabs","getElementsByClassName","dropdownClasses","getTargetElement","getParentDropdown","dropdown","closest","querySelector","tabClickHandler","e","BaseComponent","target","__publicField","add","addListener","removeListener","mouseclickEvent","container","firstTab","firstTabContent","setAttribute","ariaSelected","activeDropdown","toggleTab"],"mappings":";;;;;;;;;;;;;AACA,MAAMA,IAAY,OCAZC,IAAe,OCqCfC,IAAc,IAAIC,CAAY,KAAKH,CAAS,MAM5CI,IAAiB,CAACC,MAAyBC,EAAiBD,GAASJ,CAAY,GAGjFM,KAAkB,CAACF,MAAyB,IAAIG,EAAIH,CAAO,GAQ3DI,IAAeC,EAA2C,WAAWV,CAAS,EAAE,GAChFW,IAAgBD,EAA2C,YAAYV,CAAS,EAAE,GAClFY,IAAeF,EAA2C,WAAWV,CAAS,EAAE,GAChFa,IAAiBH,EAA2C,aAAaV,CAAS,EAAE,GAapFc,wBAA+C,OAS/CC,IAAgB,CAACC,MAAc;AAC7B,QAAA,EAAE,YAAAC,GAAY,KAAAC,EAAQ,IAAAF;AAAA,EAAA;AAG5B,EAAIC,KAAcE,EAASF,GAAYG,CAAe,MACpDH,EAAW,MAAM,SAAS,IAC1BI,EAAYJ,GAAYG,CAAe;AAAA,EACzC;AAGI,EAAAF,KAAWI,EAAA,MAAMJ,CAAG;AAC1B,GAOMK,IAAiB,CAACP,MAAc;AACpC,QAAM,EAAE,SAAAX,GAAS,YAAAY,GAAY,SAASO,GAAa,KAAAN,EAAQ,IAAAF,GACrD,EAAE,KAAAS,EAAA,IAASC,EAAcR,CAAG,KAAKJ,EAAW,IAAII,CAAG,KAAM,EAAE,KAAK,KAAK;AAAA,EAAA;AAAA,EAAG;AAG9E,MAAID,KAAcO,KAAeL,EAASK,GAAaG,CAAS,GAAG;AACjE,UAAM,EAAE,eAAAC,GAAe,YAAAC,EAAW,IAAIf,EAAW,IAAIT,CAAO,KAAK,EAAE,eAAe,GAAG,YAAY,EAAE;AAAA,IAAA;AAAA,IAAG;AAEtG,IAAIuB,MAAkBC,IAEpB,WAAW,MAAM;AACJ,MAAAZ,EAAA,MAAM,SAAS,GAAGY,CAAU,MACvCC,EAAOb,CAAU,GACjBc,EAAqBd,GAAY,MAAMF,EAAcC,CAAI,CAAC;AAAA,OACzD,EAAE,IAELD,EAAcC,CAAI;AAAA,EAEX,MAAA,CAAAE,KAAWI,EAAA,MAAMJ,CAAG;AAE/B,EAAAP,EAAc,gBAAgBc,GAE9BO,EAAc3B,GAASM,CAAa;AACtC,GAOMsB,IAAiB,CAACjB,MAAc;AACpC,QAAM,EAAE,SAAAX,GAAS,SAASmB,GAAa,YAAAP,GAAY,KAAAC,EAAQ,IAAAF,GACrD,EAAE,KAAAS,GAAK,SAAAS,EAAQ,IAAKhB,KAAOJ,EAAW,IAAII,CAAG,KAAM;AAAA;AAAA,IAEvD,KAAK;AAAA,IACL,SAAS;AAAA,EAAA;AAEX,MAAIU,IAAgB;AAAA,EAAA;AAGpB,EAAIX,KAAcO,KAAeL,EAASK,GAAaG,CAAS,MAC9D,CAACO,GAASV,CAAW,EAAE,QAAQ,CAAK,MAAA;AAAA,IAAA;AAElC,IAAIE,EAAc,CAAC,KAAGS,EAAS,GAAG,iBAAiB;AAAA,EAAA,CACpD,GACeP,IAAAF,EAAcQ,CAAO,IACjCA,EAAQ;AAAA;AAAA,IAER;AAAA,MAINzB,EAAa,gBAAgBgB,GAC7BZ,EAAe,gBAAgBR,GAC/B2B,EAAc3B,GAASI,CAAY;AAAA,EAAA;AAG/B,MAAA,CAACA,EAAa,kBAAkB;AAAA,IAAA;AAE9B,IAAAe,KAAsBW,EAAAX,GAAaY,CAAW;AAAA,IAAA;AAE9C,IAAAF,KAAqBb,EAAAa,GAASE,CAAW;AAAA,IAAA;AAG7C,QAAInB,KAAcO,KAAeL,EAASK,GAAaG,CAAS,GAAG;AACjE,YAAME,IAAaL,EAAY;AAC/B,MAAAV,EAAW,IAAIT,GAAS;AAAA,QACtB,eAAAuB;AAAA,QACA,YAAAC;AAAA,QACA,KAAK;AAAA,QACL,SAAS;AAAA,MAAA,CACV,GAEDM,EAASlB,GAAYG,CAAe,GACzBH,EAAA,MAAM,SAAS,GAAGW,CAAa,MAC1CE,EAAOb,CAAU,GACjB,CAACiB,GAASV,CAAW,EAAE,QAAQ,CAAKa,MAAA;AAAA,QAAA;AAE9B,QAAAA,KAAehB,EAAAgB,GAAG,iBAAiB;AAAA,MAAA,CACxC;AAAA,IACH;AAEA,QAAIb,KAAeA,KAAeL,EAASK,GAAaG,CAAS;AAC/D,iBAAW,MAAM;AACf,QAAAQ,EAASX,GAAac,CAAS,GAC/BP,EAAqBP,GAAa,MAAM;AACtC,UAAAD,EAAeP,CAAI;AAAA,QAAA,CACpB;AAAA,SACA,CAAC;AAAA,SACC;AAAA,MAAA;AAED,MAAAQ,KAAsBW,EAAAX,GAAac,CAAS,GAChDf,EAAeP,CAAI;AAAA,IACrB;AAAA,IAAA;AAGI,IAAAS,KAAmBO,EAAAP,GAAKZ,CAAc;AAAA,EAC5C;AACF,GAQM0B,IAAe,CAACvB,MAAwE;AACtF,QAAA,EAAE,KAAAE,EAAQ,IAAAF;AAAA,EAAA;AAEZ,MAAA,CAACU,EAAcR,CAA8B;AAC/C,WAAO,EAAE,KAAK,MAAM,SAAS,KAAK;AAG9B,QAAAsB,IAAaC,EAAuBL,GAAalB,CAAkB;AACzE,MAAIO,IAA0B;AAAA,EAAA;AAE9B,EAAIe,EAAW,WAAW,KAAK,CAACE,EAAgB,KAAK,CAAAL,MAAKlB,EAASqB,EAAW,CAAC,EAAE,eAA8BH,CAAC,CAAC,IAC/G,CAACZ,CAAG,IAAIe,IACCA,EAAW,SAAS,MACvBf,IAAAe,EAAWA,EAAW,SAAS,CAAC;AAExC,QAAMN,IAAUR,EAAcD,CAAkB,IAAIkB,EAAiBlB,CAAkB,IAAI;AACpF,SAAA,EAAE,KAAAA,GAAK,SAAAS;AAChB,GAQMU,IAAoB,CAACvC,MAA8C;AAAA,EAAA;AAEvE,MAAI,CAACqB,EAAcrB,CAAO,EAAU,QAAA;AAC9B,QAAAwC,IAAWC,EAAQzC,GAAS,IAAIqC,EAAgB,KAAK,IAAI,CAAC,EAAE;AAC3D,SAAAG,IAAWE,EAAc,IAAIL,EAAgB,CAAC,CAAC,WAAWG,CAAQ,IAAI;AAC/E,GASMG,KAAkB,CAACC,MAAa;AAC9B,QAAAjC,IAAOZ,EAAe6C,EAAE,MAAqB;AAAA,EAAA;AAGnD,EAAIjC,MACFiC,EAAE,eAAe,GACjBjC,EAAK,KAAK;AAEd;AAKA,MAAqBR,UAAY0C,EAAc;AAAA;AAAA,EAW7C,YAAYC,GAA8B;AACxC,UAAMA,CAAM;AAmHd;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAC,EAAA,+BAAwB,CAACC,MAAkB;AAElC,OADQA,IAAMC,IAAcC,GAC5B,KAAK,SAASC,GAAiBR,EAAe;AAAA,IAAA;AAlH/C,UAAA,EAAE,SAAA3C,EAAY,IAAA,MACd6B,IAAUS,EAAiBtC,CAAO;AAAA,IAAA;AAIxC,QAAI6B,GAAS;AACL,YAAAhB,IAAM4B,EAAQzC,GAAS,MAAM,GAC7BoD,IAAYX,EAAQZ,GAAS,cAAc;AAEjD,WAAK,MAAMhB,GACX,KAAK,UAAUgB,GACf,KAAK,aAAauB,GAGb,KAAA,WAAWb,EAAkBvC,CAAO;AAIzC,YAAM,EAAE,KAAAoB,EAAA,IAAQc,EAAa,IAAI;AAC7B,UAAArB,KAAO,CAACO,GAAK;AACT,cAAAiC,IAAWX,EAAc7C,GAAagB,CAAG,GACzCyC,IAAkBD,KAAYf,EAAiBe,CAAQ;AAAA,QAAA;AAG7D,QAAIC,MACFxB,EAASuB,GAAUtB,CAAW,GAC9BD,EAASwB,GAAiBrB,CAAS,GACnCH,EAASwB,GAAiBvB,CAAW,GACxBwB,EAAAvD,GAASwD,GAAc,MAAM;AAAA,MAE9C;AAGA,WAAK,sBAAsB,EAAI;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO;AACF,WAAA5D;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AACL,UAAM,EAAE,SAAAI,GAAS,SAASmB,GAAa,KAAAN,GAAK,UAAA2B,EAAa,IAAA;AAAA,IAAA;AAGrD,QAAA,EAAE3B,KAAOI,EAAM,IAAIJ,CAAG,MAAM,CAACC,EAASd,GAAS+B,CAAW,GAAG;AAC/D,YAAM,EAAE,KAAAX,GAAK,SAAAS,EAAQ,IAAIK,EAAa,IAAI;AAAA,MAAA;AAG1C,MAAIrB,KACSJ,EAAA,IAAII,GAAK,EAAE,KAAAO,GAAK,SAAAS,GAAS,eAAe,GAAG,YAAY,EAAA,CAAG,GAIvEtB,EAAa,gBAAgBP;AAAA,MAAA;AAGzB,UAAAqB,EAAcD,CAAG,GAAG;AACtB,QAAAO,EAAcP,GAAoBb,CAAY;AAAA,QAAA;AAE1C,YAAA,CAACA,EAAa,kBAAkB;AAClC,UAAAuB,EAAS9B,GAAS+B,CAAW,GAChBwB,EAAAvD,GAASwD,GAAc,MAAM;AAE1C,gBAAMC,IAAiBpC,EAAcD,CAAG,KAAKmB,EAAkBnB,CAAG;AAClE,UAAIqC,KAAkB3C,EAAS2C,GAAgB1B,CAAW,KACxDf,EAAYyC,GAAgB1B,CAAW;AAAA,UACzC;AAGA,cAAIlB,GAAK;AACP,kBAAM6C,IAAY,MAAM;AAAA,cAAA;AAEtB,cAAItC,MACFJ,EAAYI,GAAKW,CAAW,GACfwB,EAAAnC,GAAKoC,GAAc,OAAO,IAErChB,KAAY,CAAC1B,EAAS0B,GAAUT,CAAW,KAC7CD,EAASU,GAAUT,CAAW;AAAA,YAChC;AAGE,YAAAF,MAAYf,EAASe,GAASP,CAAS,KAAMH,KAAeL,EAASK,GAAaG,CAAS,KACvFL,EAAA,IAAIJ,GAAK6C,GAAW,CAAC,IACZA,EAAA;AAAA,UACnB;AAAA,UAAA;AAGA,UAAI7B,MACFb,EAAYa,GAASI,CAAS,GAC1BnB,EAASe,GAASP,CAAS,IAC7BI,EAAqBG,GAAS,MAAMD,EAAe,IAAI,CAAC,IAExDA,EAAe,IAAI;AAAA,QAGzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA,EAaA,UAAU;AACR,SAAK,sBAAsB,GAC3B,MAAM,QAAQ;AAAA,EAChB;AACF;AAxIEmB,EADmB5C,GACZ,YAAWN,IAClBkD,EAFmB5C,GAEZ,QAAOD,KACd6C,EAHmB5C,GAGZ,eAAcJ;"} \ No newline at end of file diff --git a/dist/components/toast.cjs b/dist/components/toast.cjs index 94a0c43e..73f2c12e 100644 --- a/dist/components/toast.cjs +++ b/dist/components/toast.cjs @@ -1,2 +1,11 @@ -"use strict";var b=Object.defineProperty;var L=(n,t,s)=>t in n?b(n,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[t]=s;var r=(n,t,s)=>L(n,typeof t!="symbol"?t+"":t,s);const e=require("@thednp/shorty"),v=require("@thednp/event-listener"),h=require("./fadeClass-Co6nOzNJ.js"),u=require("./showClass-D_Ms1FgG.js"),B=require("./dataBsDismiss-CMHF7If_.js"),k=require("./dataBsToggle-Dj-Ng54N.js"),w=require("./getTargetElement-Cl-PhUJH.js"),I=require("./base-component-j_bwTL_x.js"),i="toast",q="Toast",_=`.${i}`,x=`[${B.dataBsDismiss}="${i}"]`,S=`[${k.dataBsToggle}="${i}"]`,c="showing",$="hide",A={animation:!0,autohide:!0,delay:5e3},C=n=>e.getInstance(n,q),H=n=>new d(n),f=e.createCustomEvent(`show.bs.${i}`),P=e.createCustomEvent(`shown.bs.${i}`),E=e.createCustomEvent(`hide.bs.${i}`),N=e.createCustomEvent(`hidden.bs.${i}`),T=n=>{const{element:t,options:s}=n;e.removeClass(t,c),e.Timer.clear(t,c),e.dispatchEvent(t,P),s.autohide&&e.Timer.set(t,()=>n.hide(),s.delay,i)},p=n=>{const{element:t}=n;e.removeClass(t,c),e.removeClass(t,u.showClass),e.addClass(t,$),e.Timer.clear(t,i),e.dispatchEvent(t,N)},j=n=>{const{element:t,options:s}=n;e.addClass(t,c),s.animation?(e.reflow(t),e.emulateTransitionEnd(t,()=>p(n))):p(n)},z=n=>{const{element:t,options:s}=n;e.Timer.set(t,()=>{e.removeClass(t,$),e.reflow(t),e.addClass(t,u.showClass),e.addClass(t,c),s.animation?e.emulateTransitionEnd(t,()=>T(n)):T(n)},17,c)},F=n=>{e.Timer.clear(n.element,i),n._toggleEventListeners()},G=n=>{const{target:t}=n,s=t&&e.closest(t,S),o=s&&w.getTargetElement(s),a=o&&C(o);a&&(s&&s.tagName==="A"&&n.preventDefault(),a.relatedTarget=s,a.show())},J=n=>{const t=n.target,s=C(t),{type:o,relatedTarget:a}=n;s&&t!==a&&!t.contains(a)&&([e.mouseenterEvent,e.focusinEvent].includes(o)?e.Timer.clear(t,i):e.Timer.set(t,()=>s.hide(),s.options.delay,i))};class d extends I.BaseComponent{constructor(s,o){super(s,o);r(this,"show",()=>{const{element:s,isShown:o}=this;s&&!o&&(e.dispatchEvent(s,f),f.defaultPrevented||z(this))});r(this,"hide",()=>{const{element:s,isShown:o}=this;s&&o&&(e.dispatchEvent(s,E),E.defaultPrevented||j(this))});r(this,"_toggleEventListeners",s=>{const o=s?v.addListener:v.removeListener,{element:a,triggers:l,dismiss:m,options:y,hide:D}=this;m&&o(m,e.mouseclickEvent,D),y.autohide&&[e.focusinEvent,e.focusoutEvent,e.mouseenterEvent,e.mouseleaveEvent].forEach(g=>o(a,g,J)),l.length&&l.forEach(g=>o(g,e.mouseclickEvent,G))});const{element:a,options:l}=this;l.animation&&!e.hasClass(a,h.fadeClass)?e.addClass(a,h.fadeClass):!l.animation&&e.hasClass(a,h.fadeClass)&&e.removeClass(a,h.fadeClass),this.dismiss=e.querySelector(x,a),this.triggers=[...e.querySelectorAll(S,e.getDocument(a))].filter(m=>w.getTargetElement(m)===a),this._toggleEventListeners(!0)}get name(){return q}get defaults(){return A}get isShown(){return e.hasClass(this.element,u.showClass)}dispose(){const{element:s,isShown:o}=this;o&&e.removeClass(s,u.showClass),F(this),super.dispose()}}r(d,"selector",_),r(d,"init",H),r(d,"getInstance",C);module.exports=d; +"use strict";var D=Object.defineProperty;var L=(n,t,s)=>t in n?D(n,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[t]=s;var r=(n,t,s)=>L(n,typeof t!="symbol"?t+"":t,s);const e=require("@thednp/shorty"),v=require("@thednp/event-listener"),h=require("./fadeClass-Co6nOzNJ.js"),u=require("./showClass-D_Ms1FgG.js"),B=require("./dataBsDismiss-CMHF7If_.js"),k=require("./dataBsToggle-Dj-Ng54N.js"),w=require("./getTargetElement-Cl-PhUJH.js"),I=require("./base-component-DBcDoOjV.js"),i="toast",q="Toast",_=`.${i}`,x=`[${B.dataBsDismiss}="${i}"]`,S=`[${k.dataBsToggle}="${i}"]`,c="showing",$="hide",A={animation:!0,autohide:!0,delay:5e3},C=n=>e.getInstance(n,q),H=n=>new d(n),f=e.createCustomEvent(`show.bs.${i}`),P=e.createCustomEvent(`shown.bs.${i}`),E=e.createCustomEvent(`hide.bs.${i}`),N=e.createCustomEvent(`hidden.bs.${i}`),T=n=>{const{element:t,options:s}=n;e.removeClass(t,c),e.Timer.clear(t,c),e.dispatchEvent(t,P);// istanbul ignore else @preserve +s.autohide&&e.Timer.set(t,()=>n.hide(),s.delay,i)},p=n=>{const{element:t}=n;e.removeClass(t,c),e.removeClass(t,u.showClass),e.addClass(t,$),e.Timer.clear(t,i),e.dispatchEvent(t,N)},j=n=>{const{element:t,options:s}=n;e.addClass(t,c),s.animation?(e.reflow(t),e.emulateTransitionEnd(t,()=>p(n))):p(n)},z=n=>{const{element:t,options:s}=n;e.Timer.set(t,()=>{e.removeClass(t,$),e.reflow(t),e.addClass(t,u.showClass),e.addClass(t,c),s.animation?e.emulateTransitionEnd(t,()=>T(n)):T(n)},17,c)},F=n=>{const{target:t}=n,s=t&&e.closest(t,S),o=s&&w.getTargetElement(s),a=o&&C(o);// istanbul ignore else @preserve +if(a){// istanbul ignore else @preserve +s&&s.tagName==="A"&&n.preventDefault(),a.relatedTarget=s,a.show()}},G=n=>{const t=n.target,s=C(t),{type:o,relatedTarget:a}=n;// istanbul ignore else @preserve: a solid filter is required +s&&t!==a&&!t.contains(a)&&([e.mouseenterEvent,e.focusinEvent].includes(o)?e.Timer.clear(t,i):e.Timer.set(t,()=>s.hide(),s.options.delay,i))};class d extends I.BaseComponent{constructor(s,o){super(s,o);r(this,"show",()=>{const{element:s,isShown:o}=this;// istanbul ignore else @preserve +s&&!o&&(e.dispatchEvent(s,f),f.defaultPrevented||z(this))});r(this,"hide",()=>{const{element:s,isShown:o}=this;// istanbul ignore else @preserve +s&&o&&(e.dispatchEvent(s,E),E.defaultPrevented||j(this))});r(this,"_toggleEventListeners",s=>{const o=s?v.addListener:v.removeListener,{element:a,triggers:l,dismiss:m,options:y,hide:b}=this;// istanbul ignore else @preserve +m&&o(m,e.mouseclickEvent,b);// istanbul ignore else @preserve +y.autohide&&[e.focusinEvent,e.focusoutEvent,e.mouseenterEvent,e.mouseleaveEvent].forEach(g=>o(a,g,G));// istanbul ignore else @preserve +l.length&&l.forEach(g=>o(g,e.mouseclickEvent,F))});const{element:a,options:l}=this;l.animation&&!e.hasClass(a,h.fadeClass)?e.addClass(a,h.fadeClass):!l.animation&&e.hasClass(a,h.fadeClass)&&e.removeClass(a,h.fadeClass),this.dismiss=e.querySelector(x,a),this.triggers=[...e.querySelectorAll(S,e.getDocument(a))].filter(m=>w.getTargetElement(m)===a),this._toggleEventListeners(!0)}get name(){return q}get defaults(){return A}get isShown(){return e.hasClass(this.element,u.showClass)}dispose(){const{element:s,isShown:o}=this;this._toggleEventListeners(),e.Timer.clear(s,i),o&&e.removeClass(s,u.showClass),super.dispose()}}r(d,"selector",_),r(d,"init",H),r(d,"getInstance",C);module.exports=d; //# sourceMappingURL=toast.cjs.map diff --git a/dist/components/toast.cjs.map b/dist/components/toast.cjs.map index f751b5ce..8797ed37 100644 --- a/dist/components/toast.cjs.map +++ b/dist/components/toast.cjs.map @@ -1 +1 @@ -{"version":3,"file":"toast.cjs","sources":["../../src/strings/toastString.ts","../../src/strings/toastComponent.ts","../../src/components/toast.ts"],"sourcesContent":["/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n"],"names":["toastString","toastComponent","toastSelector","toastDismissSelector","dataBsDismiss","toastToggleSelector","dataBsToggle","showingClass","hideClass","toastDefaults","getToastInstance","element","getInstance","toastInitCallback","Toast","showToastEvent","createCustomEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","self","options","removeClass","Timer","dispatchEvent","hideToastComplete","showClass","addClass","hideToast","reflow","emulateTransitionEnd","showToast","completeDisposeToast","toastClickHandler","e","target","trigger","closest","getTargetElement","interactiveToastHandler","type","relatedTarget","mouseenterEvent","focusinEvent","BaseComponent","config","__publicField","isShown","add","action","addListener","removeListener","triggers","dismiss","hide","mouseclickEvent","focusoutEvent","mouseleaveEvent","btn","hasClass","fadeClass","querySelector","querySelectorAll","getDocument"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"toast.cjs","sources":["../../src/strings/toastString.ts","../../src/strings/toastComponent.ts","../../src/components/toast.ts"],"sourcesContent":["/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n"],"names":["toastString","toastComponent","toastSelector","toastDismissSelector","dataBsDismiss","toastToggleSelector","dataBsToggle","showingClass","hideClass","toastDefaults","getToastInstance","element","getInstance","toastInitCallback","Toast","showToastEvent","createCustomEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","self","options","removeClass","Timer","dispatchEvent","hideToastComplete","showClass","addClass","hideToast","reflow","emulateTransitionEnd","showToast","toastClickHandler","e","target","trigger","closest","getTargetElement","interactiveToastHandler","type","relatedTarget","mouseenterEvent","focusinEvent","BaseComponent","config","__publicField","isShown","add","action","addListener","removeListener","triggers","dismiss","hide","mouseclickEvent","focusoutEvent","mouseleaveEvent","btn","hasClass","fadeClass","querySelector","querySelectorAll","getDocument"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/toast.mjs b/dist/components/toast.mjs index 79a3a409..b1e889c9 100644 --- a/dist/components/toast.mjs +++ b/dist/components/toast.mjs @@ -1,27 +1,29 @@ var P = Object.defineProperty; var N = (s, t, e) => t in s ? P(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e; var a = (s, t, e) => N(s, typeof t != "symbol" ? t + "" : t, e); -import { createCustomEvent as v, hasClass as w, addClass as d, removeClass as c, querySelector as j, querySelectorAll as z, getDocument as F, dispatchEvent as u, mouseclickEvent as C, focusinEvent as b, focusoutEvent as G, mouseenterEvent as L, mouseleaveEvent as J, getInstance as K, reflow as B, emulateTransitionEnd as I, Timer as r, closest as M } from "@thednp/shorty"; +import { createCustomEvent as v, hasClass as w, addClass as d, removeClass as c, querySelector as j, querySelectorAll as z, getDocument as F, dispatchEvent as u, mouseclickEvent as C, focusinEvent as D, focusoutEvent as G, mouseenterEvent as L, mouseleaveEvent as J, Timer as r, getInstance as K, reflow as B, emulateTransitionEnd as I, closest as M } from "@thednp/shorty"; import { addListener as O, removeListener as Q } from "@thednp/event-listener"; import { f } from "./fadeClass-CLIYI_zn.mjs"; import { s as p } from "./showClass-C8hdJfjQ.mjs"; import { d as R } from "./dataBsDismiss-DdNPQYa-.mjs"; import { d as U } from "./dataBsToggle-B84TS15h.mjs"; import { g as k } from "./getTargetElement-DbfK8LsG.mjs"; -import { B as V } from "./base-component-DvIOojVW.mjs"; +import { B as V } from "./base-component-nXu3wApu.mjs"; const i = "toast", _ = "Toast", W = `.${i}`, X = `[${R}="${i}"]`, q = `[${U}="${i}"]`, l = "showing", x = "hide", Y = { animation: !0, autohide: !0, delay: 5e3 }, T = (s) => K(s, _), Z = (s) => new g(s), S = v(`show.bs.${i}`), tt = v(`shown.bs.${i}`), $ = v(`hide.bs.${i}`), et = v(`hidden.bs.${i}`), y = (s) => { const { element: t, options: e } = s; - c(t, l), r.clear(t, l), u(t, tt), e.autohide && r.set(t, () => s.hide(), e.delay, i); -}, D = (s) => { + c(t, l), r.clear(t, l), u(t, tt); + // istanbul ignore else @preserve + e.autohide && r.set(t, () => s.hide(), e.delay, i); +}, b = (s) => { const { element: t } = s; c(t, l), c(t, p), d(t, x), r.clear(t, i), u(t, et); }, st = (s) => { const { element: t, options: e } = s; - d(t, l), e.animation ? (B(t), I(t, () => D(s))) : D(s); + d(t, l), e.animation ? (B(t), I(t, () => b(s))) : b(s); }, ot = (s) => { const { element: t, options: e } = s; r.set( @@ -33,13 +35,16 @@ const i = "toast", _ = "Toast", W = `.${i}`, X = `[${R}="${i}"]`, q = `[${U}="${ l ); }, nt = (s) => { - r.clear(s.element, i), s._toggleEventListeners(); -}, it = (s) => { const { target: t } = s, e = t && M(t, q), o = e && k(e), n = o && T(o); - n && (e && e.tagName === "A" && s.preventDefault(), n.relatedTarget = e, n.show()); -}, at = (s) => { + // istanbul ignore else @preserve + if (n) { + // istanbul ignore else @preserve + e && e.tagName === "A" && s.preventDefault(), n.relatedTarget = e, n.show(); + } +}, it = (s) => { const t = s.target, e = T(t), { type: o, relatedTarget: n } = s; - e && t !== n && !t.contains(n) && ([L, b].includes(o) ? r.clear(t, i) : r.set(t, () => e.hide(), e.options.delay, i)); + // istanbul ignore else @preserve: a solid filter is required + e && t !== n && !t.contains(n) && ([L, D].includes(o) ? r.clear(t, i) : r.set(t, () => e.hide(), e.options.delay, i)); }; class g extends V { /** @@ -53,11 +58,13 @@ class g extends V { /** Shows the toast. */ a(this, "show", () => { const { element: e, isShown: o } = this; + // istanbul ignore else @preserve e && !o && (u(e, S), S.defaultPrevented || ot(this)); }); /** Hides the toast. */ a(this, "hide", () => { const { element: e, isShown: o } = this; + // istanbul ignore else @preserve e && o && (u(e, $), $.defaultPrevented || st(this)); }); /** @@ -67,9 +74,14 @@ class g extends V { */ a(this, "_toggleEventListeners", (e) => { const o = e ? O : Q, { element: n, triggers: m, dismiss: h, options: A, hide: H } = this; - h && o(h, C, H), A.autohide && [b, G, L, J].forEach( - (E) => o(n, E, at) - ), m.length && m.forEach((E) => o(E, C, it)); + // istanbul ignore else @preserve + h && o(h, C, H); + // istanbul ignore else @preserve + A.autohide && [D, G, L, J].forEach( + (E) => o(n, E, it) + ); + // istanbul ignore else @preserve + m.length && m.forEach((E) => o(E, C, nt)); }); const { element: n, options: m } = this; m.animation && !w(n, f) ? d(n, f) : !m.animation && w(n, f) && c(n, f), this.dismiss = j(X, n), this.triggers = [...z(q, F(n))].filter( @@ -97,7 +109,7 @@ class g extends V { /** Removes the `Toast` component from the target element. */ dispose() { const { element: e, isShown: o } = this; - o && c(e, p), nt(this), super.dispose(); + this._toggleEventListeners(), r.clear(e, i), o && c(e, p), super.dispose(); } } a(g, "selector", W), a(g, "init", Z), a(g, "getInstance", T); diff --git a/dist/components/toast.mjs.map b/dist/components/toast.mjs.map index f8e6b1db..a666764e 100644 --- a/dist/components/toast.mjs.map +++ b/dist/components/toast.mjs.map @@ -1 +1 @@ -{"version":3,"file":"toast.mjs","sources":["../../src/strings/toastString.ts","../../src/strings/toastComponent.ts","../../src/components/toast.ts"],"sourcesContent":["/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n"],"names":["toastString","toastComponent","toastSelector","toastDismissSelector","dataBsDismiss","toastToggleSelector","dataBsToggle","showingClass","hideClass","toastDefaults","getToastInstance","element","getInstance","toastInitCallback","Toast","showToastEvent","createCustomEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","self","options","removeClass","Timer","dispatchEvent","hideToastComplete","showClass","addClass","hideToast","reflow","emulateTransitionEnd","showToast","completeDisposeToast","toastClickHandler","e","target","trigger","closest","getTargetElement","interactiveToastHandler","type","relatedTarget","mouseenterEvent","focusinEvent","BaseComponent","config","__publicField","isShown","add","action","addListener","removeListener","triggers","dismiss","hide","mouseclickEvent","focusoutEvent","mouseleaveEvent","btn","hasClass","fadeClass","querySelector","querySelectorAll","getDocument"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"toast.mjs","sources":["../../src/strings/toastString.ts","../../src/strings/toastComponent.ts","../../src/components/toast.ts"],"sourcesContent":["/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n"],"names":["toastString","toastComponent","toastSelector","toastDismissSelector","dataBsDismiss","toastToggleSelector","dataBsToggle","showingClass","hideClass","toastDefaults","getToastInstance","element","getInstance","toastInitCallback","Toast","showToastEvent","createCustomEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","self","options","removeClass","Timer","dispatchEvent","hideToastComplete","showClass","addClass","hideToast","reflow","emulateTransitionEnd","showToast","toastClickHandler","e","target","trigger","closest","getTargetElement","interactiveToastHandler","type","relatedTarget","mouseenterEvent","focusinEvent","BaseComponent","config","__publicField","isShown","add","action","addListener","removeListener","triggers","dismiss","hide","mouseclickEvent","focusoutEvent","mouseleaveEvent","btn","hasClass","fadeClass","querySelector","querySelectorAll","getDocument"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tooltip-B1BCkN2D.mjs b/dist/components/tooltip-B1BCkN2D.mjs new file mode 100644 index 00000000..de6831b0 --- /dev/null +++ b/dist/components/tooltip-B1BCkN2D.mjs @@ -0,0 +1,380 @@ +var qt = Object.defineProperty; +var Ut = (e, i, o) => i in e ? qt(e, i, { enumerable: !0, configurable: !0, writable: !0, value: o }) : e[i] = o; +var g = (e, i, o) => Ut(e, typeof i != "symbol" ? i + "" : i, o); +import { isRTL as xt, setElementStyle as ht, getDocumentElement as Yt, getElementStyle as it, getBoundingClientRect as Gt, isHTMLElement as x, createCustomEvent as J, toLowerCase as K, dispatchEvent as Q, isString as Jt, isFunction as Kt, isNodeList as Qt, isArray as Vt, isNode as Xt, createElement as q, setAttribute as st, querySelector as et, addClass as W, hasClass as Y, getParentNode as Zt, isShadowRoot as te, isTableElement as ee, getDocument as nt, getInstance as St, getUID as oe, ObjectAssign as ie, hasAttribute as Nt, focus as se, Timer as B, ariaDescribedBy as Lt, emulateTransitionEnd as pt, removeClass as ne, mousehoverEvent as le, mousedownEvent as ae, mouseenterEvent as ce, mouseleaveEvent as re, touchstartEvent as At, passiveHandler as V, mouseclickEvent as mt, focusEvent as de, focusinEvent as he, focusoutEvent as pe, isApple as me, closest as vt, getWindow as Wt, resizeEvent as Bt, scrollEvent as Ot, getAttribute as fe, removeAttribute as Rt } from "@thednp/shorty"; +import { addListener as ut, removeListener as gt } from "@thednp/event-listener"; +import { d as ue } from "./dataBsToggle-B84TS15h.mjs"; +import { s as ft } from "./showClass-C8hdJfjQ.mjs"; +import { a as ge, h as ve, m as bt, o as wt, r as be } from "./popupContainer-BitC465I.mjs"; +import { f as Et } from "./fadeClass-CLIYI_zn.mjs"; +import { B as we } from "./base-component-nXu3wApu.mjs"; +const ot = "popover", Dt = "Popover", T = "tooltip", Ee = (e) => { + const i = e === T, o = i ? `${e}-inner` : `${e}-body`, t = i ? "" : `

`, s = `
`, n = `
`; + return `
${t + s + n}
`; +}, Mt = { + top: "top", + bottom: "bottom", + left: "start", + right: "end" +}, $t = (e) => { + const i = /\b(top|bottom|start|end)+/, { element: o, tooltip: t, container: s, options: n, arrow: a } = e; + // istanbul ignore else @preserve + if (t) { + const p = { ...Mt }, f = xt(o); + ht(t, { + // top: '0px', left: '0px', right: '', bottom: '', + top: "", + left: "", + right: "", + bottom: "" + }); + const c = e.name === Dt, { offsetWidth: r, offsetHeight: d } = t, { clientWidth: b, clientHeight: w, offsetWidth: R } = Yt(o); + let { placement: l } = n; + const { clientWidth: E, offsetWidth: $ } = s, S = it(s, "position") === "fixed", h = Math.abs(S ? E - $ : b - R), N = f && S ? ( + // istanbul ignore next @preserve + h + ) : 0, C = b - (f ? 0 : h) - 1, { + width: u, + height: v, + left: m, + right: jt, + top: D + } = Gt(o, !0), { x: X, y: k } = { + x: m, + y: D + }; + ht(a, { + top: "", + left: "", + right: "", + bottom: "" + }); + let L = 0, F = "", P = 0, at = "", M = "", Z = "", ct = ""; + const A = a.offsetWidth || 0, y = a.offsetHeight || 0, rt = A / 2; + let I = D - d - y < 0, _ = D + d + v + y >= w, j = m - r - A < N, z = m + r + u + A >= C; + const tt = ["left", "right"], dt = ["top", "bottom"]; + I = tt.includes(l) ? D + v / 2 - d / 2 - y < 0 : I, _ = tt.includes(l) ? D + d / 2 + v / 2 + y >= w : _, j = dt.includes(l) ? m + u / 2 - r / 2 < N : j, z = dt.includes(l) ? m + r / 2 + u / 2 >= C : z, l = tt.includes(l) && j && z ? "top" : l, l = l === "top" && I ? "bottom" : l, l = l === "bottom" && _ ? "top" : l, l = l === "left" && j ? "right" : l, l = l === "right" && z ? "left" : ( + // istanbul ignore next @preserve + l + ), t.className.includes(l) || (t.className = t.className.replace(i, p[l])); + // istanbul ignore else @preserve + tt.includes(l) ? (l === "left" ? P = X - r - (c ? A : 0) : P = X + u + (c ? A : 0), I && _ ? (L = 0, F = 0, M = D + v / 2 - y / 2) : I ? (L = k, F = "", M = v / 2 - A) : _ ? (L = k - d + v, F = "", M = d - v / 2 - A) : (L = k - d / 2 + v / 2, M = d / 2 - y / 2)) : dt.includes(l) && (l === "top" ? L = k - d - (c ? y : 0) : L = k + v + (c ? y : 0), j ? (P = 0, Z = X + u / 2 - rt) : z ? (P = "auto", at = 0, ct = u / 2 + C - jt - rt) : (P = X - r / 2 + u / 2, Z = r / 2 - rt)), ht(t, { + top: `${L}px`, + bottom: F === "" ? "" : `${F}px`, + left: P === "auto" ? P : `${P}px`, + right: at !== "" ? `${at}px` : "" + }); + // istanbul ignore else @preserve + x(a) && (M !== "" && (a.style.top = `${M}px`), Z !== "" ? a.style.left = `${Z}px` : ct !== "" && (a.style.right = `${ct}px`)); + const zt = J( + `updated.bs.${K(e.name)}` + ); + Q(o, zt); + } +}, Tt = { + template: Ee(T), + title: "", + customClass: "", + trigger: "hover focus", + placement: "top", + sanitizeFn: void 0, + animation: !0, + delay: 200, + container: document.body, + content: "", + dismissible: !1, + btnClose: "" +}, kt = "data-original-title", O = "Tooltip", H = (e, i, o) => { + // istanbul ignore else @preserve + if (Jt(i) && i.length) { + let t = i.trim(); + Kt(o) && (t = o(t)); + const n = new DOMParser().parseFromString(t, "text/html"); + e.append(...n.body.childNodes); + } else x(i) ? e.append(i) : (Qt(i) || Vt(i) && i.every(Xt)) && e.append(...i); +}, $e = (e) => { + const i = e.name === O, { id: o, element: t, options: s } = e, { title: n, placement: a, template: p, animation: f, customClass: c, sanitizeFn: r, dismissible: d, content: b, btnClose: w } = s, R = i ? T : ot, l = { ...Mt }; + let E = [], $ = []; + xt(t) && (l.left = "end", l.right = "start"); + const lt = `bs-${R}-${l[a]}`; + let S; + if (x(p)) + S = p; + else { + const N = q("div"); + H(N, p, r), S = N.firstChild; + } + e.tooltip = x(S) ? S.cloneNode(!0) : ( + // istanbul ignore next @preserve + void 0 + ); + const { tooltip: h } = e; + // istanbul ignore else @preserve + if (h) { + st(h, "id", o), st(h, "role", T); + const N = i ? `${T}-inner` : `${ot}-body`, C = i ? null : et(`.${ot}-header`, h), u = et(`.${N}`, h); + e.arrow = et(`.${R}-arrow`, h); + const { arrow: v } = e; + if (x(n)) E = [n.cloneNode(!0)]; + else { + const m = q("div"); + H(m, n, r), E = [...m.childNodes]; + } + if (x(b)) $ = [b.cloneNode(!0)]; + else { + const m = q("div"); + H(m, b, r), $ = [...m.childNodes]; + } + if (d) + if (n) + if (x(w)) + E = [...E, w.cloneNode(!0)]; + else { + const m = q("div"); + H(m, w, r), E = [...E, m.firstChild]; + } + else { + // istanbul ignore else @preserve + if (C && C.remove(), x(w)) + $ = [...$, w.cloneNode(!0)]; + else { + const m = q("div"); + H(m, w, r), $ = [...$, m.firstChild]; + } + } + // istanbul ignore else @preserve + if (i) + n && u && H(u, n, r); + else { + // istanbul ignore else @preserve + n && C && H(C, E, r); + // istanbul ignore else @preserve + b && u && H(u, $, r), e.btn = et(".btn-close", h) || void 0; + } + W(h, "position-fixed"), W(v, "position-absolute"); + // istanbul ignore else @preserve + Y(h, R) || W(h, R); + // istanbul ignore else @preserve + f && !Y(h, Et) && W(h, Et); + // istanbul ignore else @preserve + c && !Y(h, c) && W(h, c); + // istanbul ignore else @preserve + Y(h, lt) || W(h, lt); + } +}, Te = (e) => { + const i = ["HTML", "BODY"], o = []; + let { parentNode: t } = e; + for (; t && !i.includes(t.nodeName); ) { + t = Zt(t); + // istanbul ignore else @preserve + te(t) || ee(t) || o.push(t); + } + return o.find((s, n) => it(s, "position") !== "relative" && o.slice(n + 1).every((a) => it(a, "position") === "static") ? s : null) || // istanbul ignore next: optional guard + nt(e).body; +}, Ce = `[${ue}="${T}"],[data-tip="${T}"]`, Ft = "title"; +let Ct = (e) => St(e, O); +const Pe = (e) => new G(e), ye = (e) => { + const { element: i, tooltip: o, container: t, offsetParent: s } = e; + Rt(i, Lt), be(o, t === s ? t : s); +}, U = (e) => { + const { tooltip: i, container: o, offsetParent: t } = e; + return i && ve(i, o === t ? o : t); +}, He = (e, i) => { + const { element: o } = e; + e._toggleEventListeners(); + // istanbul ignore else @preserve + Nt(o, kt) && e.name === O && _t(e); + // istanbul ignore else @preserve + i && i(); +}, It = (e, i) => { + const o = i ? ut : gt, { element: t } = e; + o(nt(t), At, e.handleTouch, V), [Ot, Bt].forEach((s) => { + o(Wt(t), s, e.update, V); + }); +}, Pt = (e) => { + const { element: i } = e, o = J( + `shown.bs.${K(e.name)}` + ); + It(e, !0), Q(i, o), B.clear(i, "in"); +}, yt = (e) => { + const { element: i } = e, o = J( + `hidden.bs.${K(e.name)}` + ); + It(e), ye(e), Q(i, o), B.clear(i, "out"); +}, Ht = (e, i) => { + const o = i ? ut : gt, { element: t, container: s, offsetParent: n } = e, { offsetHeight: a, scrollHeight: p } = s, f = vt(t, `.${bt}`), c = vt(t, `.${wt}`); + // istanbul ignore else @preserve + const r = Wt(t), b = s === n && a !== p ? s : r; + o(b, Bt, e.update, V), o(b, Ot, e.update, V), f && o(f, `hide.bs.${bt}`, e.handleHide), c && o(c, `hide.bs.${wt}`, e.handleHide); +}, _t = (e, i) => { + const o = [kt, Ft], { element: t } = e; + st( + t, + o[i ? 0 : 1], + i || fe(t, o[0]) || // istanbul ignore next @preserve + "" + ), Rt(t, o[i ? 1 : 0]); +}; +class G extends we { + /** + * @param target the target element + * @param config the instance options + */ + constructor(o, t) { + super(o, t); + // TOOLTIP PUBLIC METHODS + // ====================== + /** Handles the focus event on iOS. */ + // istanbul ignore next @preserve - impossible to test without Apple device + g(this, "handleFocus", () => se(this.element)); + /** Shows the tooltip. */ + g(this, "handleShow", () => this.show()); + /** Hides the tooltip. */ + g(this, "handleHide", () => this.hide()); + /** Updates the tooltip position. */ + g(this, "update", () => { + $t(this); + }); + /** Toggles the tooltip visibility. */ + g(this, "toggle", () => { + const { tooltip: o } = this; + o && !U(this) ? this.show() : this.hide(); + }); + /** + * Handles the `touchstart` event listener for `Tooltip` + * + * @this {Tooltip} + * @param {TouchEvent} e the `Event` object + */ + g(this, "handleTouch", ({ target: o }) => { + const { tooltip: t, element: s } = this; + // istanbul ignore if @preserve + t && t.contains(o) || o === s || o && s.contains(o) || this.hide(); + }); + /** + * Toggles on/off the `Tooltip` event listeners. + * + * @param add when `true`, event listeners are added + */ + g(this, "_toggleEventListeners", (o) => { + const t = o ? ut : gt, { element: s, options: n, btn: a } = this, { trigger: p } = n, c = !!(this.name !== O && n.dismissible); + // istanbul ignore else @preserve + p.includes("manual") || (this.enabled = !!o, p.split(" ").forEach((d) => { + // istanbul ignore else @preserve + if (d === le) { + t(s, ae, this.handleShow), t(s, ce, this.handleShow); + // istanbul ignore else @preserve + c || (t(s, re, this.handleHide), t(nt(s), At, this.handleTouch, V)); + } else if (d === mt) + t(s, d, c ? this.handleShow : this.toggle); + else if (d === de) { + t(s, he, this.handleShow); + // istanbul ignore else @preserve + c || t(s, pe, this.handleHide); + // istanbul ignore else @preserve + me && t(s, mt, this.handleFocus); + } + // istanbul ignore else @preserve + c && a && t(a, mt, this.handleHide); + })); + }); + const { element: s } = this, n = this.name === O, a = n ? T : ot, p = n ? O : Dt; + // istanbul ignore next @preserve: this is to set Popover too + Ct = (c) => St(c, p), this.enabled = !0, this.id = `${a}-${oe(s, a)}`; + const { options: f } = this; + if (!(!f.title && n || !n && !f.content)) { + ie(Tt, { titleAttr: "" }); + // istanbul ignore else @preserve + Nt(s, Ft) && n && typeof f.title == "string" && _t(this, f.title), this.container = Te(s), this.offsetParent = ["sticky", "fixed"].some( + (c) => it(this.container, "position") === c + ) ? this.container : nt(this.element).body, $e(this), this._toggleEventListeners(!0); + } + } + /** + * Returns component name string. + */ + get name() { + return O; + } + /** + * Returns component default options. + */ + get defaults() { + return Tt; + } + show() { + const { options: o, tooltip: t, element: s, container: n, offsetParent: a, id: p } = this, { animation: f } = o, c = B.get(s, "out"), r = n === a ? n : a; + B.clear(s, "out"), t && !c && !U(this) && B.set( + s, + () => { + const d = J( + `show.bs.${K(this.name)}` + ); + Q(s, d); + // istanbul ignore else @preserve + if (!d.defaultPrevented) { + ge(t, r), st(s, Lt, `#${p}`), this.update(), Ht(this, !0); + // istanbul ignore else @preserve + Y(t, ft) || W(t, ft); + // istanbul ignore else @preserve + f ? pt(t, () => Pt(this)) : Pt(this); + } + }, + 17, + "in" + ); + } + hide() { + const { options: o, tooltip: t, element: s } = this, { animation: n, delay: a } = o; + B.clear(s, "in"); + // istanbul ignore else @preserve + t && U(this) && B.set( + s, + () => { + const p = J( + `hide.bs.${K(this.name)}` + ); + Q(s, p); + // istanbul ignore else @preserve + if (!p.defaultPrevented) { + this.update(), ne(t, ft), Ht(this); + // istanbul ignore else @preserve + n ? pt(t, () => yt(this)) : yt(this); + } + }, + a + 17, + "out" + ); + } + /** Enables the tooltip. */ + enable() { + const { enabled: o } = this; + // istanbul ignore else @preserve + o || (this._toggleEventListeners(!0), this.enabled = !o); + } + /** Disables the tooltip. */ + disable() { + const { tooltip: o, enabled: t } = this; + // istanbul ignore else @preserve + t && (o && U(this) && this.hide(), this._toggleEventListeners(), this.enabled = !t); + } + /** Toggles the `disabled` property. */ + toggleEnabled() { + this.enabled ? this.disable() : this.enable(); + } + /** Removes the `Tooltip` from the target element. */ + dispose() { + const { tooltip: o, options: t } = this, s = { ...this, name: this.name }, n = () => setTimeout(() => He(s, () => super.dispose()), 17); + t.animation && U(s) ? (this.options.delay = 0, this.hide(), pt(o, n)) : n(); + } +} +g(G, "selector", Ce), g(G, "init", Pe), g(G, "getInstance", Ct), g(G, "styleTip", $t); +export { + G as T, + ot as a, + Ee as g, + Dt as p, + $t as s, + Tt as t +}; +//# sourceMappingURL=tooltip-B1BCkN2D.mjs.map diff --git a/dist/components/tooltip-B1BCkN2D.mjs.map b/dist/components/tooltip-B1BCkN2D.mjs.map new file mode 100644 index 00000000..d942f6ab --- /dev/null +++ b/dist/components/tooltip-B1BCkN2D.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"tooltip-B1BCkN2D.mjs","sources":["../../src/strings/popoverString.ts","../../src/strings/popoverComponent.ts","../../src/strings/tooltipString.ts","../../src/util/getTipTemplate.ts","../../src/util/tipClassPositions.ts","../../src/util/styleTip.ts","../../src/util/tooltipDefaults.ts","../../src/strings/dataOriginalTitle.ts","../../src/strings/tooltipComponent.ts","../../src/util/setHtml.ts","../../src/util/createTip.ts","../../src/util/getElementContainer.ts","../../src/components/tooltip.ts"],"sourcesContent":["/** @type {string} */\nconst popoverString = 'popover';\nexport default popoverString;\n","/** @type {string} */\nconst popoverComponent = 'Popover';\nexport default popoverComponent;\n","/** @type {string} */\nconst tooltipString = 'tooltip';\nexport default tooltipString;\n","import tooltipString from '../strings/tooltipString';\n\n/**\n * Returns a template for Popover / Tooltip.\n *\n * @param tipType the expected markup type\n * @returns the template markup\n */\nconst getTipTemplate = (tipType: string) => {\n const isTooltip = tipType === tooltipString;\n const bodyClass = isTooltip ? `${tipType}-inner` : `${tipType}-body`;\n const header = !isTooltip ? `

` : '';\n const arrow = `
`;\n const body = `
`;\n return `
${header + arrow + body}
`;\n};\n\nexport default getTipTemplate;\n","const tipClassPositions = {\n top: 'top',\n bottom: 'bottom',\n left: 'start',\n right: 'end',\n};\n\nexport default tipClassPositions;\n","import {\n createCustomEvent,\n dispatchEvent,\n getBoundingClientRect,\n getDocumentElement,\n getElementStyle,\n isHTMLElement,\n isRTL,\n setElementStyle,\n toLowerCase,\n} from '@thednp/shorty';\n\nimport popoverComponent from '../strings/popoverComponent';\nimport tipClassPositions from './tipClassPositions';\nimport Tooltip from '../components/tooltip';\nimport type { TooltipEvent } from '../interface/tooltip';\nimport type { PopoverEvent } from '../interface/popover';\n\n/**\n * Style popovers and tooltips.\n *\n * @param self the `Popover` / `Tooltip` instance\n */\nconst styleTip = (self: T) => {\n const tipClasses = /\\b(top|bottom|start|end)+/;\n const { element, tooltip, container, options, arrow } = self;\n\n // istanbul ignore else @preserve\n if (tooltip) {\n const tipPositions = { ...tipClassPositions };\n const RTL = isRTL(element);\n\n // reset tooltip style (top: 0, left: 0 works best)\n setElementStyle(tooltip, {\n // top: '0px', left: '0px', right: '', bottom: '',\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n const isPopover = self.name === popoverComponent;\n const { offsetWidth: tipWidth, offsetHeight: tipHeight } = tooltip;\n const { clientWidth: htmlcw, clientHeight: htmlch, offsetWidth: htmlow } = getDocumentElement(element);\n let { placement } = options;\n const { clientWidth: parentCWidth, offsetWidth: parentOWidth } = container as HTMLElement;\n const parentPosition = getElementStyle(container as HTMLElement, 'position');\n const fixedParent = parentPosition === 'fixed';\n const scrollbarWidth = fixedParent ? Math.abs(parentCWidth - parentOWidth) : Math.abs(htmlcw - htmlow);\n const leftBoundry =\n RTL && fixedParent\n ? // istanbul ignore next @preserve\n scrollbarWidth\n : 0;\n const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1;\n const {\n width: elemWidth,\n height: elemHeight,\n left: elemRectLeft,\n right: elemRectRight,\n top: elemRectTop,\n } = getBoundingClientRect(element, true);\n const { x, y } = {\n x: elemRectLeft,\n y: elemRectTop,\n };\n // reset arrow style\n setElementStyle(arrow as HTMLElement, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n let topPosition: number | string = 0;\n let bottomPosition: number | string = '';\n let leftPosition: number | string = 0;\n let rightPosition: number | string = '';\n let arrowTop: number | string = '';\n let arrowLeft: number | string = '';\n let arrowRight: number | string = '';\n\n const arrowWidth = (arrow as HTMLElement).offsetWidth || 0;\n const arrowHeight = (arrow as HTMLElement).offsetHeight || 0;\n const arrowAdjust = arrowWidth / 2;\n\n // check placement\n let topExceed = elemRectTop - tipHeight - arrowHeight < 0;\n let bottomExceed = elemRectTop + tipHeight + elemHeight + arrowHeight >= htmlch;\n let leftExceed = elemRectLeft - tipWidth - arrowWidth < leftBoundry;\n let rightExceed = elemRectLeft + tipWidth + elemWidth + arrowWidth >= rightBoundry;\n\n const horizontals = ['left', 'right'];\n const verticals = ['top', 'bottom'];\n\n topExceed = horizontals.includes(placement)\n ? elemRectTop + elemHeight / 2 - tipHeight / 2 - arrowHeight < 0\n : topExceed;\n bottomExceed = horizontals.includes(placement)\n ? elemRectTop + tipHeight / 2 + elemHeight / 2 + arrowHeight >= htmlch\n : bottomExceed;\n leftExceed = verticals.includes(placement) ? elemRectLeft + elemWidth / 2 - tipWidth / 2 < leftBoundry : leftExceed;\n rightExceed = verticals.includes(placement)\n ? elemRectLeft + tipWidth / 2 + elemWidth / 2 >= rightBoundry\n : rightExceed;\n\n // first remove side positions if both left and right limits are exceeded\n // we usually fall back to top|bottom\n placement = horizontals.includes(placement) && leftExceed && rightExceed ? 'top' : placement;\n // recompute placement\n placement = placement === 'top' && topExceed ? 'bottom' : placement;\n placement = placement === 'bottom' && bottomExceed ? 'top' : placement;\n placement = placement === 'left' && leftExceed ? 'right' : placement;\n placement =\n placement === 'right' && rightExceed\n ? 'left'\n : // istanbul ignore next @preserve\n placement;\n\n // update tooltip/popover class\n if (!tooltip.className.includes(placement)) {\n tooltip.className = tooltip.className.replace(tipClasses, tipPositions[placement]);\n }\n\n // compute tooltip / popover coordinates\n // istanbul ignore else @preserve\n if (horizontals.includes(placement)) {\n // secondary|side positions\n if (placement === 'left') {\n // LEFT\n leftPosition = x - tipWidth - (isPopover ? arrowWidth : 0);\n } else {\n // RIGHT\n leftPosition = x + elemWidth + (isPopover ? arrowWidth : 0);\n }\n\n // adjust top and arrow\n if (topExceed && bottomExceed) {\n topPosition = 0;\n bottomPosition = 0;\n arrowTop = elemRectTop + elemHeight / 2 - arrowHeight / 2;\n } else if (topExceed) {\n topPosition = y;\n bottomPosition = '';\n arrowTop = elemHeight / 2 - arrowWidth;\n } else if (bottomExceed) {\n topPosition = y - tipHeight + elemHeight;\n bottomPosition = '';\n arrowTop = tipHeight - elemHeight / 2 - arrowWidth;\n } else {\n topPosition = y - tipHeight / 2 + elemHeight / 2;\n arrowTop = tipHeight / 2 - arrowHeight / 2;\n }\n } else if (verticals.includes(placement)) {\n if (placement === 'top') {\n topPosition = y - tipHeight - (isPopover ? arrowHeight : 0);\n } else {\n // BOTTOM\n topPosition = y + elemHeight + (isPopover ? arrowHeight : 0);\n }\n\n // adjust left | right and also the arrow\n if (leftExceed) {\n leftPosition = 0;\n arrowLeft = x + elemWidth / 2 - arrowAdjust;\n } else if (rightExceed) {\n leftPosition = 'auto';\n rightPosition = 0;\n arrowRight = elemWidth / 2 + rightBoundry - elemRectRight - arrowAdjust;\n } else {\n leftPosition = x - tipWidth / 2 + elemWidth / 2;\n arrowLeft = tipWidth / 2 - arrowAdjust;\n }\n }\n\n // apply style to tooltip/popover\n setElementStyle(tooltip, {\n top: `${topPosition}px`,\n bottom: bottomPosition === '' ? '' : `${bottomPosition}px`,\n left: leftPosition === 'auto' ? leftPosition : `${leftPosition}px`,\n right: rightPosition !== '' ? `${rightPosition}px` : '',\n });\n\n // update arrow placement\n // istanbul ignore else @preserve\n if (isHTMLElement(arrow)) {\n if (arrowTop !== '') {\n arrow.style.top = `${arrowTop}px`;\n }\n if (arrowLeft !== '') {\n arrow.style.left = `${arrowLeft}px`;\n } else if (arrowRight !== '') {\n arrow.style.right = `${arrowRight}px`;\n }\n }\n const updatedTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `updated.bs.${toLowerCase(self.name)}`,\n );\n dispatchEvent(element, updatedTooltipEvent);\n }\n};\n\nexport default styleTip;\n","import getTipTemplate from './getTipTemplate';\nimport tooltipString from '../strings/tooltipString';\nimport { TooltipOptions } from '../interface/tooltip';\n\nconst tooltipDefaults: TooltipOptions = {\n template: getTipTemplate(tooltipString),\n title: '',\n customClass: '',\n trigger: 'hover focus',\n placement: 'top',\n sanitizeFn: undefined,\n animation: true,\n delay: 200,\n container: document.body,\n content: '',\n dismissible: false,\n btnClose: '',\n};\nexport default tooltipDefaults;\n","/**\n * Global namespace for `data-bs-title` attribute.\n */\nconst dataOriginalTitle = 'data-original-title';\nexport default dataOriginalTitle;\n","/** @type {string} */\nconst tooltipComponent = 'Tooltip';\nexport default tooltipComponent;\n","import { isArray, isFunction, isHTMLElement, isNode, isNodeList, isString } from '@thednp/shorty';\n\n/**\n * Append an existing `Element` to Popover / Tooltip component or HTML\n * markup string to be parsed & sanitized to be used as popover / tooltip content.\n *\n * @param element target\n * @param content the `Element` to append / string\n * @param sanitizeFn a function to sanitize string content\n */\nconst setHtml = (element: HTMLElement, content: Node[] | Node | string, sanitizeFn?: (s: string) => string) => {\n // istanbul ignore else @preserve\n if (isString(content) && content.length) {\n let dirty = content.trim(); // fixing #233\n if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty);\n\n const domParser = new DOMParser();\n const tempDocument = domParser.parseFromString(dirty, 'text/html');\n element.append(...[...tempDocument.body.childNodes]);\n } else if (isHTMLElement(content)) {\n element.append(content);\n } else if (isNodeList(content) || (isArray(content) && content.every(isNode))) {\n element.append(...[...content]);\n }\n};\nexport default setHtml;\n","import { addClass, createElement, hasClass, isHTMLElement, isRTL, querySelector, setAttribute } from '@thednp/shorty';\n\nimport tooltipComponent from '../strings/tooltipComponent';\nimport tooltipString from '../strings/tooltipString';\nimport popoverString from '../strings/popoverString';\nimport fadeClass from '../strings/fadeClass';\nimport tipClassPositions from './tipClassPositions';\nimport setHtml from './setHtml';\nimport Tooltip from '../components/tooltip';\nimport Popover from '../components/popover';\n\n/**\n * Creates a new tooltip / popover.\n *\n * @param self the `Tooltip` / `Popover` instance\n */\nconst createTip = (self: Tooltip | Popover) => {\n const isTooltip = self.name === tooltipComponent;\n\n const { id, element, options } = self;\n const { title, placement, template, animation, customClass, sanitizeFn, dismissible, content, btnClose } = options;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipPositions = { ...tipClassPositions };\n let titleParts: Node[] = [];\n let contentParts: Node[] = [];\n\n if (isRTL(element)) {\n tipPositions.left = 'end';\n tipPositions.right = 'start';\n }\n\n // set initial popover class\n const placementClass = `bs-${tipString}-${tipPositions[placement]}`;\n\n // load template\n let tooltipTemplate: Node | string;\n if (isHTMLElement(template)) {\n tooltipTemplate = template;\n } else {\n const htmlMarkup = createElement('div') as HTMLElement;\n setHtml(htmlMarkup, template, sanitizeFn);\n tooltipTemplate = htmlMarkup.firstChild as HTMLElement;\n }\n\n // set popover markup\n self.tooltip = isHTMLElement(tooltipTemplate)\n ? (tooltipTemplate.cloneNode(true) as HTMLElement)\n : // istanbul ignore next @preserve\n undefined;\n\n const { tooltip } = self;\n // istanbul ignore else @preserve\n if (tooltip) {\n // set id and role attributes\n setAttribute(tooltip, 'id', id);\n setAttribute(tooltip, 'role', tooltipString);\n\n const bodyClass = isTooltip ? `${tooltipString}-inner` : `${popoverString}-body`;\n const tooltipHeader = isTooltip ? null : querySelector(`.${popoverString}-header`, tooltip);\n const tooltipBody = querySelector(`.${bodyClass}`, tooltip);\n\n // set arrow and enable access for styleTip\n self.arrow = querySelector(`.${tipString}-arrow`, tooltip) as HTMLElement;\n const { arrow } = self;\n\n if (isHTMLElement(title)) titleParts = [title.cloneNode(true)];\n else {\n const tempTitle = createElement('div') as HTMLElement;\n setHtml(tempTitle, title, sanitizeFn);\n titleParts = [...[...tempTitle.childNodes]];\n }\n\n if (isHTMLElement(content)) contentParts = [content.cloneNode(true)];\n else {\n const tempContent = createElement('div') as HTMLElement;\n setHtml(tempContent, content, sanitizeFn);\n contentParts = [...[...tempContent.childNodes]];\n }\n\n // set dismissible button\n if (dismissible) {\n if (title) {\n if (isHTMLElement(btnClose)) {\n titleParts = [...titleParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n titleParts = [...titleParts, tempBtn.firstChild as Node];\n }\n } else {\n // istanbul ignore else @preserve\n if (tooltipHeader) tooltipHeader.remove();\n if (isHTMLElement(btnClose)) {\n contentParts = [...contentParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n contentParts = [...contentParts, tempBtn.firstChild as Node];\n }\n }\n }\n\n // fill the template with content from options / data attributes\n // also sanitize title && content\n // istanbul ignore else @preserve\n if (!isTooltip) {\n // istanbul ignore else @preserve\n if (title && tooltipHeader) {\n setHtml(tooltipHeader, titleParts, sanitizeFn);\n }\n // istanbul ignore else @preserve\n if (content && tooltipBody) {\n setHtml(tooltipBody, contentParts, sanitizeFn);\n }\n // set btn\n self.btn = querySelector('.btn-close', tooltip) || undefined;\n } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn);\n\n // Bootstrap 5.2.x\n // addClass(tooltip, 'position-absolute');\n addClass(tooltip, 'position-fixed');\n addClass(arrow, 'position-absolute');\n\n // set popover animation and placement\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString);\n // istanbul ignore else @preserve\n if (animation && !hasClass(tooltip, fadeClass)) {\n addClass(tooltip, fadeClass);\n }\n // istanbul ignore else @preserve\n if (customClass && !hasClass(tooltip, customClass)) {\n addClass(tooltip, customClass);\n }\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass);\n }\n};\n\nexport default createTip;\n","import { getDocument, getElementStyle, getParentNode, isShadowRoot, isTableElement } from '@thednp/shorty';\n\n/**\n * Returns an `HTMLElement` to be used as default value for *options.container*\n * for `Tooltip` / `Popover` components.\n *\n * @see https://github.com/floating-ui/floating-ui\n *\n * @param element the target\n * @returns the query result\n */\nconst getElementContainer = (element: HTMLElement): ParentNode => {\n const majorBlockTags = ['HTML', 'BODY'];\n const containers: ParentNode[] = [];\n let { parentNode } = element as Node;\n\n while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) {\n parentNode = getParentNode(parentNode) as ParentNode;\n // istanbul ignore else @preserve\n if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) {\n containers.push(parentNode);\n }\n }\n\n return (\n containers.find((c, i) => {\n if (\n getElementStyle(c as HTMLElement, 'position') !== 'relative' &&\n containers.slice(i + 1).every(r => getElementStyle(r as HTMLElement, 'position') === 'static')\n ) {\n return c;\n }\n return null;\n }) ||\n // istanbul ignore next: optional guard\n getDocument(element).body\n );\n};\n\nexport default getElementContainer;\n","/* Native JavaScript for Bootstrap 5 | Tooltip\n---------------------------------------------- */\nimport {\n addClass,\n ariaDescribedBy,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focus,\n focusEvent,\n focusinEvent,\n focusoutEvent,\n getAttribute,\n getDocument,\n getElementStyle,\n getInstance,\n getUID,\n getWindow,\n hasAttribute,\n hasClass,\n isApple,\n mouseclickEvent,\n mousedownEvent,\n mouseenterEvent,\n mousehoverEvent,\n mouseleaveEvent,\n ObjectAssign,\n passiveHandler,\n removeAttribute,\n removeClass,\n resizeEvent,\n scrollEvent,\n setAttribute,\n Timer,\n toLowerCase,\n touchstartEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport dataOriginalTitle from '../strings/dataOriginalTitle';\nimport showClass from '../strings/showClass';\nimport tooltipString from '../strings/tooltipString';\nimport tooltipComponent from '../strings/tooltipComponent';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\nimport modalString from '../strings/modalString';\nimport offcanvasString from '../strings/offcanvasString';\n\nimport styleTip from '../util/styleTip';\nimport createTip from '../util/createTip';\nimport { appendPopup, hasPopup, removePopup } from '../util/popupContainer';\nimport getElementContainer from '../util/getElementContainer';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport BaseComponent from './base-component';\nimport type { TooltipEvent, TooltipOptions } from '../interface/tooltip';\nimport type { PopoverEvent, PopoverOptions } from '../interface/popover';\n\n// TOOLTIP PRIVATE GC\n// ==================\nconst tooltipSelector = `[${dataBsToggle}=\"${tooltipString}\"],[data-tip=\"${tooltipString}\"]`;\nconst titleAttr = 'title';\n\n/**\n * Static method which returns an existing `Tooltip` instance associated\n * to a target `Element`.\n */\nlet getTooltipInstance = (element: HTMLElement) => getInstance(element, tooltipComponent);\n\n/**\n * A `Tooltip` initialization callback.\n */\nconst tooltipInitCallback = (element: HTMLElement) => new Tooltip(element);\n\n// TOOLTIP PRIVATE METHODS\n// =======================\n/**\n * Removes the tooltip from the DOM.\n *\n * @param self the `Tooltip` instance\n */\nconst removeTooltip = (self: Tooltip) => {\n const { element, tooltip, container, offsetParent } = self;\n removeAttribute(element, ariaDescribedBy);\n removePopup(tooltip as HTMLElement, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Check if container contains the tooltip.\n *\n * @param self Tooltip\n */\nconst hasTip = (self: Tooltip): boolean | undefined => {\n const { tooltip, container, offsetParent } = self;\n\n return tooltip && hasPopup(tooltip, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Executes after the instance has been disposed.\n *\n * @param self the `Tooltip` instance\n * @param callback the parent dispose callback\n */\nconst disposeTooltipComplete = (self: Tooltip, callback?: () => void) => {\n const { element } = self;\n self._toggleEventListeners();\n\n // istanbul ignore else @preserve\n if (hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent) {\n toggleTooltipTitle(self);\n }\n // istanbul ignore else @preserve\n if (callback) callback();\n};\n\n/**\n * Toggles on/off the special `Tooltip` event listeners.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipAction = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n\n action(getDocument(element), touchstartEvent, self.handleTouch, passiveHandler);\n\n [scrollEvent, resizeEvent].forEach(ev => {\n action(getWindow(element), ev, self.update, passiveHandler);\n });\n};\n\n/**\n * Executes after the tooltip was shown to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipShownAction = (self: Tooltip) => {\n const { element } = self;\n const shownTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `shown.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self, true);\n dispatchEvent(element, shownTooltipEvent);\n Timer.clear(element, 'in');\n};\n\n/**\n * Executes after the tooltip was hidden to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipHiddenAction = (self: Tooltip) => {\n const { element } = self;\n const hiddenTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `hidden.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self);\n removeTooltip(self);\n dispatchEvent(element, hiddenTooltipEvent);\n\n Timer.clear(element, 'out');\n};\n\n/**\n * Toggles on/off the `Tooltip` event listeners that hide/update the tooltip.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, container, offsetParent } = self;\n const { offsetHeight, scrollHeight } = container as HTMLElement;\n const parentModal = closest(element, `.${modalString}`);\n const parentOffcanvas = closest(element, `.${offcanvasString}`);\n\n // istanbul ignore else @preserve\n const win = getWindow(element);\n const overflow = offsetHeight !== scrollHeight;\n const scrollTarget = container === offsetParent && overflow ? container : win;\n action(scrollTarget, resizeEvent, self.update, passiveHandler);\n action(scrollTarget, scrollEvent, self.update, passiveHandler);\n\n // dismiss tooltips inside modal / offcanvas\n if (parentModal) {\n action(parentModal, `hide.bs.${modalString}`, self.handleHide);\n }\n if (parentOffcanvas) {\n action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide);\n }\n};\n\n/**\n * Toggles the `title` and `data-original-title` attributes.\n *\n * @param self the `Tooltip` instance\n * @param content when `true`, event listeners are added\n */\nconst toggleTooltipTitle = (self: Tooltip, content?: string) => {\n // [0 - add, 1 - remove] | [0 - remove, 1 - add]\n const titleAtt = [dataOriginalTitle, titleAttr];\n const { element } = self;\n\n setAttribute(\n element,\n titleAtt[content ? 0 : 1],\n content ||\n getAttribute(element, titleAtt[0]) ||\n // istanbul ignore next @preserve\n '',\n );\n removeAttribute(element, titleAtt[content ? 1 : 0]);\n};\n\n// TOOLTIP DEFINITION\n// ==================\n/** Creates a new `Tooltip` instance. */\nexport default class Tooltip extends BaseComponent {\n static selector = tooltipSelector;\n static init = tooltipInitCallback;\n static getInstance = getTooltipInstance;\n static styleTip = styleTip;\n declare options: TooltipOptions;\n declare btn?: HTMLElement;\n declare tooltip?: HTMLElement;\n declare container: ParentNode;\n declare arrow?: HTMLElement;\n declare offsetParent?: HTMLElement;\n declare enabled: boolean;\n declare id: string;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n const { element } = this;\n const isTooltip = this.name === tooltipComponent;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipComponent = isTooltip ? tooltipComponent : popoverComponent;\n\n // istanbul ignore next @preserve: this is to set Popover too\n getTooltipInstance = (elem: HTMLElement) => getInstance(elem, tipComponent);\n\n // additional properties\n this.enabled = true;\n /** Set unique ID for `aria-describedby`. */\n this.id = `${tipString}-${getUID(element, tipString)}`;\n\n // instance options\n const { options } = this;\n\n // invalidate\n if (!((!options.title && isTooltip) || (!isTooltip && !options.content))) {\n // reset default options\n ObjectAssign(tooltipDefaults, { titleAttr: '' });\n\n // set title attributes and add event listeners\n // istanbul ignore else @preserve\n if (hasAttribute(element, titleAttr) && isTooltip && typeof options.title === 'string') {\n toggleTooltipTitle(this, options.title);\n }\n\n // set containers\n this.container = getElementContainer(element);\n this.offsetParent = ['sticky', 'fixed'].some(\n position => getElementStyle(this.container as HTMLElement, 'position') === position,\n )\n ? (this.container as HTMLElement)\n : getDocument(this.element).body;\n\n // create tooltip here\n createTip(this);\n\n // attach events\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tooltipComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return tooltipDefaults;\n }\n\n // TOOLTIP PUBLIC METHODS\n // ======================\n /** Handles the focus event on iOS. */\n // istanbul ignore next @preserve - impossible to test without Apple device\n handleFocus = () => focus(this.element);\n /** Shows the tooltip. */\n handleShow = () => this.show();\n show() {\n const { options, tooltip, element, container, offsetParent, id } = this;\n const { animation } = options;\n const outTimer = Timer.get(element, 'out');\n const tipContainer = container === offsetParent ? container : offsetParent;\n\n Timer.clear(element, 'out');\n\n if (tooltip && !outTimer && !hasTip(this)) {\n Timer.set(\n element,\n () => {\n const showTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `show.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, showTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!showTooltipEvent.defaultPrevented) {\n // append to container\n appendPopup(tooltip, tipContainer);\n\n setAttribute(element, ariaDescribedBy, `#${id}`);\n\n this.update();\n toggleTooltipOpenHandlers(this, true);\n\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass);\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipShownAction(this));\n } else tooltipShownAction(this);\n }\n },\n 17,\n 'in',\n );\n }\n }\n\n /** Hides the tooltip. */\n handleHide = () => this.hide();\n hide() {\n const { options, tooltip, element } = this;\n const { animation, delay } = options;\n\n Timer.clear(element, 'in');\n\n // istanbul ignore else @preserve\n if (tooltip && hasTip(this)) {\n Timer.set(\n element,\n () => {\n const hideTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `hide.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, hideTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!hideTooltipEvent.defaultPrevented) {\n this.update();\n removeClass(tooltip, showClass);\n toggleTooltipOpenHandlers(this);\n\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this));\n } else tooltipHiddenAction(this);\n }\n },\n delay + 17,\n 'out',\n );\n }\n }\n\n /** Updates the tooltip position. */\n update = () => {\n styleTip(this);\n };\n\n /** Toggles the tooltip visibility. */\n toggle = () => {\n const { tooltip } = this;\n\n if (tooltip && !hasTip(this)) this.show();\n else this.hide();\n };\n\n /** Enables the tooltip. */\n enable() {\n const { enabled } = this;\n // istanbul ignore else @preserve\n if (!enabled) {\n this._toggleEventListeners(true);\n this.enabled = !enabled;\n }\n }\n\n /** Disables the tooltip. */\n disable() {\n const { tooltip, enabled } = this;\n // istanbul ignore else @preserve\n if (enabled) {\n if (tooltip && hasTip(this)) this.hide();\n this._toggleEventListeners();\n this.enabled = !enabled;\n }\n }\n\n /** Toggles the `disabled` property. */\n toggleEnabled() {\n if (!this.enabled) this.enable();\n else this.disable();\n }\n\n /**\n * Handles the `touchstart` event listener for `Tooltip`\n *\n * @this {Tooltip}\n * @param {TouchEvent} e the `Event` object\n */\n handleTouch = ({ target }: TouchEvent) => {\n const { tooltip, element } = this;\n\n // istanbul ignore if @preserve\n if (\n (tooltip && tooltip.contains(target as HTMLElement)) ||\n target === element ||\n (target && element.contains(target as HTMLElement))\n ) {\n // smile for ESLint\n } else {\n this.hide();\n }\n };\n\n /**\n * Toggles on/off the `Tooltip` event listeners.\n *\n * @param add when `true`, event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n // btn is only for dismissible popover\n const { element, options, btn } = this;\n const { trigger } = options;\n const isPopover = this.name !== tooltipComponent;\n const dismissible = isPopover && (options as PopoverOptions).dismissible ? true : false;\n\n // istanbul ignore else @preserve\n if (!trigger.includes('manual')) {\n this.enabled = !!add;\n\n const triggerOptions = trigger.split(' ');\n\n triggerOptions.forEach(tr => {\n // istanbul ignore else @preserve\n if (tr === mousehoverEvent) {\n action(element, mousedownEvent, this.handleShow);\n action(element, mouseenterEvent, this.handleShow);\n\n // istanbul ignore else @preserve\n if (!dismissible) {\n action(element, mouseleaveEvent, this.handleHide);\n action(getDocument(element), touchstartEvent, this.handleTouch, passiveHandler);\n }\n } else if (tr === mouseclickEvent) {\n action(element, tr, !dismissible ? this.toggle : this.handleShow);\n } else if (tr === focusEvent) {\n action(element, focusinEvent, this.handleShow);\n // istanbul ignore else @preserve\n if (!dismissible) action(element, focusoutEvent, this.handleHide);\n // istanbul ignore else @preserve\n if (isApple) {\n action(element, mouseclickEvent, this.handleFocus);\n }\n }\n // istanbul ignore else @preserve\n if (dismissible && btn) {\n action(btn, mouseclickEvent, this.handleHide);\n }\n });\n }\n };\n\n /** Removes the `Tooltip` from the target element. */\n dispose() {\n const { tooltip, options } = this;\n const clone = { ...this, name: this.name };\n const callback = () => setTimeout(() => disposeTooltipComplete(clone, () => super.dispose()), 17);\n\n if (options.animation && hasTip(clone)) {\n this.options.delay = 0; // reset delay\n this.hide();\n emulateTransitionEnd(tooltip as HTMLElement, callback);\n } else {\n callback();\n }\n }\n}\n"],"names":["popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","arrow","body","tipClassPositions","styleTip","self","tipClasses","element","tooltip","container","options","tipPositions","RTL","isRTL","setElementStyle","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","getDocumentElement","placement","parentCWidth","parentOWidth","fixedParent","getElementStyle","scrollbarWidth","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","getBoundingClientRect","x","y","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","topExceed","bottomExceed","leftExceed","rightExceed","horizontals","verticals","isHTMLElement","updatedTooltipEvent","createCustomEvent","toLowerCase","dispatchEvent","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","isString","dirty","isFunction","tempDocument","isNodeList","isArray","isNode","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","createElement","setAttribute","tooltipHeader","querySelector","tooltipBody","tempTitle","tempContent","tempBtn","addClass","hasClass","fadeClass","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","c","i","r","getDocument","tooltipSelector","dataBsToggle","titleAttr","getTooltipInstance","getInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","removeAttribute","ariaDescribedBy","removePopup","hasTip","hasPopup","disposeTooltipComplete","callback","hasAttribute","toggleTooltipTitle","toggleTooltipAction","add","action","addListener","removeListener","touchstartEvent","passiveHandler","scrollEvent","resizeEvent","ev","getWindow","tooltipShownAction","shownTooltipEvent","Timer","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","scrollHeight","parentModal","closest","modalString","parentOffcanvas","offcanvasString","win","scrollTarget","titleAtt","getAttribute","BaseComponent","target","config","__publicField","focus","btn","trigger","tr","mousehoverEvent","mousedownEvent","mouseenterEvent","mouseleaveEvent","mouseclickEvent","focusEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","ObjectAssign","position","outTimer","tipContainer","showTooltipEvent","appendPopup","showClass","emulateTransitionEnd","delay","hideTooltipEvent","removeClass","enabled","clone"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tooltip-BuF2bDNc.mjs b/dist/components/tooltip-BuF2bDNc.mjs deleted file mode 100644 index 14cc5f11..00000000 --- a/dist/components/tooltip-BuF2bDNc.mjs +++ /dev/null @@ -1,291 +0,0 @@ -var qt = Object.defineProperty; -var Ut = (o, i, e) => i in o ? qt(o, i, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[i] = e; -var g = (o, i, e) => Ut(o, typeof i != "symbol" ? i + "" : i, e); -import { isRTL as xt, setElementStyle as pt, getDocumentElement as Yt, getElementStyle as st, getBoundingClientRect as Gt, isHTMLElement as x, createCustomEvent as J, toLowerCase as K, dispatchEvent as Q, isString as Jt, isFunction as Kt, isNodeList as Qt, isArray as Vt, isNode as Xt, createElement as q, setAttribute as nt, querySelector as et, addClass as W, hasClass as Y, getParentNode as Zt, isShadowRoot as te, isTableElement as ee, getDocument as lt, getInstance as St, getUID as oe, ObjectAssign as ie, hasAttribute as Lt, focus as se, Timer as B, ariaDescribedBy as Nt, emulateTransitionEnd as ot, removeClass as ne, mousehoverEvent as le, mousedownEvent as ae, mouseenterEvent as ce, mouseleaveEvent as re, touchstartEvent as At, passiveHandler as V, mouseclickEvent as mt, focusEvent as de, focusinEvent as he, focusoutEvent as pe, isApple as me, closest as vt, getWindow as Wt, resizeEvent as Bt, scrollEvent as Ot, getAttribute as fe, removeAttribute as Rt } from "@thednp/shorty"; -import { addListener as ut, removeListener as gt } from "@thednp/event-listener"; -import { d as ue } from "./dataBsToggle-B84TS15h.mjs"; -import { s as ft } from "./showClass-C8hdJfjQ.mjs"; -import { a as ge, h as ve, m as bt, o as wt, r as be } from "./popupContainer-C6AuDE5e.mjs"; -import { f as Et } from "./fadeClass-CLIYI_zn.mjs"; -import { B as we } from "./base-component-DvIOojVW.mjs"; -const it = "popover", Dt = "Popover", T = "tooltip", Ee = (o) => { - const i = o === T, e = i ? `${o}-inner` : `${o}-body`, t = i ? "" : `

`, s = `
`, n = `
`; - return `
${t + s + n}
`; -}, Mt = { - top: "top", - bottom: "bottom", - left: "start", - right: "end" -}, $t = (o) => { - const i = /\b(top|bottom|start|end)+/, { element: e, tooltip: t, container: s, options: n, arrow: a } = o; - if (t) { - const p = { ...Mt }, f = xt(e); - pt(t, { - // top: '0px', left: '0px', right: '', bottom: '', - top: "", - left: "", - right: "", - bottom: "" - }); - const c = o.name === Dt, { offsetWidth: r, offsetHeight: d } = t, { clientWidth: b, clientHeight: w, offsetWidth: R } = Yt(e); - let { placement: l } = n; - const { clientWidth: E, offsetWidth: $ } = s, S = st(s, "position") === "fixed", h = Math.abs(S ? E - $ : b - R), L = f && S ? ( - /* istanbul ignore next */ - h - ) : 0, C = b - (f ? 0 : h) - 1, { - width: u, - height: v, - left: m, - right: jt, - top: D - } = Gt(e, !0), { x: X, y: _ } = { - x: m, - y: D - }; - pt(a, { - top: "", - left: "", - right: "", - bottom: "" - }); - let N = 0, k = "", P = 0, ct = "", M = "", Z = "", rt = ""; - const A = a.offsetWidth || 0, y = a.offsetHeight || 0, dt = A / 2; - let F = D - d - y < 0, I = D + d + v + y >= w, j = m - r - A < L, z = m + r + u + A >= C; - const tt = ["left", "right"], ht = ["top", "bottom"]; - F = tt.includes(l) ? D + v / 2 - d / 2 - y < 0 : F, I = tt.includes(l) ? D + d / 2 + v / 2 + y >= w : I, j = ht.includes(l) ? m + u / 2 - r / 2 < L : j, z = ht.includes(l) ? m + r / 2 + u / 2 >= C : z, l = tt.includes(l) && j && z ? "top" : l, l = l === "top" && F ? "bottom" : l, l = l === "bottom" && I ? "top" : l, l = l === "left" && j ? "right" : l, l = l === "right" && z ? ( - /* istanbul ignore next */ - "left" - ) : l, t.className.includes(l) || (t.className = t.className.replace(i, p[l])), tt.includes(l) ? (l === "left" ? P = X - r - (c ? A : 0) : P = X + u + (c ? A : 0), F && I ? (N = 0, k = 0, M = D + v / 2 - y / 2) : F ? (N = _, k = "", M = v / 2 - A) : I ? (N = _ - d + v, k = "", M = d - v / 2 - A) : (N = _ - d / 2 + v / 2, M = d / 2 - y / 2)) : ht.includes(l) && (l === "top" ? N = _ - d - (c ? y : 0) : N = _ + v + (c ? y : 0), j ? (P = 0, Z = X + u / 2 - dt) : z ? (P = "auto", ct = 0, rt = u / 2 + C - jt - dt) : (P = X - r / 2 + u / 2, Z = r / 2 - dt)), pt(t, { - top: `${N}px`, - bottom: k === "" ? "" : `${k}px`, - left: P === "auto" ? P : `${P}px`, - right: ct !== "" ? `${ct}px` : "" - }), x(a) && (M !== "" && (a.style.top = `${M}px`), Z !== "" ? a.style.left = `${Z}px` : rt !== "" && (a.style.right = `${rt}px`)); - const zt = J(`updated.bs.${K(o.name)}`); - Q(e, zt); - } -}, Tt = { - template: Ee(T), - title: "", - customClass: "", - trigger: "hover focus", - placement: "top", - sanitizeFn: void 0, - animation: !0, - delay: 200, - container: document.body, - content: "", - dismissible: !1, - btnClose: "" -}, _t = "data-original-title", O = "Tooltip", H = (o, i, e) => { - if (Jt(i) && i.length) { - let t = i.trim(); - Kt(e) && (t = e(t)); - const n = new DOMParser().parseFromString(t, "text/html"); - o.append(...n.body.childNodes); - } else x(i) ? o.append(i) : (Qt(i) || Vt(i) && i.every(Xt)) && o.append(...i); -}, $e = (o) => { - const i = o.name === O, { id: e, element: t, options: s } = o, { title: n, placement: a, template: p, animation: f, customClass: c, sanitizeFn: r, dismissible: d, content: b, btnClose: w } = s, R = i ? T : it, l = { ...Mt }; - let E = [], $ = []; - xt(t) && (l.left = "end", l.right = "start"); - const at = `bs-${R}-${l[a]}`; - let S; - if (x(p)) - S = p; - else { - const L = q("div"); - H(L, p, r), S = L.firstChild; - } - o.tooltip = x(S) ? S.cloneNode(!0) : ( - /* istanbul ignore next */ - void 0 - ); - const { tooltip: h } = o; - if (h) { - nt(h, "id", e), nt(h, "role", T); - const L = i ? `${T}-inner` : `${it}-body`, C = i ? null : et(`.${it}-header`, h), u = et(`.${L}`, h); - o.arrow = et(`.${R}-arrow`, h); - const { arrow: v } = o; - if (x(n)) E = [n.cloneNode(!0)]; - else { - const m = q("div"); - H(m, n, r), E = [...m.childNodes]; - } - if (x(b)) $ = [b.cloneNode(!0)]; - else { - const m = q("div"); - H(m, b, r), $ = [...m.childNodes]; - } - if (d) - if (n) - if (x(w)) E = [...E, w.cloneNode(!0)]; - else { - const m = q("div"); - H(m, w, r), E = [...E, m.firstChild]; - } - else if (C && C.remove(), x(w)) $ = [...$, w.cloneNode(!0)]; - else { - const m = q("div"); - H(m, w, r), $ = [...$, m.firstChild]; - } - i ? n && u && H(u, n, r) : (n && C && H(C, E, r), b && u && H(u, $, r), o.btn = et(".btn-close", h) || void 0), W(h, "position-fixed"), W(v, "position-absolute"), Y(h, R) || W(h, R), f && !Y(h, Et) && W(h, Et), c && !Y(h, c) && W(h, c), Y(h, at) || W(h, at); - } -}, Te = (o) => { - const i = ["HTML", "BODY"], e = []; - let { parentNode: t } = o; - for (; t && !i.includes(t.nodeName); ) - t = Zt(t), te(t) || ee(t) || e.push(t); - return e.find((s, n) => st(s, "position") !== "relative" && e.slice(n + 1).every((a) => st(a, "position") === "static") ? s : null) || /* istanbul ignore next: optional guard */ - lt(o).body; -}, Ce = `[${ue}="${T}"],[data-tip="${T}"]`, kt = "title"; -let Ct = (o) => St(o, O); -const Pe = (o) => new G(o), ye = (o) => { - const { element: i, tooltip: e, container: t, offsetParent: s } = o; - Rt(i, Nt), be(e, t === s ? t : s); -}, U = (o) => { - const { tooltip: i, container: e, offsetParent: t } = o; - return i && ve(i, e === t ? e : t); -}, He = (o, i) => { - const { element: e } = o; - o._toggleEventListeners(), Lt(e, _t) && o.name === O && It(o), i && i(); -}, Ft = (o, i) => { - const e = i ? ut : gt, { element: t } = o; - e(lt(t), At, o.handleTouch, V), [Ot, Bt].forEach((s) => { - e(Wt(t), s, o.update, V); - }); -}, Pt = (o) => { - const { element: i } = o, e = J(`shown.bs.${K(o.name)}`); - Ft(o, !0), Q(i, e), B.clear(i, "in"); -}, yt = (o) => { - const { element: i } = o, e = J(`hidden.bs.${K(o.name)}`); - Ft(o), ye(o), Q(i, e), B.clear(i, "out"); -}, Ht = (o, i) => { - const e = i ? ut : gt, { element: t, container: s, offsetParent: n } = o, { offsetHeight: a, scrollHeight: p } = s, f = vt(t, `.${bt}`), c = vt(t, `.${wt}`), r = Wt(t), b = s === n && a !== p ? s : r; - e(b, Bt, o.update, V), e(b, Ot, o.update, V), f && e(f, `hide.bs.${bt}`, o.handleHide), c && e(c, `hide.bs.${wt}`, o.handleHide); -}, It = (o, i) => { - const e = [_t, kt], { element: t } = o; - nt( - t, - e[i ? 0 : 1], - i || fe(t, e[0]) || /* istanbul ignore next */ - "" - ), Rt(t, e[i ? 1 : 0]); -}; -class G extends we { - /** - * @param target the target element - * @param config the instance options - */ - constructor(e, t) { - super(e, t); - // TOOLTIP PUBLIC METHODS - // ====================== - /** Handles the focus event on iOS. */ - g(this, "handleFocus", () => se(this.element)); - /** Shows the tooltip. */ - g(this, "handleShow", () => this.show()); - /** Hides the tooltip. */ - g(this, "handleHide", () => this.hide()); - /** Updates the tooltip position. */ - g(this, "update", () => { - $t(this); - }); - /** Toggles the tooltip visibility. */ - g(this, "toggle", () => { - const { tooltip: e } = this; - e && !U(this) ? this.show() : this.hide(); - }); - /** - * Handles the `touchstart` event listener for `Tooltip` - * - * @this {Tooltip} - * @param {TouchEvent} e the `Event` object - */ - g(this, "handleTouch", ({ target: e }) => { - const { tooltip: t, element: s } = this; - t && t.contains(e) || e === s || e && s.contains(e) || this.hide(); - }); - /** - * Toggles on/off the `Tooltip` event listeners. - * - * @param add when `true`, event listeners are added - */ - g(this, "_toggleEventListeners", (e) => { - const t = e ? ut : gt, { element: s, options: n, btn: a } = this, { trigger: p } = n, c = !!(this.name !== O && n.dismissible); - p.includes("manual") || (this.enabled = !!e, p.split(" ").forEach((d) => { - d === le ? (t(s, ae, this.handleShow), t(s, ce, this.handleShow), c || (t(s, re, this.handleHide), t(lt(s), At, this.handleTouch, V))) : d === mt ? t(s, d, c ? this.handleShow : this.toggle) : d === de && (t(s, he, this.handleShow), c || t(s, pe, this.handleHide), me && t(s, mt, this.handleFocus)), c && a && t(a, mt, this.handleHide); - })); - }); - const { element: s } = this, n = this.name === O, a = n ? T : it, p = n ? O : Dt; - Ct = (c) => St(c, p), this.enabled = !0, this.id = `${a}-${oe(s, a)}`; - const { options: f } = this; - !f.title && n || !n && !f.content || (ie(Tt, { titleAttr: "" }), Lt(s, kt) && n && typeof f.title == "string" && It(this, f.title), this.container = Te(s), this.offsetParent = ["sticky", "fixed"].some( - (c) => st(this.container, "position") === c - ) ? this.container : lt(this.element).body, $e(this), this._toggleEventListeners(!0)); - } - /** - * Returns component name string. - */ - get name() { - return O; - } - /** - * Returns component default options. - */ - get defaults() { - return Tt; - } - show() { - const { options: e, tooltip: t, element: s, container: n, offsetParent: a, id: p } = this, { animation: f } = e, c = B.get(s, "out"), r = n === a ? n : a; - B.clear(s, "out"), t && !c && !U(this) && B.set( - s, - () => { - const d = J(`show.bs.${K(this.name)}`); - Q(s, d), d.defaultPrevented || (ge(t, r), nt(s, Nt, `#${p}`), this.update(), Ht(this, !0), Y(t, ft) || W(t, ft), f ? ot(t, () => Pt(this)) : Pt(this)); - }, - 17, - "in" - ); - } - hide() { - const { options: e, tooltip: t, element: s } = this, { animation: n, delay: a } = e; - B.clear(s, "in"), t && U(this) && B.set( - s, - () => { - const p = J(`hide.bs.${K(this.name)}`); - Q(s, p), p.defaultPrevented || (this.update(), ne(t, ft), Ht(this), n ? ot(t, () => yt(this)) : yt(this)); - }, - a + 17, - "out" - ); - } - /** Enables the tooltip. */ - enable() { - const { enabled: e } = this; - e || (this._toggleEventListeners(!0), this.enabled = !e); - } - /** Disables the tooltip. */ - disable() { - const { tooltip: e, options: t, enabled: s } = this, { animation: n } = t; - s && (e && U(this) && n ? (this.hide(), ot(e, () => this._toggleEventListeners())) : this._toggleEventListeners(), this.enabled = !s); - } - /** Toggles the `disabled` property. */ - toggleEnabled() { - this.enabled ? this.disable() : this.enable(); - } - /** Removes the `Tooltip` from the target element. */ - dispose() { - const { tooltip: e, options: t } = this, s = { ...this, name: this.name }, n = () => setTimeout(() => He(s, () => super.dispose()), 17); - t.animation && U(s) ? (this.options.delay = 0, this.hide(), ot(e, n)) : n(); - } -} -g(G, "selector", Ce), g(G, "init", Pe), g(G, "getInstance", Ct), g(G, "styleTip", $t); -export { - G as T, - it as a, - Ee as g, - Dt as p, - $t as s, - Tt as t -}; -//# sourceMappingURL=tooltip-BuF2bDNc.mjs.map diff --git a/dist/components/tooltip-BuF2bDNc.mjs.map b/dist/components/tooltip-BuF2bDNc.mjs.map deleted file mode 100644 index 1e4f3041..00000000 --- a/dist/components/tooltip-BuF2bDNc.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tooltip-BuF2bDNc.mjs","sources":["../../src/strings/popoverString.ts","../../src/strings/popoverComponent.ts","../../src/strings/tooltipString.ts","../../src/util/getTipTemplate.ts","../../src/util/tipClassPositions.ts","../../src/util/styleTip.ts","../../src/util/tooltipDefaults.ts","../../src/strings/dataOriginalTitle.ts","../../src/strings/tooltipComponent.ts","../../src/util/setHtml.ts","../../src/util/createTip.ts","../../src/util/getElementContainer.ts","../../src/components/tooltip.ts"],"sourcesContent":["/** @type {string} */\nconst popoverString = 'popover';\nexport default popoverString;\n","/** @type {string} */\nconst popoverComponent = 'Popover';\nexport default popoverComponent;\n","/** @type {string} */\nconst tooltipString = 'tooltip';\nexport default tooltipString;\n","import tooltipString from '../strings/tooltipString';\n\n/**\n * Returns a template for Popover / Tooltip.\n *\n * @param tipType the expected markup type\n * @returns the template markup\n */\nconst getTipTemplate = (tipType: string) => {\n const isTooltip = tipType === tooltipString;\n const bodyClass = isTooltip ? `${tipType}-inner` : `${tipType}-body`;\n const header = !isTooltip ? `

` : '';\n const arrow = `
`;\n const body = `
`;\n return `
${header + arrow + body}
`;\n};\n\nexport default getTipTemplate;\n","const tipClassPositions = {\n top: 'top',\n bottom: 'bottom',\n left: 'start',\n right: 'end',\n};\n\nexport default tipClassPositions;\n","import {\n isHTMLElement,\n setElementStyle,\n getDocumentElement,\n getBoundingClientRect,\n getElementStyle,\n isRTL,\n toLowerCase,\n createCustomEvent,\n dispatchEvent,\n} from '@thednp/shorty';\n\nimport popoverComponent from '../strings/popoverComponent';\nimport tipClassPositions from './tipClassPositions';\nimport Tooltip from '../components/tooltip';\nimport type { TooltipEvent } from '../interface/tooltip';\nimport type { PopoverEvent } from '../interface/popover';\n\n/**\n * Style popovers and tooltips.\n *\n * @param self the `Popover` / `Tooltip` instance\n */\nconst styleTip = (self: T) => {\n const tipClasses = /\\b(top|bottom|start|end)+/;\n const { element, tooltip, container, options, arrow } = self;\n\n /* istanbul ignore else */\n if (tooltip) {\n const tipPositions = { ...tipClassPositions };\n const RTL = isRTL(element);\n\n // reset tooltip style (top: 0, left: 0 works best)\n setElementStyle(tooltip, {\n // top: '0px', left: '0px', right: '', bottom: '',\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n const isPopover = self.name === popoverComponent;\n const { offsetWidth: tipWidth, offsetHeight: tipHeight } = tooltip;\n const { clientWidth: htmlcw, clientHeight: htmlch, offsetWidth: htmlow } = getDocumentElement(element);\n let { placement } = options;\n const { clientWidth: parentCWidth, offsetWidth: parentOWidth } = container as HTMLElement;\n const parentPosition = getElementStyle(container as HTMLElement, 'position');\n const fixedParent = parentPosition === 'fixed';\n const scrollbarWidth = fixedParent ? Math.abs(parentCWidth - parentOWidth) : Math.abs(htmlcw - htmlow);\n const leftBoundry = RTL && fixedParent ? /* istanbul ignore next */ scrollbarWidth : 0;\n const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1;\n const {\n width: elemWidth,\n height: elemHeight,\n left: elemRectLeft,\n right: elemRectRight,\n top: elemRectTop,\n } = getBoundingClientRect(element, true);\n const { x, y } = {\n x: elemRectLeft,\n y: elemRectTop,\n };\n // reset arrow style\n setElementStyle(arrow as HTMLElement, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n let topPosition: number | string = 0;\n let bottomPosition: number | string = '';\n let leftPosition: number | string = 0;\n let rightPosition: number | string = '';\n let arrowTop: number | string = '';\n let arrowLeft: number | string = '';\n let arrowRight: number | string = '';\n\n const arrowWidth = (arrow as HTMLElement).offsetWidth || 0;\n const arrowHeight = (arrow as HTMLElement).offsetHeight || 0;\n const arrowAdjust = arrowWidth / 2;\n\n // check placement\n let topExceed = elemRectTop - tipHeight - arrowHeight < 0;\n let bottomExceed = elemRectTop + tipHeight + elemHeight + arrowHeight >= htmlch;\n let leftExceed = elemRectLeft - tipWidth - arrowWidth < leftBoundry;\n let rightExceed = elemRectLeft + tipWidth + elemWidth + arrowWidth >= rightBoundry;\n\n const horizontals = ['left', 'right'];\n const verticals = ['top', 'bottom'];\n\n topExceed = horizontals.includes(placement)\n ? elemRectTop + elemHeight / 2 - tipHeight / 2 - arrowHeight < 0\n : topExceed;\n bottomExceed = horizontals.includes(placement)\n ? elemRectTop + tipHeight / 2 + elemHeight / 2 + arrowHeight >= htmlch\n : bottomExceed;\n leftExceed = verticals.includes(placement) ? elemRectLeft + elemWidth / 2 - tipWidth / 2 < leftBoundry : leftExceed;\n rightExceed = verticals.includes(placement)\n ? elemRectLeft + tipWidth / 2 + elemWidth / 2 >= rightBoundry\n : rightExceed;\n\n // first remove side positions if both left and right limits are exceeded\n // we usually fall back to top|bottom\n placement = horizontals.includes(placement) && leftExceed && rightExceed ? 'top' : placement;\n // recompute placement\n placement = placement === 'top' && topExceed ? 'bottom' : placement;\n placement = placement === 'bottom' && bottomExceed ? 'top' : placement;\n placement = placement === 'left' && leftExceed ? 'right' : placement;\n placement = placement === 'right' && rightExceed ? /* istanbul ignore next */ 'left' : placement;\n\n // update tooltip/popover class\n if (!tooltip.className.includes(placement)) {\n tooltip.className = tooltip.className.replace(tipClasses, tipPositions[placement]);\n }\n\n // compute tooltip / popover coordinates\n /* istanbul ignore else */\n if (horizontals.includes(placement)) {\n // secondary|side positions\n if (placement === 'left') {\n // LEFT\n leftPosition = x - tipWidth - (isPopover ? arrowWidth : 0);\n } else {\n // RIGHT\n leftPosition = x + elemWidth + (isPopover ? arrowWidth : 0);\n }\n\n // adjust top and arrow\n if (topExceed && bottomExceed) {\n topPosition = 0;\n bottomPosition = 0;\n arrowTop = elemRectTop + elemHeight / 2 - arrowHeight / 2;\n } else if (topExceed) {\n topPosition = y;\n bottomPosition = '';\n arrowTop = elemHeight / 2 - arrowWidth;\n } else if (bottomExceed) {\n topPosition = y - tipHeight + elemHeight;\n bottomPosition = '';\n arrowTop = tipHeight - elemHeight / 2 - arrowWidth;\n } else {\n topPosition = y - tipHeight / 2 + elemHeight / 2;\n arrowTop = tipHeight / 2 - arrowHeight / 2;\n }\n } else if (verticals.includes(placement)) {\n if (placement === 'top') {\n topPosition = y - tipHeight - (isPopover ? arrowHeight : 0);\n } else {\n // BOTTOM\n topPosition = y + elemHeight + (isPopover ? arrowHeight : 0);\n }\n\n // adjust left | right and also the arrow\n if (leftExceed) {\n leftPosition = 0;\n arrowLeft = x + elemWidth / 2 - arrowAdjust;\n } else if (rightExceed) {\n leftPosition = 'auto';\n rightPosition = 0;\n arrowRight = elemWidth / 2 + rightBoundry - elemRectRight - arrowAdjust;\n } else {\n leftPosition = x - tipWidth / 2 + elemWidth / 2;\n arrowLeft = tipWidth / 2 - arrowAdjust;\n }\n }\n\n // apply style to tooltip/popover\n setElementStyle(tooltip, {\n top: `${topPosition}px`,\n bottom: bottomPosition === '' ? '' : `${bottomPosition}px`,\n left: leftPosition === 'auto' ? leftPosition : `${leftPosition}px`,\n right: rightPosition !== '' ? `${rightPosition}px` : '',\n });\n\n // update arrow placement\n /* istanbul ignore else */\n if (isHTMLElement(arrow)) {\n if (arrowTop !== '') {\n arrow.style.top = `${arrowTop}px`;\n }\n if (arrowLeft !== '') {\n arrow.style.left = `${arrowLeft}px`;\n } else if (arrowRight !== '') {\n arrow.style.right = `${arrowRight}px`;\n }\n }\n const updatedTooltipEvent = createCustomEvent(`updated.bs.${toLowerCase(self.name)}`);\n dispatchEvent(element, updatedTooltipEvent);\n }\n};\n\nexport default styleTip;\n","import getTipTemplate from './getTipTemplate';\nimport tooltipString from '../strings/tooltipString';\nimport { TooltipOptions } from '../interface/tooltip';\n\nconst tooltipDefaults: TooltipOptions = {\n template: getTipTemplate(tooltipString),\n title: '',\n customClass: '',\n trigger: 'hover focus',\n placement: 'top',\n sanitizeFn: undefined,\n animation: true,\n delay: 200,\n container: document.body,\n content: '',\n dismissible: false,\n btnClose: '',\n};\nexport default tooltipDefaults;\n","/**\n * Global namespace for `data-bs-title` attribute.\n */\nconst dataOriginalTitle = 'data-original-title';\nexport default dataOriginalTitle;\n","/** @type {string} */\nconst tooltipComponent = 'Tooltip';\nexport default tooltipComponent;\n","import { isNode, isArray, isFunction, isString, isNodeList, isHTMLElement } from '@thednp/shorty';\n\n/**\n * Append an existing `Element` to Popover / Tooltip component or HTML\n * markup string to be parsed & sanitized to be used as popover / tooltip content.\n *\n * @param element target\n * @param content the `Element` to append / string\n * @param sanitizeFn a function to sanitize string content\n */\nconst setHtml = (element: HTMLElement, content: Node[] | Node | string, sanitizeFn?: (s: string) => string) => {\n /* istanbul ignore else */\n if (isString(content) && content.length) {\n let dirty = content.trim(); // fixing #233\n if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty);\n\n const domParser = new DOMParser();\n const tempDocument = domParser.parseFromString(dirty, 'text/html');\n element.append(...[...tempDocument.body.childNodes]);\n } else if (isHTMLElement(content)) {\n element.append(content);\n } else if (isNodeList(content) || (isArray(content) && content.every(isNode))) {\n element.append(...[...content]);\n }\n};\nexport default setHtml;\n","import { createElement, addClass, hasClass, setAttribute, querySelector, isRTL, isHTMLElement } from '@thednp/shorty';\n\nimport tooltipComponent from '../strings/tooltipComponent';\nimport tooltipString from '../strings/tooltipString';\nimport popoverString from '../strings/popoverString';\nimport fadeClass from '../strings/fadeClass';\nimport tipClassPositions from './tipClassPositions';\nimport setHtml from './setHtml';\nimport Tooltip from '../components/tooltip';\nimport Popover from '../components/popover';\n\n/**\n * Creates a new tooltip / popover.\n *\n * @param self the `Tooltip` / `Popover` instance\n */\nconst createTip = (self: Tooltip | Popover) => {\n const isTooltip = self.name === tooltipComponent;\n\n const { id, element, options } = self;\n const { title, placement, template, animation, customClass, sanitizeFn, dismissible, content, btnClose } = options;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipPositions = { ...tipClassPositions };\n let titleParts: Node[] = [];\n let contentParts: Node[] = [];\n\n if (isRTL(element)) {\n tipPositions.left = 'end';\n tipPositions.right = 'start';\n }\n\n // set initial popover class\n const placementClass = `bs-${tipString}-${tipPositions[placement]}`;\n\n // load template\n let tooltipTemplate: Node | string;\n if (isHTMLElement(template)) {\n tooltipTemplate = template;\n } else {\n const htmlMarkup = createElement('div') as HTMLElement;\n setHtml(htmlMarkup, template, sanitizeFn);\n tooltipTemplate = htmlMarkup.firstChild as HTMLElement;\n }\n\n // set popover markup\n self.tooltip = isHTMLElement(tooltipTemplate)\n ? (tooltipTemplate.cloneNode(true) as HTMLElement)\n : /* istanbul ignore next */ undefined;\n\n const { tooltip } = self;\n /* istanbul ignore else */\n if (tooltip) {\n // set id and role attributes\n setAttribute(tooltip, 'id', id);\n setAttribute(tooltip, 'role', tooltipString);\n\n const bodyClass = isTooltip ? `${tooltipString}-inner` : `${popoverString}-body`;\n const tooltipHeader = isTooltip ? null : querySelector(`.${popoverString}-header`, tooltip);\n const tooltipBody = querySelector(`.${bodyClass}`, tooltip);\n\n // set arrow and enable access for styleTip\n self.arrow = querySelector(`.${tipString}-arrow`, tooltip) as HTMLElement;\n const { arrow } = self;\n\n if (isHTMLElement(title)) titleParts = [title.cloneNode(true)];\n else {\n const tempTitle = createElement('div') as HTMLElement;\n setHtml(tempTitle, title, sanitizeFn);\n titleParts = [...[...tempTitle.childNodes]];\n }\n\n if (isHTMLElement(content)) contentParts = [content.cloneNode(true)];\n else {\n const tempContent = createElement('div') as HTMLElement;\n setHtml(tempContent, content, sanitizeFn);\n contentParts = [...[...tempContent.childNodes]];\n }\n\n // set dismissible button\n if (dismissible) {\n if (title) {\n if (isHTMLElement(btnClose)) titleParts = [...titleParts, btnClose.cloneNode(true)];\n else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n titleParts = [...titleParts, tempBtn.firstChild as Node];\n }\n } else {\n /* istanbul ignore else */\n if (tooltipHeader) tooltipHeader.remove();\n if (isHTMLElement(btnClose)) contentParts = [...contentParts, btnClose.cloneNode(true)];\n else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n contentParts = [...contentParts, tempBtn.firstChild as Node];\n }\n }\n }\n\n // fill the template with content from options / data attributes\n // also sanitize title && content\n /* istanbul ignore else */\n if (!isTooltip) {\n /* istanbul ignore else */\n if (title && tooltipHeader) setHtml(tooltipHeader, titleParts, sanitizeFn);\n /* istanbul ignore else */\n if (content && tooltipBody) setHtml(tooltipBody, contentParts, sanitizeFn);\n // set btn\n self.btn = querySelector('.btn-close', tooltip) || undefined;\n } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn);\n\n // Bootstrap 5.2.x\n // addClass(tooltip, 'position-absolute');\n addClass(tooltip, 'position-fixed');\n addClass(arrow, 'position-absolute');\n\n // set popover animation and placement\n /* istanbul ignore else */\n if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString);\n /* istanbul ignore else */\n if (animation && !hasClass(tooltip, fadeClass)) addClass(tooltip, fadeClass);\n /* istanbul ignore else */\n if (customClass && !hasClass(tooltip, customClass)) {\n addClass(tooltip, customClass);\n }\n /* istanbul ignore else */\n if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass);\n }\n};\n\nexport default createTip;\n","import { getDocument, isShadowRoot, isTableElement, getParentNode, getElementStyle } from '@thednp/shorty';\n\n/**\n * Returns an `HTMLElement` to be used as default value for *options.container*\n * for `Tooltip` / `Popover` components.\n *\n * @see https://github.com/floating-ui/floating-ui\n *\n * @param element the target\n * @returns the query result\n */\nconst getElementContainer = (element: HTMLElement): ParentNode => {\n const majorBlockTags = ['HTML', 'BODY'];\n const containers: ParentNode[] = [];\n let { parentNode } = element as Node;\n\n while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) {\n parentNode = getParentNode(parentNode) as ParentNode;\n /* istanbul ignore else */\n if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) {\n containers.push(parentNode);\n }\n }\n\n return (\n containers.find((c, i) => {\n if (\n getElementStyle(c as HTMLElement, 'position') !== 'relative' &&\n containers.slice(i + 1).every(r => getElementStyle(r as HTMLElement, 'position') === 'static')\n ) {\n return c;\n }\n return null;\n }) || /* istanbul ignore next: optional guard */ getDocument(element).body\n );\n};\n\nexport default getElementContainer;\n","/* Native JavaScript for Bootstrap 5 | Tooltip\n---------------------------------------------- */\nimport {\n ariaDescribedBy,\n focusoutEvent,\n focusinEvent,\n focusEvent,\n mouseleaveEvent,\n mouseenterEvent,\n mousedownEvent,\n mouseclickEvent,\n closest,\n getUID,\n getDocument,\n getWindow,\n removeAttribute,\n getAttribute,\n setAttribute,\n hasAttribute,\n touchstartEvent,\n resizeEvent,\n scrollEvent,\n mousehoverEvent,\n toLowerCase,\n focus,\n Timer,\n emulateTransitionEnd,\n passiveHandler,\n dispatchEvent,\n isApple,\n getInstance,\n ObjectAssign,\n createCustomEvent,\n removeClass,\n hasClass,\n addClass,\n getElementStyle,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport dataOriginalTitle from '../strings/dataOriginalTitle';\nimport showClass from '../strings/showClass';\nimport tooltipString from '../strings/tooltipString';\nimport tooltipComponent from '../strings/tooltipComponent';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\nimport modalString from '../strings/modalString';\nimport offcanvasString from '../strings/offcanvasString';\n\nimport styleTip from '../util/styleTip';\nimport createTip from '../util/createTip';\nimport { appendPopup, removePopup, hasPopup } from '../util/popupContainer';\nimport getElementContainer from '../util/getElementContainer';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport BaseComponent from './base-component';\nimport { TooltipOptions, TooltipEvent } from '../interface/tooltip';\nimport { PopoverOptions, PopoverEvent } from '../interface/popover';\n\n// TOOLTIP PRIVATE GC\n// ==================\nconst tooltipSelector = `[${dataBsToggle}=\"${tooltipString}\"],[data-tip=\"${tooltipString}\"]`;\nconst titleAttr = 'title';\n\n/**\n * Static method which returns an existing `Tooltip` instance associated\n * to a target `Element`.\n *\n */\nlet getTooltipInstance = (element: HTMLElement) => getInstance(element, tooltipComponent);\n\n/**\n * A `Tooltip` initialization callback.\n */\nconst tooltipInitCallback = (element: HTMLElement) => new Tooltip(element);\n\n// TOOLTIP PRIVATE METHODS\n// =======================\n/**\n * Removes the tooltip from the DOM.\n *\n * @param self the `Tooltip` instance\n */\nconst removeTooltip = (self: Tooltip) => {\n const { element, tooltip, container, offsetParent } = self;\n removeAttribute(element, ariaDescribedBy);\n removePopup(tooltip as HTMLElement, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Check if container contains the tooltip.\n *\n * @param self Tooltip\n */\nconst hasTip = (self: Tooltip): boolean | undefined => {\n const { tooltip, container, offsetParent } = self;\n\n return tooltip && hasPopup(tooltip, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Executes after the instance has been disposed.\n *\n * @param self the `Tooltip` instance\n * @param callback the parent dispose callback\n */\nconst disposeTooltipComplete = (self: Tooltip, callback?: () => void) => {\n const { element } = self;\n self._toggleEventListeners();\n\n /* istanbul ignore else */\n if (hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent) {\n toggleTooltipTitle(self);\n }\n /* istanbul ignore else */\n if (callback) callback();\n};\n\n/**\n * Toggles on/off the special `Tooltip` event listeners.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipAction = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n\n action(getDocument(element), touchstartEvent, self.handleTouch, passiveHandler);\n\n [scrollEvent, resizeEvent].forEach(ev => {\n action(getWindow(element), ev, self.update, passiveHandler);\n });\n};\n\n/**\n * Executes after the tooltip was shown to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipShownAction = (self: Tooltip) => {\n const { element } = self;\n const shownTooltipEvent = createCustomEvent(`shown.bs.${toLowerCase(self.name)}`);\n\n toggleTooltipAction(self, true);\n dispatchEvent(element, shownTooltipEvent);\n Timer.clear(element, 'in');\n};\n\n/**\n * Executes after the tooltip was hidden to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipHiddenAction = (self: Tooltip) => {\n const { element } = self;\n const hiddenTooltipEvent = createCustomEvent(`hidden.bs.${toLowerCase(self.name)}`);\n\n toggleTooltipAction(self);\n removeTooltip(self);\n dispatchEvent(element, hiddenTooltipEvent);\n\n Timer.clear(element, 'out');\n};\n\n/**\n * Toggles on/off the `Tooltip` event listeners that hide/update the tooltip.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, container, offsetParent } = self;\n const { offsetHeight, scrollHeight } = container as HTMLElement;\n const parentModal = closest(element, `.${modalString}`);\n const parentOffcanvas = closest(element, `.${offcanvasString}`);\n\n /* istanbul ignore else */\n const win = getWindow(element);\n const overflow = offsetHeight !== scrollHeight;\n const scrollTarget = container === offsetParent && overflow ? container : win;\n action(scrollTarget, resizeEvent, self.update, passiveHandler);\n action(scrollTarget, scrollEvent, self.update, passiveHandler);\n\n // dismiss tooltips inside modal / offcanvas\n if (parentModal) action(parentModal, `hide.bs.${modalString}`, self.handleHide);\n if (parentOffcanvas) action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide);\n};\n\n/**\n * Toggles the `title` and `data-original-title` attributes.\n *\n * @param self the `Tooltip` instance\n * @param content when `true`, event listeners are added\n */\nconst toggleTooltipTitle = (self: Tooltip, content?: string) => {\n // [0 - add, 1 - remove] | [0 - remove, 1 - add]\n const titleAtt = [dataOriginalTitle, titleAttr];\n const { element } = self;\n\n setAttribute(\n element,\n titleAtt[content ? 0 : 1],\n content || getAttribute(element, titleAtt[0]) || /* istanbul ignore next */ '',\n );\n removeAttribute(element, titleAtt[content ? 1 : 0]);\n};\n\n// TOOLTIP DEFINITION\n// ==================\n/** Creates a new `Tooltip` instance. */\nexport default class Tooltip extends BaseComponent {\n static selector = tooltipSelector;\n static init = tooltipInitCallback;\n static getInstance = getTooltipInstance;\n static styleTip = styleTip;\n declare options: TooltipOptions;\n declare btn?: HTMLElement;\n declare tooltip?: HTMLElement;\n declare container: ParentNode;\n declare arrow?: HTMLElement;\n declare offsetParent?: HTMLElement;\n declare enabled: boolean;\n declare id: string;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n const { element } = this;\n const isTooltip = this.name === tooltipComponent;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipComponent = isTooltip ? tooltipComponent : popoverComponent;\n\n /* istanbul ignore next: this is to set Popover too */\n getTooltipInstance = (elem: HTMLElement) => getInstance(elem, tipComponent);\n\n // additional properties\n this.enabled = true;\n /** Set unique ID for `aria-describedby`. */\n this.id = `${tipString}-${getUID(element, tipString)}`;\n\n // instance options\n const { options } = this;\n\n // invalidate\n if (!((!options.title && isTooltip) || (!isTooltip && !options.content))) {\n // reset default options\n ObjectAssign(tooltipDefaults, { titleAttr: '' });\n\n // set title attributes and add event listeners\n /* istanbul ignore else */\n if (hasAttribute(element, titleAttr) && isTooltip && typeof options.title === 'string') {\n toggleTooltipTitle(this, options.title);\n }\n\n // set containers\n this.container = getElementContainer(element);\n this.offsetParent = ['sticky', 'fixed'].some(\n position => getElementStyle(this.container as HTMLElement, 'position') === position,\n )\n ? (this.container as HTMLElement)\n : getDocument(this.element).body;\n\n // create tooltip here\n createTip(this);\n\n // attach events\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tooltipComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return tooltipDefaults;\n }\n\n // TOOLTIP PUBLIC METHODS\n // ======================\n /** Handles the focus event on iOS. */\n handleFocus = () => focus(this.element);\n /** Shows the tooltip. */\n handleShow = () => this.show();\n show() {\n const { options, tooltip, element, container, offsetParent, id } = this;\n const { animation } = options;\n const outTimer = Timer.get(element, 'out');\n const tipContainer = container === offsetParent ? container : offsetParent;\n\n Timer.clear(element, 'out');\n\n if (tooltip && !outTimer && !hasTip(this)) {\n Timer.set(\n element,\n () => {\n const showTooltipEvent = createCustomEvent(`show.bs.${toLowerCase(this.name)}`);\n dispatchEvent(element, showTooltipEvent);\n if (!showTooltipEvent.defaultPrevented) {\n // append to container\n appendPopup(tooltip, tipContainer);\n\n setAttribute(element, ariaDescribedBy, `#${id}`);\n\n this.update();\n toggleTooltipOpenHandlers(this, true);\n\n /* istanbul ignore else */\n if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass);\n /* istanbul ignore else */\n if (animation) emulateTransitionEnd(tooltip, () => tooltipShownAction(this));\n else tooltipShownAction(this);\n }\n },\n 17,\n 'in',\n );\n }\n }\n\n /** Hides the tooltip. */\n handleHide = () => this.hide();\n hide() {\n const { options, tooltip, element } = this;\n const { animation, delay } = options;\n\n Timer.clear(element, 'in');\n\n /* istanbul ignore else */\n if (tooltip && hasTip(this)) {\n Timer.set(\n element,\n () => {\n const hideTooltipEvent = createCustomEvent(`hide.bs.${toLowerCase(this.name)}`);\n dispatchEvent(element, hideTooltipEvent);\n\n if (!hideTooltipEvent.defaultPrevented) {\n this.update();\n removeClass(tooltip, showClass);\n toggleTooltipOpenHandlers(this);\n\n /* istanbul ignore else */\n if (animation) emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this));\n else tooltipHiddenAction(this);\n }\n },\n delay + 17,\n 'out',\n );\n }\n }\n\n /** Updates the tooltip position. */\n update = () => {\n styleTip(this);\n };\n\n /** Toggles the tooltip visibility. */\n toggle = () => {\n const { tooltip } = this;\n\n if (tooltip && !hasTip(this)) this.show();\n else this.hide();\n };\n\n /** Enables the tooltip. */\n enable() {\n const { enabled } = this;\n /* istanbul ignore else */\n if (!enabled) {\n this._toggleEventListeners(true);\n this.enabled = !enabled;\n }\n }\n\n /** Disables the tooltip. */\n disable() {\n const { tooltip, options, enabled } = this;\n const { animation } = options;\n /* istanbul ignore else */\n if (enabled) {\n if (tooltip && hasTip(this) && animation) {\n this.hide();\n emulateTransitionEnd(tooltip, () => this._toggleEventListeners());\n } else {\n this._toggleEventListeners();\n }\n this.enabled = !enabled;\n }\n }\n\n /** Toggles the `disabled` property. */\n toggleEnabled() {\n if (!this.enabled) this.enable();\n else this.disable();\n }\n\n /**\n * Handles the `touchstart` event listener for `Tooltip`\n *\n * @this {Tooltip}\n * @param {TouchEvent} e the `Event` object\n */\n handleTouch = ({ target }: TouchEvent) => {\n const { tooltip, element } = this;\n\n /* istanbul ignore else */\n if (\n (tooltip && tooltip.contains(target as HTMLElement)) ||\n target === element ||\n (target && element.contains(target as HTMLElement))\n ) {\n // smile for ESLint\n } else {\n this.hide();\n }\n };\n\n /**\n * Toggles on/off the `Tooltip` event listeners.\n *\n * @param add when `true`, event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n // btn is only for dismissible popover\n const { element, options, btn } = this;\n const { trigger } = options;\n const isPopover = this.name !== tooltipComponent;\n const dismissible = isPopover && (options as PopoverOptions).dismissible ? true : false;\n\n /* istanbul ignore else */\n if (!trigger.includes('manual')) {\n this.enabled = !!add;\n\n const triggerOptions = trigger.split(' ');\n\n triggerOptions.forEach(tr => {\n /* istanbul ignore else */\n if (tr === mousehoverEvent) {\n action(element, mousedownEvent, this.handleShow);\n action(element, mouseenterEvent, this.handleShow);\n\n /* istanbul ignore else */\n if (!dismissible) {\n action(element, mouseleaveEvent, this.handleHide);\n action(getDocument(element), touchstartEvent, this.handleTouch, passiveHandler);\n }\n } else if (tr === mouseclickEvent) {\n action(element, tr, !dismissible ? this.toggle : this.handleShow);\n } else if (tr === focusEvent) {\n action(element, focusinEvent, this.handleShow);\n /* istanbul ignore else */\n if (!dismissible) action(element, focusoutEvent, this.handleHide);\n /* istanbul ignore else */\n if (isApple) {\n action(element, mouseclickEvent, this.handleFocus);\n }\n }\n /* istanbul ignore else */\n if (dismissible && btn) {\n action(btn, mouseclickEvent, this.handleHide);\n }\n });\n }\n };\n\n /** Removes the `Tooltip` from the target element. */\n dispose() {\n const { tooltip, options } = this;\n const clone = { ...this, name: this.name };\n const callback = () => setTimeout(() => disposeTooltipComplete(clone, () => super.dispose()), 17);\n\n if (options.animation && hasTip(clone)) {\n this.options.delay = 0; // reset delay\n this.hide();\n emulateTransitionEnd(tooltip as HTMLElement, callback);\n } else {\n callback();\n }\n }\n}\n"],"names":["popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","arrow","body","tipClassPositions","styleTip","self","tipClasses","element","tooltip","container","options","tipPositions","RTL","isRTL","setElementStyle","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","getDocumentElement","placement","parentCWidth","parentOWidth","fixedParent","getElementStyle","scrollbarWidth","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","getBoundingClientRect","x","y","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","topExceed","bottomExceed","leftExceed","rightExceed","horizontals","verticals","isHTMLElement","updatedTooltipEvent","createCustomEvent","toLowerCase","dispatchEvent","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","isString","dirty","isFunction","tempDocument","isNodeList","isArray","isNode","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","createElement","setAttribute","tooltipHeader","querySelector","tooltipBody","tempTitle","tempContent","tempBtn","addClass","hasClass","fadeClass","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","c","i","r","getDocument","tooltipSelector","dataBsToggle","titleAttr","getTooltipInstance","getInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","removeAttribute","ariaDescribedBy","removePopup","hasTip","hasPopup","disposeTooltipComplete","callback","hasAttribute","toggleTooltipTitle","toggleTooltipAction","add","action","addListener","removeListener","touchstartEvent","passiveHandler","scrollEvent","resizeEvent","ev","getWindow","tooltipShownAction","shownTooltipEvent","Timer","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","scrollHeight","parentModal","closest","modalString","parentOffcanvas","offcanvasString","win","scrollTarget","titleAtt","getAttribute","BaseComponent","target","config","__publicField","focus","btn","trigger","tr","mousehoverEvent","mousedownEvent","mouseenterEvent","mouseleaveEvent","mouseclickEvent","focusEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","ObjectAssign","position","outTimer","tipContainer","showTooltipEvent","appendPopup","showClass","emulateTransitionEnd","delay","hideTooltipEvent","removeClass","enabled","clone"],"mappings":";;;;;;;;;;AACA,MAAMA,KAAgB,WCAhBC,KAAmB,WCAnBC,IAAgB,WCOhBC,KAAiB,CAACC,MAAoB;AAC1C,QAAMC,IAAYD,MAAYF,GACxBI,IAAYD,IAAY,GAAGD,CAAO,WAAW,GAAGA,CAAO,SACvDG,IAAUF,IAAoD,KAAxC,cAAcD,CAAO,kBAC3CI,IAAQ,eAAeJ,CAAO,kBAC9BK,IAAO,eAAeH,CAAS;AACrC,SAAO,eAAeF,CAAO,WAAWF,CAAa,KAAKK,IAASC,IAAQC,CAAI;AACjF,GCfMC,KAAoB;AAAA,EACxB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACT,GCkBMC,KAAW,CAAoBC,MAAY;AAC/C,QAAMC,IAAa,6BACb,EAAE,SAAAC,GAAS,SAAAC,GAAS,WAAAC,GAAW,SAAAC,GAAS,OAAAT,EAAU,IAAAI;AAGxD,MAAIG,GAAS;AACL,UAAAG,IAAe,EAAE,GAAGR,MACpBS,IAAMC,GAAMN,CAAO;AAGzB,IAAAO,GAAgBN,GAAS;AAAA;AAAA,MAEvB,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACT;AACK,UAAAO,IAAYV,EAAK,SAASX,IAC1B,EAAE,aAAasB,GAAU,cAAcC,MAAcT,GACrD,EAAE,aAAaU,GAAQ,cAAcC,GAAQ,aAAaC,EAAW,IAAAC,GAAmBd,CAAO;AACjG,QAAA,EAAE,WAAAe,EAAc,IAAAZ;AACpB,UAAM,EAAE,aAAaa,GAAc,aAAaC,MAAiBf,GAE3DgB,IADiBC,GAAgBjB,GAA0B,UAAU,MACpC,SACjCkB,IAA+B,KAAK,IAAnBF,IAAuBF,IAAeC,IAAyBN,IAASE,CAAtB,GACnEQ,IAAchB,KAAOa;AAAA;AAAA,MAAyCE;AAAA,QAAiB,GAC/EE,IAAeX,KAAWN,IAAuB,IAAjBe,KAAsB,GACtD;AAAA,MACJ,OAAOG;AAAA,MACP,QAAQC;AAAA,MACR,MAAMC;AAAA,MACN,OAAOC;AAAA,MACP,KAAKC;AAAA,IAAA,IACHC,GAAsB5B,GAAS,EAAI,GACjC,EAAE,GAAA6B,GAAG,GAAAC,MAAM;AAAA,MACf,GAAGL;AAAA,MACH,GAAGE;AAAA,IAAA;AAGL,IAAApB,GAAgBb,GAAsB;AAAA,MACpC,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACT;AACD,QAAIqC,IAA+B,GAC/BC,IAAkC,IAClCC,IAAgC,GAChCC,KAAiC,IACjCC,IAA4B,IAC5BC,IAA6B,IAC7BC,KAA8B;AAE5B,UAAAC,IAAc5C,EAAsB,eAAe,GACnD6C,IAAe7C,EAAsB,gBAAgB,GACrD8C,KAAcF,IAAa;AAG7B,QAAAG,IAAYd,IAAcjB,IAAY6B,IAAc,GACpDG,IAAef,IAAcjB,IAAYc,IAAae,KAAe3B,GACrE+B,IAAalB,IAAehB,IAAW6B,IAAajB,GACpDuB,IAAcnB,IAAehB,IAAWc,IAAYe,KAAchB;AAEhE,UAAAuB,KAAc,CAAC,QAAQ,OAAO,GAC9BC,KAAY,CAAC,OAAO,QAAQ;AAEtB,IAAAL,IAAAI,GAAY,SAAS9B,CAAS,IACtCY,IAAcH,IAAa,IAAId,IAAY,IAAI6B,IAAc,IAC7DE,GACWC,IAAAG,GAAY,SAAS9B,CAAS,IACzCY,IAAcjB,IAAY,IAAIc,IAAa,IAAIe,KAAe3B,IAC9D8B,GACSC,IAAAG,GAAU,SAAS/B,CAAS,IAAIU,IAAeF,IAAY,IAAId,IAAW,IAAIY,IAAcsB,GAC3FC,IAAAE,GAAU,SAAS/B,CAAS,IACtCU,IAAehB,IAAW,IAAIc,IAAY,KAAKD,IAC/CsB,GAIJ7B,IAAY8B,GAAY,SAAS9B,CAAS,KAAK4B,KAAcC,IAAc,QAAQ7B,GAEvEA,IAAAA,MAAc,SAAS0B,IAAY,WAAW1B,GAC9CA,IAAAA,MAAc,YAAY2B,IAAe,QAAQ3B,GACjDA,IAAAA,MAAc,UAAU4B,IAAa,UAAU5B,GAC3DA,IAAYA,MAAc,WAAW6B;AAAA;AAAA,MAAyC;AAAA,QAAS7B,GAGlFd,EAAQ,UAAU,SAASc,CAAS,MACvCd,EAAQ,YAAYA,EAAQ,UAAU,QAAQF,GAAYK,EAAaW,CAAS,CAAC,IAK/E8B,GAAY,SAAS9B,CAAS,KAE5BA,MAAc,SAEDkB,IAAAJ,IAAIpB,KAAYD,IAAY8B,IAAa,KAGzCL,IAAAJ,IAAIN,KAAaf,IAAY8B,IAAa,IAIvDG,KAAaC,KACDX,IAAA,GACGC,IAAA,GACNG,IAAAR,IAAcH,IAAa,IAAIe,IAAc,KAC/CE,KACKV,IAAAD,GACGE,IAAA,IACjBG,IAAWX,IAAa,IAAIc,KACnBI,KACTX,IAAcD,IAAIpB,IAAYc,GACbQ,IAAA,IACNG,IAAAzB,IAAYc,IAAa,IAAIc,MAE1BP,IAAAD,IAAIpB,IAAY,IAAIc,IAAa,GACpCW,IAAAzB,IAAY,IAAI6B,IAAc,MAElCO,GAAU,SAAS/B,CAAS,MACjCA,MAAc,QACFgB,IAAAD,IAAIpB,KAAaF,IAAY+B,IAAc,KAG3CR,IAAAD,IAAIN,KAAchB,IAAY+B,IAAc,IAIxDI,KACaV,IAAA,GACHG,IAAAP,IAAIN,IAAY,IAAIiB,MACvBI,KACMX,IAAA,QACCC,KAAA,GACHG,KAAAd,IAAY,IAAID,IAAeI,KAAgBc,OAE7CP,IAAAJ,IAAIpB,IAAW,IAAIc,IAAY,GAC9Ca,IAAY3B,IAAW,IAAI+B,MAK/BjC,GAAgBN,GAAS;AAAA,MACvB,KAAK,GAAG8B,CAAW;AAAA,MACnB,QAAQC,MAAmB,KAAK,KAAK,GAAGA,CAAc;AAAA,MACtD,MAAMC,MAAiB,SAASA,IAAe,GAAGA,CAAY;AAAA,MAC9D,OAAOC,OAAkB,KAAK,GAAGA,EAAa,OAAO;AAAA,IAAA,CACtD,GAIGa,EAAcrD,CAAK,MACjByC,MAAa,OACTzC,EAAA,MAAM,MAAM,GAAGyC,CAAQ,OAE3BC,MAAc,KACV1C,EAAA,MAAM,OAAO,GAAG0C,CAAS,OACtBC,OAAe,OAClB3C,EAAA,MAAM,QAAQ,GAAG2C,EAAU;AAGrC,UAAMW,KAAsBC,EAA+C,cAAcC,EAAYpD,EAAK,IAAI,CAAC,EAAE;AACjH,IAAAqD,EAAcnD,GAASgD,EAAmB;AAAA,EAC5C;AACF,GCxLMI,KAAkC;AAAA,EACtC,UAAU/D,GAAeD,CAAa;AAAA,EACtC,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW,SAAS;AAAA,EACpB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AACZ,GCdMiE,KAAoB,uBCFpBC,IAAmB,WCSnBC,IAAU,CAACvD,GAAsBwD,GAAiCC,MAAuC;AAE7G,MAAIC,GAASF,CAAO,KAAKA,EAAQ,QAAQ;AACnC,QAAAG,IAAQH,EAAQ;AACpB,IAAII,GAAWH,CAAU,MAAGE,IAAQF,EAAWE,CAAK;AAGpD,UAAME,IADY,IAAI,YACS,gBAAgBF,GAAO,WAAW;AACjE,IAAA3D,EAAQ,OAAW,GAAG6D,EAAa,KAAK,UAAW;AAAA,EAAA,MACrD,CAAWd,EAAcS,CAAO,IAC9BxD,EAAQ,OAAOwD,CAAO,KACbM,GAAWN,CAAO,KAAMO,GAAQP,CAAO,KAAKA,EAAQ,MAAMQ,EAAM,MACzEhE,EAAQ,OAAW,GAAGwD,CAAQ;AAElC,GCRMS,KAAY,CAACnE,MAA4B;AACvC,QAAAP,IAAYO,EAAK,SAASwD,GAE1B,EAAE,IAAAY,GAAI,SAAAlE,GAAS,SAAAG,EAAA,IAAYL,GAC3B,EAAE,OAAAqE,GAAO,WAAApD,GAAW,UAAAqD,GAAU,WAAAC,GAAW,aAAAC,GAAa,YAAAb,GAAY,aAAAc,GAAa,SAAAf,GAAS,UAAAgB,EAAA,IAAarE,GACrGsE,IAAYlF,IAAYH,IAAgBF,IACxCkB,IAAe,EAAE,GAAGR;AAC1B,MAAI8E,IAAqB,CAAA,GACrBC,IAAuB,CAAA;AAEvB,EAAArE,GAAMN,CAAO,MACfI,EAAa,OAAO,OACpBA,EAAa,QAAQ;AAIvB,QAAMwE,KAAiB,MAAMH,CAAS,IAAIrE,EAAaW,CAAS,CAAC;AAG7D,MAAA8D;AACA,MAAA9B,EAAcqB,CAAQ;AACN,IAAAS,IAAAT;AAAA,OACb;AACC,UAAAU,IAAaC,EAAc,KAAK;AAC9B,IAAAxB,EAAAuB,GAAYV,GAAUX,CAAU,GACxCoB,IAAkBC,EAAW;AAAA,EAC/B;AAGA,EAAAhF,EAAK,UAAUiD,EAAc8B,CAAe,IACvCA,EAAgB,UAAU,EAAI;AAAA;AAAA,IACJ;AAAA;AAEzB,QAAA,EAAE,SAAA5E,EAAY,IAAAH;AAEpB,MAAIG,GAAS;AAEE,IAAA+E,GAAA/E,GAAS,MAAMiE,CAAE,GACjBc,GAAA/E,GAAS,QAAQb,CAAa;AAE3C,UAAMI,IAAYD,IAAY,GAAGH,CAAa,WAAW,GAAGF,EAAa,SACnE+F,IAAgB1F,IAAY,OAAO2F,GAAc,IAAIhG,EAAa,WAAWe,CAAO,GACpFkF,IAAcD,GAAc,IAAI1F,CAAS,IAAIS,CAAO;AAG1D,IAAAH,EAAK,QAAQoF,GAAc,IAAIT,CAAS,UAAUxE,CAAO;AACnD,UAAA,EAAE,OAAAP,EAAU,IAAAI;AAEd,QAAAiD,EAAcoB,CAAK,EAAG,CAAAO,IAAa,CAACP,EAAM,UAAU,EAAI,CAAC;AAAA,SACxD;AACG,YAAAiB,IAAYL,EAAc,KAAK;AAC7B,MAAAxB,EAAA6B,GAAWjB,GAAOV,CAAU,GACpCiB,IAAa,CAAK,GAAGU,EAAU,UAAW;AAAA,IAC5C;AAEI,QAAArC,EAAcS,CAAO,EAAG,CAAAmB,IAAe,CAACnB,EAAQ,UAAU,EAAI,CAAC;AAAA,SAC9D;AACG,YAAA6B,IAAcN,EAAc,KAAK;AAC/B,MAAAxB,EAAA8B,GAAa7B,GAASC,CAAU,GACxCkB,IAAe,CAAK,GAAGU,EAAY,UAAW;AAAA,IAChD;AAGA,QAAId;AACF,UAAIJ;AACE,YAAApB,EAAcyB,CAAQ,EAAgB,CAAAE,IAAA,CAAC,GAAGA,GAAYF,EAAS,UAAU,EAAI,CAAC;AAAA,aAC7E;AACG,gBAAAc,IAAUP,EAAc,KAAK;AAC3B,UAAAxB,EAAA+B,GAASd,GAAUf,CAAU,GACrCiB,IAAa,CAAC,GAAGA,GAAYY,EAAQ,UAAkB;AAAA,QACzD;AAAA,eAGIL,OAA6B,UAC7BlC,EAAcyB,CAAQ,EAAkB,CAAAG,IAAA,CAAC,GAAGA,GAAcH,EAAS,UAAU,EAAI,CAAC;AAAA,WACjF;AACG,cAAAc,IAAUP,EAAc,KAAK;AAC3B,QAAAxB,EAAA+B,GAASd,GAAUf,CAAU,GACrCkB,IAAe,CAAC,GAAGA,GAAcW,EAAQ,UAAkB;AAAA,MAC7D;AAOJ,IAAK/F,IAOM4E,KAASgB,KAAqB5B,EAAA4B,GAAahB,GAAOV,CAAU,KALjEU,KAASc,KAAuB1B,EAAA0B,GAAeP,GAAYjB,CAAU,GAErED,KAAW2B,KAAqB5B,EAAA4B,GAAaR,GAAclB,CAAU,GAEzE3D,EAAK,MAAMoF,GAAc,cAAcjF,CAAO,KAAK,SAKrDsF,EAAStF,GAAS,gBAAgB,GAClCsF,EAAS7F,GAAO,mBAAmB,GAI9B8F,EAASvF,GAASwE,CAAS,KAAGc,EAAStF,GAASwE,CAAS,GAE1DJ,KAAa,CAACmB,EAASvF,GAASwF,EAAS,KAAGF,EAAStF,GAASwF,EAAS,GAEvEnB,KAAe,CAACkB,EAASvF,GAASqE,CAAW,KAC/CiB,EAAStF,GAASqE,CAAW,GAG1BkB,EAASvF,GAAS2E,EAAc,KAAGW,EAAStF,GAAS2E,EAAc;AAAA,EAC1E;AACF,GCrHMc,KAAsB,CAAC1F,MAAqC;AAC1D,QAAA2F,IAAiB,CAAC,QAAQ,MAAM,GAChCC,IAA2B,CAAA;AAC7B,MAAA,EAAE,YAAAC,EAAe,IAAA7F;AAErB,SAAO6F,KAAc,CAACF,EAAe,SAASE,EAAW,QAAQ;AAC/D,IAAAA,IAAaC,GAAcD,CAAU,GAE/BE,GAAaF,CAAU,KAAKG,GAAeH,CAAU,KACzDD,EAAW,KAAKC,CAAU;AAI9B,SACED,EAAW,KAAK,CAACK,GAAGC,MAEhB/E,GAAgB8E,GAAkB,UAAU,MAAM,cAClDL,EAAW,MAAMM,IAAI,CAAC,EAAE,MAAM,CAAKC,MAAAhF,GAAgBgF,GAAkB,UAAU,MAAM,QAAQ,IAEtFF,IAEF,IACR;AAAA,EAAgDG,GAAYpG,CAAO,EAAE;AAE1E,GC2BMqG,KAAkB,IAAIC,EAAY,KAAKlH,CAAa,iBAAiBA,CAAa,MAClFmH,KAAY;AAOlB,IAAIC,KAAqB,CAACxG,MAAyByG,GAAqBzG,GAASsD,CAAgB;AAKjG,MAAMoD,KAAsB,CAAC1G,MAAyB,IAAI2G,EAAQ3G,CAAO,GASnE4G,KAAgB,CAAC9G,MAAkB;AACvC,QAAM,EAAE,SAAAE,GAAS,SAAAC,GAAS,WAAAC,GAAW,cAAA2G,MAAiB/G;AACtD,EAAAgH,GAAgB9G,GAAS+G,EAAe,GACxCC,GAAY/G,GAAwBC,MAAc2G,IAAe3G,IAAY2G,CAAY;AAC3F,GAOMI,IAAS,CAACnH,MAAuC;AACrD,QAAM,EAAE,SAAAG,GAAS,WAAAC,GAAW,cAAA2G,EAAA,IAAiB/G;AAE7C,SAAOG,KAAWiH,GAASjH,GAASC,MAAc2G,IAAe3G,IAAY2G,CAAY;AAC3F,GAQMM,KAAyB,CAACrH,GAAesH,MAA0B;AACjE,QAAA,EAAE,SAAApH,EAAY,IAAAF;AACpB,EAAAA,EAAK,sBAAsB,GAGvBuH,GAAarH,GAASqD,EAAiB,KAAKvD,EAAK,SAASwD,KAC5DgE,GAAmBxH,CAAI,GAGrBsH,KAAmBA;AACzB,GAQMG,KAAsB,CAACzH,GAAe0H,MAAkB;AACtD,QAAAC,IAASD,IAAME,KAAcC,IAC7B,EAAE,SAAA3H,EAAY,IAAAF;AAEpB,EAAA2H,EAAOrB,GAAYpG,CAAO,GAAG4H,IAAiB9H,EAAK,aAAa+H,CAAc,GAE9E,CAACC,IAAaC,EAAW,EAAE,QAAQ,CAAMC,MAAA;AACvC,IAAAP,EAAOQ,GAAUjI,CAAO,GAAGgI,GAAIlI,EAAK,QAAQ+H,CAAc;AAAA,EAAA,CAC3D;AACH,GAOMK,KAAqB,CAACpI,MAAkB;AACtC,QAAA,EAAE,SAAAE,EAAY,IAAAF,GACdqI,IAAoBlF,EAA+C,YAAYC,EAAYpD,EAAK,IAAI,CAAC,EAAE;AAE7G,EAAAyH,GAAoBzH,GAAM,EAAI,GAC9BqD,EAAcnD,GAASmI,CAAiB,GAClCC,EAAA,MAAMpI,GAAS,IAAI;AAC3B,GAOMqI,KAAsB,CAACvI,MAAkB;AACvC,QAAA,EAAE,SAAAE,EAAY,IAAAF,GACdwI,IAAqBrF,EAA+C,aAAaC,EAAYpD,EAAK,IAAI,CAAC,EAAE;AAE/G,EAAAyH,GAAoBzH,CAAI,GACxB8G,GAAc9G,CAAI,GAClBqD,EAAcnD,GAASsI,CAAkB,GAEnCF,EAAA,MAAMpI,GAAS,KAAK;AAC5B,GAQMuI,KAA4B,CAACzI,GAAe0H,MAAkB;AAC5D,QAAAC,IAASD,IAAME,KAAcC,IAC7B,EAAE,SAAA3H,GAAS,WAAAE,GAAW,cAAA2G,EAAA,IAAiB/G,GACvC,EAAE,cAAA0I,GAAc,cAAAC,EAAiB,IAAAvI,GACjCwI,IAAcC,GAAQ3I,GAAS,IAAI4I,EAAW,EAAE,GAChDC,IAAkBF,GAAQ3I,GAAS,IAAI8I,EAAe,EAAE,GAGxDC,IAAMd,GAAUjI,CAAO,GAEvBgJ,IAAe9I,MAAc2G,KADlB2B,MAAiBC,IAC4BvI,IAAY6I;AAC1E,EAAAtB,EAAOuB,GAAcjB,IAAajI,EAAK,QAAQ+H,CAAc,GAC7DJ,EAAOuB,GAAclB,IAAahI,EAAK,QAAQ+H,CAAc,GAGzDa,KAAoBjB,EAAAiB,GAAa,WAAWE,EAAW,IAAI9I,EAAK,UAAU,GAC1E+I,KAAwBpB,EAAAoB,GAAiB,WAAWC,EAAe,IAAIhJ,EAAK,UAAU;AAC5F,GAQMwH,KAAqB,CAACxH,GAAe0D,MAAqB;AAExD,QAAAyF,IAAW,CAAC5F,IAAmBkD,EAAS,GACxC,EAAE,SAAAvG,EAAY,IAAAF;AAEpB,EAAAkF;AAAA,IACEhF;AAAA,IACAiJ,EAASzF,IAAU,IAAI,CAAC;AAAA,IACxBA,KAAW0F,GAAalJ,GAASiJ,EAAS,CAAC,CAAC;AAAA,IAAgC;AAAA,EAAA,GAE9EnC,GAAgB9G,GAASiJ,EAASzF,IAAU,IAAI,CAAC,CAAC;AACpD;AAKA,MAAqBmD,UAAgBwC,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBjD,YAAYC,GAA8BC,GAAkC;AAC1E,UAAMD,GAAQC,CAAM;AA6DtB;AAAA;AAAA;AAAA,IAAAC,EAAA,qBAAc,MAAMC,GAAM,KAAK,OAAO;AAEtC;AAAA,IAAAD,EAAA,oBAAa,MAAM,KAAK;AAsCxB;AAAA,IAAAA,EAAA,oBAAa,MAAM,KAAK;AAgCxB;AAAA,IAAAA,EAAA,gBAAS,MAAM;AACb,MAAAzJ,GAAkB,IAAI;AAAA,IAAA;AAIxB;AAAA,IAAAyJ,EAAA,gBAAS,MAAM;AACP,YAAA,EAAE,SAAArJ,EAAY,IAAA;AAEpB,MAAIA,KAAW,CAACgH,EAAO,IAAI,SAAQ,cACzB,KAAK;AAAA,IAAA;AAyCjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAqC,EAAA,qBAAc,CAAC,EAAE,QAAAF,QAAyB;AAClC,YAAA,EAAE,SAAAnJ,GAAS,SAAAD,EAAY,IAAA;AAI1B,MAAAC,KAAWA,EAAQ,SAASmJ,CAAqB,KAClDA,MAAWpJ,KACVoJ,KAAUpJ,EAAQ,SAASoJ,CAAqB,KAIjD,KAAK,KAAK;AAAA,IACZ;AAQF;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAE,EAAA,+BAAwB,CAAC9B,MAAkB;AACnC,YAAAC,IAASD,IAAME,KAAcC,IAE7B,EAAE,SAAA3H,GAAS,SAAAG,GAAS,KAAAqJ,EAAA,IAAQ,MAC5B,EAAE,SAAAC,EAAY,IAAAtJ,GAEdoE,IAAc,GADF,KAAK,SAASjB,KACEnD,EAA2B;AAG7D,MAAKsJ,EAAQ,SAAS,QAAQ,MACvB,KAAA,UAAU,CAAC,CAACjC,GAEMiC,EAAQ,MAAM,GAAG,EAEzB,QAAQ,CAAMC,MAAA;AAE3B,QAAIA,MAAOC,MACFlC,EAAAzH,GAAS4J,IAAgB,KAAK,UAAU,GACxCnC,EAAAzH,GAAS6J,IAAiB,KAAK,UAAU,GAG3CtF,MACIkD,EAAAzH,GAAS8J,IAAiB,KAAK,UAAU,GAChDrC,EAAOrB,GAAYpG,CAAO,GAAG4H,IAAiB,KAAK,aAAaC,CAAc,MAEvE6B,MAAOK,KAChBtC,EAAOzH,GAAS0J,GAAKnF,IAA4B,KAAK,aAAnB,KAAK,MAAwB,IACvDmF,MAAOM,OACTvC,EAAAzH,GAASiK,IAAc,KAAK,UAAU,GAExC1F,KAAakD,EAAOzH,GAASkK,IAAe,KAAK,UAAU,GAE5DC,MACK1C,EAAAzH,GAAS+J,IAAiB,KAAK,WAAW,IAIjDxF,KAAeiF,KACV/B,EAAA+B,GAAKO,IAAiB,KAAK,UAAU;AAAA,MAC9C,CACD;AAAA,IACH;AAlPM,UAAA,EAAE,SAAA/J,EAAY,IAAA,MACdT,IAAY,KAAK,SAAS+D,GAC1BmB,IAAYlF,IAAYH,IAAgBF,IACxCkL,IAAe7K,IAAY+D,IAAmBnE;AAGpD,IAAAqH,KAAqB,CAAoB6D,MAAsB5D,GAAe4D,GAAMD,CAAY,GAGhG,KAAK,UAAU,IAEf,KAAK,KAAK,GAAG3F,CAAS,IAAI6F,GAAOtK,GAASyE,CAAS,CAAC;AAG9C,UAAA,EAAE,SAAAtE,EAAY,IAAA;AAGhB,IAAG,CAACA,EAAQ,SAASZ,KAAe,CAACA,KAAa,CAACY,EAAQ,YAE7DoK,GAAanH,IAAiB,EAAE,WAAW,GAAI,CAAA,GAI3CiE,GAAarH,GAASuG,EAAS,KAAKhH,KAAa,OAAOY,EAAQ,SAAU,YACzDmH,GAAA,MAAMnH,EAAQ,KAAK,GAInC,KAAA,YAAYuF,GAAoB1F,CAAO,GAC5C,KAAK,eAAe,CAAC,UAAU,OAAO,EAAE;AAAA,MACtC,CAAYwK,MAAArJ,GAAgB,KAAK,WAA0B,UAAU,MAAMqJ;AAAA,IAAA,IAExE,KAAK,YACNpE,GAAY,KAAK,OAAO,EAAE,MAG9BnC,GAAU,IAAI,GAGd,KAAK,sBAAsB,EAAI;AAAA,EAEnC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,OAAO;AACF,WAAAX;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW;AACN,WAAAF;AAAA,EACT;AAAA,EAQA,OAAO;AACL,UAAM,EAAE,SAAAjD,GAAS,SAAAF,GAAS,SAAAD,GAAS,WAAAE,GAAW,cAAA2G,GAAc,IAAA3C,EAAO,IAAA,MAC7D,EAAE,WAAAG,EAAc,IAAAlE,GAChBsK,IAAWrC,EAAM,IAAIpI,GAAS,KAAK,GACnC0K,IAAexK,MAAc2G,IAAe3G,IAAY2G;AAExD,IAAAuB,EAAA,MAAMpI,GAAS,KAAK,GAEtBC,KAAW,CAACwK,KAAY,CAACxD,EAAO,IAAI,KAChCmB,EAAA;AAAA,MACJpI;AAAA,MACA,MAAM;AACJ,cAAM2K,IAAmB1H,EAA+C,WAAWC,EAAY,KAAK,IAAI,CAAC,EAAE;AAC3G,QAAAC,EAAcnD,GAAS2K,CAAgB,GAClCA,EAAiB,qBAEpBC,GAAY3K,GAASyK,CAAY,GAEjC1F,GAAahF,GAAS+G,IAAiB,IAAI7C,CAAE,EAAE,GAE/C,KAAK,OAAO,GACZqE,GAA0B,MAAM,EAAI,GAG/B/C,EAASvF,GAAS4K,EAAS,KAAGtF,EAAStF,GAAS4K,EAAS,GAE1DxG,IAAgCyG,GAAA7K,GAAS,MAAMiI,GAAmB,IAAI,CAAC,OACnD,IAAI;AAAA,MAEhC;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAGN;AAAA,EAIA,OAAO;AACL,UAAM,EAAE,SAAA/H,GAAS,SAAAF,GAAS,SAAAD,EAAA,IAAY,MAChC,EAAE,WAAAqE,GAAW,OAAA0G,EAAU,IAAA5K;AAEvB,IAAAiI,EAAA,MAAMpI,GAAS,IAAI,GAGrBC,KAAWgH,EAAO,IAAI,KAClBmB,EAAA;AAAA,MACJpI;AAAA,MACA,MAAM;AACJ,cAAMgL,IAAmB/H,EAA+C,WAAWC,EAAY,KAAK,IAAI,CAAC,EAAE;AAC3G,QAAAC,EAAcnD,GAASgL,CAAgB,GAElCA,EAAiB,qBACpB,KAAK,OAAO,GACZC,GAAYhL,GAAS4K,EAAS,GAC9BtC,GAA0B,IAAI,GAG1BlE,IAAgCyG,GAAA7K,GAAS,MAAMoI,GAAoB,IAAI,CAAC,OACnD,IAAI;AAAA,MAEjC;AAAA,MACA0C,IAAQ;AAAA,MACR;AAAA,IAAA;AAAA,EAGN;AAAA;AAAA,EAgBA,SAAS;AACD,UAAA,EAAE,SAAAG,EAAY,IAAA;AAEpB,IAAKA,MACH,KAAK,sBAAsB,EAAI,GAC/B,KAAK,UAAU,CAACA;AAAA,EAEpB;AAAA;AAAA,EAGA,UAAU;AACR,UAAM,EAAE,SAAAjL,GAAS,SAAAE,GAAS,SAAA+K,EAAA,IAAY,MAChC,EAAE,WAAA7G,EAAc,IAAAlE;AAEtB,IAAI+K,MACEjL,KAAWgH,EAAO,IAAI,KAAK5C,KAC7B,KAAK,KAAK,GACVyG,GAAqB7K,GAAS,MAAM,KAAK,sBAAuB,CAAA,KAEhE,KAAK,sBAAsB,GAE7B,KAAK,UAAU,CAACiL;AAAA,EAEpB;AAAA;AAAA,EAGA,gBAAgB;AACd,IAAK,KAAK,eACA,QAAQ,IADC,KAAK,OAAO;AAAA,EAEjC;AAAA;AAAA,EAyEA,UAAU;AACF,UAAA,EAAE,SAAAjL,GAAS,SAAAE,EAAY,IAAA,MACvBgL,IAAQ,EAAE,GAAG,MAAM,MAAM,KAAK,QAC9B/D,IAAW,MAAM,WAAW,MAAMD,GAAuBgE,GAAO,MAAM,MAAM,QAAA,CAAS,GAAG,EAAE;AAEhG,IAAIhL,EAAQ,aAAa8G,EAAOkE,CAAK,KACnC,KAAK,QAAQ,QAAQ,GACrB,KAAK,KAAK,GACVL,GAAqB7K,GAAwBmH,CAAQ,KAE5CA;EAEb;AACF;AAvREkC,EADmB3C,GACZ,YAAWN,KAClBiD,EAFmB3C,GAEZ,QAAOD,KACd4C,EAHmB3C,GAGZ,eAAcH,KACrB8C,EAJmB3C,GAIZ,YAAW9G;"} \ No newline at end of file diff --git a/dist/components/tooltip-CHqbXeRf.js b/dist/components/tooltip-CHqbXeRf.js deleted file mode 100644 index b5ad99d6..00000000 --- a/dist/components/tooltip-CHqbXeRf.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";var Et=Object.defineProperty;var bt=(s,i,o)=>i in s?Et(s,i,{enumerable:!0,configurable:!0,writable:!0,value:o}):s[i]=o;var v=(s,i,o)=>bt(s,typeof i!="symbol"?i+"":i,o);const t=require("@thednp/shorty"),O=require("@thednp/event-listener"),Ct=require("./dataBsToggle-Dj-Ng54N.js"),et=require("./showClass-D_Ms1FgG.js"),M=require("./popupContainer-RgdJuCa1.js"),nt=require("./fadeClass-Co6nOzNJ.js"),Tt=require("./base-component-j_bwTL_x.js"),Y="popover",it="Popover",y="tooltip",dt=s=>{const i=s===y,o=i?`${s}-inner`:`${s}-body`,e=i?"":`

`,n=`
`,l=`
`;return`
${e+n+l}
`},ht={top:"top",bottom:"bottom",left:"start",right:"end"},ot=s=>{const i=/\b(top|bottom|start|end)+/,{element:o,tooltip:e,container:n,options:l,arrow:r}=s;if(e){const m={...ht},f=t.isRTL(o);t.setElementStyle(e,{top:"",left:"",right:"",bottom:""});const c=s.name===it,{offsetWidth:d,offsetHeight:h}=e,{clientWidth:b,clientHeight:C,offsetWidth:B}=t.getDocumentElement(o);let{placement:a}=l;const{clientWidth:T,offsetWidth:w}=n,S=t.getElementStyle(n,"position")==="fixed",p=Math.abs(S?T-w:b-B),x=f&&S?p:0,$=b-(f?0:p)-1,{width:g,height:E,left:u,right:gt,top:D}=t.getBoundingClientRect(o,!0),{x:G,y:k}={x:u,y:D};t.setElementStyle(r,{top:"",left:"",right:"",bottom:""});let A=0,I="",L=0,V="",q="",J="",X="";const N=r.offsetWidth||0,H=r.offsetHeight||0,Z=N/2;let _=D-h-H<0,F=D+h+E+H>=C,z=u-d-N=$;const K=["left","right"],tt=["top","bottom"];_=K.includes(a)?D+E/2-h/2-H<0:_,F=K.includes(a)?D+h/2+E/2+H>=C:F,z=tt.includes(a)?u+g/2-d/2=$:j,a=K.includes(a)&&z&&j?"top":a,a=a==="top"&&_?"bottom":a,a=a==="bottom"&&F?"top":a,a=a==="left"&&z?"right":a,a=a==="right"&&j?"left":a,e.className.includes(a)||(e.className=e.className.replace(i,m[a])),K.includes(a)?(a==="left"?L=G-d-(c?N:0):L=G+g+(c?N:0),_&&F?(A=0,I=0,q=D+E/2-H/2):_?(A=k,I="",q=E/2-N):F?(A=k-h+E,I="",q=h-E/2-N):(A=k-h/2+E/2,q=h/2-H/2)):tt.includes(a)&&(a==="top"?A=k-h-(c?H:0):A=k+E+(c?H:0),z?(L=0,J=G+g/2-Z):j?(L="auto",V=0,X=g/2+$-gt-Z):(L=G-d/2+g/2,J=d/2-Z)),t.setElementStyle(e,{top:`${A}px`,bottom:I===""?"":`${I}px`,left:L==="auto"?L:`${L}px`,right:V!==""?`${V}px`:""}),t.isHTMLElement(r)&&(q!==""&&(r.style.top=`${q}px`),J!==""?r.style.left=`${J}px`:X!==""&&(r.style.right=`${X}px`));const vt=t.createCustomEvent(`updated.bs.${t.toLowerCase(s.name)}`);t.dispatchEvent(o,vt)}},st={template:dt(y),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},pt="data-original-title",W="Tooltip",P=(s,i,o)=>{if(t.isString(i)&&i.length){let e=i.trim();t.isFunction(o)&&(e=o(e));const l=new DOMParser().parseFromString(e,"text/html");s.append(...l.body.childNodes)}else t.isHTMLElement(i)?s.append(i):(t.isNodeList(i)||t.isArray(i)&&i.every(t.isNode))&&s.append(...i)},wt=s=>{const i=s.name===W,{id:o,element:e,options:n}=s,{title:l,placement:r,template:m,animation:f,customClass:c,sanitizeFn:d,dismissible:h,content:b,btnClose:C}=n,B=i?y:Y,a={...ht};let T=[],w=[];t.isRTL(e)&&(a.left="end",a.right="start");const Q=`bs-${B}-${a[r]}`;let S;if(t.isHTMLElement(m))S=m;else{const x=t.createElement("div");P(x,m,d),S=x.firstChild}s.tooltip=t.isHTMLElement(S)?S.cloneNode(!0):void 0;const{tooltip:p}=s;if(p){t.setAttribute(p,"id",o),t.setAttribute(p,"role",y);const x=i?`${y}-inner`:`${Y}-body`,$=i?null:t.querySelector(`.${Y}-header`,p),g=t.querySelector(`.${x}`,p);s.arrow=t.querySelector(`.${B}-arrow`,p);const{arrow:E}=s;if(t.isHTMLElement(l))T=[l.cloneNode(!0)];else{const u=t.createElement("div");P(u,l,d),T=[...u.childNodes]}if(t.isHTMLElement(b))w=[b.cloneNode(!0)];else{const u=t.createElement("div");P(u,b,d),w=[...u.childNodes]}if(h)if(l)if(t.isHTMLElement(C))T=[...T,C.cloneNode(!0)];else{const u=t.createElement("div");P(u,C,d),T=[...T,u.firstChild]}else if($&&$.remove(),t.isHTMLElement(C))w=[...w,C.cloneNode(!0)];else{const u=t.createElement("div");P(u,C,d),w=[...w,u.firstChild]}i?l&&g&&P(g,l,d):(l&&$&&P($,T,d),b&&g&&P(g,w,d),s.btn=t.querySelector(".btn-close",p)||void 0),t.addClass(p,"position-fixed"),t.addClass(E,"position-absolute"),t.hasClass(p,B)||t.addClass(p,B),f&&!t.hasClass(p,nt.fadeClass)&&t.addClass(p,nt.fadeClass),c&&!t.hasClass(p,c)&&t.addClass(p,c),t.hasClass(p,Q)||t.addClass(p,Q)}},yt=s=>{const i=["HTML","BODY"],o=[];let{parentNode:e}=s;for(;e&&!i.includes(e.nodeName);)e=t.getParentNode(e),t.isShadowRoot(e)||t.isTableElement(e)||o.push(e);return o.find((n,l)=>t.getElementStyle(n,"position")!=="relative"&&o.slice(l+1).every(r=>t.getElementStyle(r,"position")==="static")?n:null)||t.getDocument(s).body},$t=`[${Ct.dataBsToggle}="${y}"],[data-tip="${y}"]`,mt="title";let lt=s=>t.getInstance(s,W);const Lt=s=>new R(s),Ht=s=>{const{element:i,tooltip:o,container:e,offsetParent:n}=s;t.removeAttribute(i,t.ariaDescribedBy),M.removePopup(o,e===n?e:n)},U=s=>{const{tooltip:i,container:o,offsetParent:e}=s;return i&&M.hasPopup(i,o===e?o:e)},Pt=(s,i)=>{const{element:o}=s;s._toggleEventListeners(),t.hasAttribute(o,pt)&&s.name===W&&ft(s),i&&i()},ut=(s,i)=>{const o=i?O.addListener:O.removeListener,{element:e}=s;o(t.getDocument(e),t.touchstartEvent,s.handleTouch,t.passiveHandler),[t.scrollEvent,t.resizeEvent].forEach(n=>{o(t.getWindow(e),n,s.update,t.passiveHandler)})},at=s=>{const{element:i}=s,o=t.createCustomEvent(`shown.bs.${t.toLowerCase(s.name)}`);ut(s,!0),t.dispatchEvent(i,o),t.Timer.clear(i,"in")},rt=s=>{const{element:i}=s,o=t.createCustomEvent(`hidden.bs.${t.toLowerCase(s.name)}`);ut(s),Ht(s),t.dispatchEvent(i,o),t.Timer.clear(i,"out")},ct=(s,i)=>{const o=i?O.addListener:O.removeListener,{element:e,container:n,offsetParent:l}=s,{offsetHeight:r,scrollHeight:m}=n,f=t.closest(e,`.${M.modalString}`),c=t.closest(e,`.${M.offcanvasString}`),d=t.getWindow(e),b=n===l&&r!==m?n:d;o(b,t.resizeEvent,s.update,t.passiveHandler),o(b,t.scrollEvent,s.update,t.passiveHandler),f&&o(f,`hide.bs.${M.modalString}`,s.handleHide),c&&o(c,`hide.bs.${M.offcanvasString}`,s.handleHide)},ft=(s,i)=>{const o=[pt,mt],{element:e}=s;t.setAttribute(e,o[i?0:1],i||t.getAttribute(e,o[0])||""),t.removeAttribute(e,o[i?1:0])};class R extends Tt.BaseComponent{constructor(o,e){super(o,e);v(this,"handleFocus",()=>t.focus(this.element));v(this,"handleShow",()=>this.show());v(this,"handleHide",()=>this.hide());v(this,"update",()=>{ot(this)});v(this,"toggle",()=>{const{tooltip:o}=this;o&&!U(this)?this.show():this.hide()});v(this,"handleTouch",({target:o})=>{const{tooltip:e,element:n}=this;e&&e.contains(o)||o===n||o&&n.contains(o)||this.hide()});v(this,"_toggleEventListeners",o=>{const e=o?O.addListener:O.removeListener,{element:n,options:l,btn:r}=this,{trigger:m}=l,c=!!(this.name!==W&&l.dismissible);m.includes("manual")||(this.enabled=!!o,m.split(" ").forEach(h=>{h===t.mousehoverEvent?(e(n,t.mousedownEvent,this.handleShow),e(n,t.mouseenterEvent,this.handleShow),c||(e(n,t.mouseleaveEvent,this.handleHide),e(t.getDocument(n),t.touchstartEvent,this.handleTouch,t.passiveHandler))):h===t.mouseclickEvent?e(n,h,c?this.handleShow:this.toggle):h===t.focusEvent&&(e(n,t.focusinEvent,this.handleShow),c||e(n,t.focusoutEvent,this.handleHide),t.isApple&&e(n,t.mouseclickEvent,this.handleFocus)),c&&r&&e(r,t.mouseclickEvent,this.handleHide)}))});const{element:n}=this,l=this.name===W,r=l?y:Y,m=l?W:it;lt=c=>t.getInstance(c,m),this.enabled=!0,this.id=`${r}-${t.getUID(n,r)}`;const{options:f}=this;!f.title&&l||!l&&!f.content||(t.ObjectAssign(st,{titleAttr:""}),t.hasAttribute(n,mt)&&l&&typeof f.title=="string"&&ft(this,f.title),this.container=yt(n),this.offsetParent=["sticky","fixed"].some(c=>t.getElementStyle(this.container,"position")===c)?this.container:t.getDocument(this.element).body,wt(this),this._toggleEventListeners(!0))}get name(){return W}get defaults(){return st}show(){const{options:o,tooltip:e,element:n,container:l,offsetParent:r,id:m}=this,{animation:f}=o,c=t.Timer.get(n,"out"),d=l===r?l:r;t.Timer.clear(n,"out"),e&&!c&&!U(this)&&t.Timer.set(n,()=>{const h=t.createCustomEvent(`show.bs.${t.toLowerCase(this.name)}`);t.dispatchEvent(n,h),h.defaultPrevented||(M.appendPopup(e,d),t.setAttribute(n,t.ariaDescribedBy,`#${m}`),this.update(),ct(this,!0),t.hasClass(e,et.showClass)||t.addClass(e,et.showClass),f?t.emulateTransitionEnd(e,()=>at(this)):at(this))},17,"in")}hide(){const{options:o,tooltip:e,element:n}=this,{animation:l,delay:r}=o;t.Timer.clear(n,"in"),e&&U(this)&&t.Timer.set(n,()=>{const m=t.createCustomEvent(`hide.bs.${t.toLowerCase(this.name)}`);t.dispatchEvent(n,m),m.defaultPrevented||(this.update(),t.removeClass(e,et.showClass),ct(this),l?t.emulateTransitionEnd(e,()=>rt(this)):rt(this))},r+17,"out")}enable(){const{enabled:o}=this;o||(this._toggleEventListeners(!0),this.enabled=!o)}disable(){const{tooltip:o,options:e,enabled:n}=this,{animation:l}=e;n&&(o&&U(this)&&l?(this.hide(),t.emulateTransitionEnd(o,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!n)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:o,options:e}=this,n={...this,name:this.name},l=()=>setTimeout(()=>Pt(n,()=>super.dispose()),17);e.animation&&U(n)?(this.options.delay=0,this.hide(),t.emulateTransitionEnd(o,l)):l()}}v(R,"selector",$t),v(R,"init",Lt),v(R,"getInstance",lt),v(R,"styleTip",ot);exports.Tooltip=R;exports.getTipTemplate=dt;exports.popoverComponent=it;exports.popoverString=Y;exports.styleTip=ot;exports.tooltipDefaults=st; -//# sourceMappingURL=tooltip-CHqbXeRf.js.map diff --git a/dist/components/tooltip-CHqbXeRf.js.map b/dist/components/tooltip-CHqbXeRf.js.map deleted file mode 100644 index 6a085d7a..00000000 --- a/dist/components/tooltip-CHqbXeRf.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tooltip-CHqbXeRf.js","sources":["../../src/strings/popoverString.ts","../../src/strings/popoverComponent.ts","../../src/strings/tooltipString.ts","../../src/util/getTipTemplate.ts","../../src/util/tipClassPositions.ts","../../src/util/styleTip.ts","../../src/util/tooltipDefaults.ts","../../src/strings/dataOriginalTitle.ts","../../src/strings/tooltipComponent.ts","../../src/util/setHtml.ts","../../src/util/createTip.ts","../../src/util/getElementContainer.ts","../../src/components/tooltip.ts"],"sourcesContent":["/** @type {string} */\nconst popoverString = 'popover';\nexport default popoverString;\n","/** @type {string} */\nconst popoverComponent = 'Popover';\nexport default popoverComponent;\n","/** @type {string} */\nconst tooltipString = 'tooltip';\nexport default tooltipString;\n","import tooltipString from '../strings/tooltipString';\n\n/**\n * Returns a template for Popover / Tooltip.\n *\n * @param tipType the expected markup type\n * @returns the template markup\n */\nconst getTipTemplate = (tipType: string) => {\n const isTooltip = tipType === tooltipString;\n const bodyClass = isTooltip ? `${tipType}-inner` : `${tipType}-body`;\n const header = !isTooltip ? `

` : '';\n const arrow = `
`;\n const body = `
`;\n return `
${header + arrow + body}
`;\n};\n\nexport default getTipTemplate;\n","const tipClassPositions = {\n top: 'top',\n bottom: 'bottom',\n left: 'start',\n right: 'end',\n};\n\nexport default tipClassPositions;\n","import {\n isHTMLElement,\n setElementStyle,\n getDocumentElement,\n getBoundingClientRect,\n getElementStyle,\n isRTL,\n toLowerCase,\n createCustomEvent,\n dispatchEvent,\n} from '@thednp/shorty';\n\nimport popoverComponent from '../strings/popoverComponent';\nimport tipClassPositions from './tipClassPositions';\nimport Tooltip from '../components/tooltip';\nimport type { TooltipEvent } from '../interface/tooltip';\nimport type { PopoverEvent } from '../interface/popover';\n\n/**\n * Style popovers and tooltips.\n *\n * @param self the `Popover` / `Tooltip` instance\n */\nconst styleTip = (self: T) => {\n const tipClasses = /\\b(top|bottom|start|end)+/;\n const { element, tooltip, container, options, arrow } = self;\n\n /* istanbul ignore else */\n if (tooltip) {\n const tipPositions = { ...tipClassPositions };\n const RTL = isRTL(element);\n\n // reset tooltip style (top: 0, left: 0 works best)\n setElementStyle(tooltip, {\n // top: '0px', left: '0px', right: '', bottom: '',\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n const isPopover = self.name === popoverComponent;\n const { offsetWidth: tipWidth, offsetHeight: tipHeight } = tooltip;\n const { clientWidth: htmlcw, clientHeight: htmlch, offsetWidth: htmlow } = getDocumentElement(element);\n let { placement } = options;\n const { clientWidth: parentCWidth, offsetWidth: parentOWidth } = container as HTMLElement;\n const parentPosition = getElementStyle(container as HTMLElement, 'position');\n const fixedParent = parentPosition === 'fixed';\n const scrollbarWidth = fixedParent ? Math.abs(parentCWidth - parentOWidth) : Math.abs(htmlcw - htmlow);\n const leftBoundry = RTL && fixedParent ? /* istanbul ignore next */ scrollbarWidth : 0;\n const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1;\n const {\n width: elemWidth,\n height: elemHeight,\n left: elemRectLeft,\n right: elemRectRight,\n top: elemRectTop,\n } = getBoundingClientRect(element, true);\n const { x, y } = {\n x: elemRectLeft,\n y: elemRectTop,\n };\n // reset arrow style\n setElementStyle(arrow as HTMLElement, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n let topPosition: number | string = 0;\n let bottomPosition: number | string = '';\n let leftPosition: number | string = 0;\n let rightPosition: number | string = '';\n let arrowTop: number | string = '';\n let arrowLeft: number | string = '';\n let arrowRight: number | string = '';\n\n const arrowWidth = (arrow as HTMLElement).offsetWidth || 0;\n const arrowHeight = (arrow as HTMLElement).offsetHeight || 0;\n const arrowAdjust = arrowWidth / 2;\n\n // check placement\n let topExceed = elemRectTop - tipHeight - arrowHeight < 0;\n let bottomExceed = elemRectTop + tipHeight + elemHeight + arrowHeight >= htmlch;\n let leftExceed = elemRectLeft - tipWidth - arrowWidth < leftBoundry;\n let rightExceed = elemRectLeft + tipWidth + elemWidth + arrowWidth >= rightBoundry;\n\n const horizontals = ['left', 'right'];\n const verticals = ['top', 'bottom'];\n\n topExceed = horizontals.includes(placement)\n ? elemRectTop + elemHeight / 2 - tipHeight / 2 - arrowHeight < 0\n : topExceed;\n bottomExceed = horizontals.includes(placement)\n ? elemRectTop + tipHeight / 2 + elemHeight / 2 + arrowHeight >= htmlch\n : bottomExceed;\n leftExceed = verticals.includes(placement) ? elemRectLeft + elemWidth / 2 - tipWidth / 2 < leftBoundry : leftExceed;\n rightExceed = verticals.includes(placement)\n ? elemRectLeft + tipWidth / 2 + elemWidth / 2 >= rightBoundry\n : rightExceed;\n\n // first remove side positions if both left and right limits are exceeded\n // we usually fall back to top|bottom\n placement = horizontals.includes(placement) && leftExceed && rightExceed ? 'top' : placement;\n // recompute placement\n placement = placement === 'top' && topExceed ? 'bottom' : placement;\n placement = placement === 'bottom' && bottomExceed ? 'top' : placement;\n placement = placement === 'left' && leftExceed ? 'right' : placement;\n placement = placement === 'right' && rightExceed ? /* istanbul ignore next */ 'left' : placement;\n\n // update tooltip/popover class\n if (!tooltip.className.includes(placement)) {\n tooltip.className = tooltip.className.replace(tipClasses, tipPositions[placement]);\n }\n\n // compute tooltip / popover coordinates\n /* istanbul ignore else */\n if (horizontals.includes(placement)) {\n // secondary|side positions\n if (placement === 'left') {\n // LEFT\n leftPosition = x - tipWidth - (isPopover ? arrowWidth : 0);\n } else {\n // RIGHT\n leftPosition = x + elemWidth + (isPopover ? arrowWidth : 0);\n }\n\n // adjust top and arrow\n if (topExceed && bottomExceed) {\n topPosition = 0;\n bottomPosition = 0;\n arrowTop = elemRectTop + elemHeight / 2 - arrowHeight / 2;\n } else if (topExceed) {\n topPosition = y;\n bottomPosition = '';\n arrowTop = elemHeight / 2 - arrowWidth;\n } else if (bottomExceed) {\n topPosition = y - tipHeight + elemHeight;\n bottomPosition = '';\n arrowTop = tipHeight - elemHeight / 2 - arrowWidth;\n } else {\n topPosition = y - tipHeight / 2 + elemHeight / 2;\n arrowTop = tipHeight / 2 - arrowHeight / 2;\n }\n } else if (verticals.includes(placement)) {\n if (placement === 'top') {\n topPosition = y - tipHeight - (isPopover ? arrowHeight : 0);\n } else {\n // BOTTOM\n topPosition = y + elemHeight + (isPopover ? arrowHeight : 0);\n }\n\n // adjust left | right and also the arrow\n if (leftExceed) {\n leftPosition = 0;\n arrowLeft = x + elemWidth / 2 - arrowAdjust;\n } else if (rightExceed) {\n leftPosition = 'auto';\n rightPosition = 0;\n arrowRight = elemWidth / 2 + rightBoundry - elemRectRight - arrowAdjust;\n } else {\n leftPosition = x - tipWidth / 2 + elemWidth / 2;\n arrowLeft = tipWidth / 2 - arrowAdjust;\n }\n }\n\n // apply style to tooltip/popover\n setElementStyle(tooltip, {\n top: `${topPosition}px`,\n bottom: bottomPosition === '' ? '' : `${bottomPosition}px`,\n left: leftPosition === 'auto' ? leftPosition : `${leftPosition}px`,\n right: rightPosition !== '' ? `${rightPosition}px` : '',\n });\n\n // update arrow placement\n /* istanbul ignore else */\n if (isHTMLElement(arrow)) {\n if (arrowTop !== '') {\n arrow.style.top = `${arrowTop}px`;\n }\n if (arrowLeft !== '') {\n arrow.style.left = `${arrowLeft}px`;\n } else if (arrowRight !== '') {\n arrow.style.right = `${arrowRight}px`;\n }\n }\n const updatedTooltipEvent = createCustomEvent(`updated.bs.${toLowerCase(self.name)}`);\n dispatchEvent(element, updatedTooltipEvent);\n }\n};\n\nexport default styleTip;\n","import getTipTemplate from './getTipTemplate';\nimport tooltipString from '../strings/tooltipString';\nimport { TooltipOptions } from '../interface/tooltip';\n\nconst tooltipDefaults: TooltipOptions = {\n template: getTipTemplate(tooltipString),\n title: '',\n customClass: '',\n trigger: 'hover focus',\n placement: 'top',\n sanitizeFn: undefined,\n animation: true,\n delay: 200,\n container: document.body,\n content: '',\n dismissible: false,\n btnClose: '',\n};\nexport default tooltipDefaults;\n","/**\n * Global namespace for `data-bs-title` attribute.\n */\nconst dataOriginalTitle = 'data-original-title';\nexport default dataOriginalTitle;\n","/** @type {string} */\nconst tooltipComponent = 'Tooltip';\nexport default tooltipComponent;\n","import { isNode, isArray, isFunction, isString, isNodeList, isHTMLElement } from '@thednp/shorty';\n\n/**\n * Append an existing `Element` to Popover / Tooltip component or HTML\n * markup string to be parsed & sanitized to be used as popover / tooltip content.\n *\n * @param element target\n * @param content the `Element` to append / string\n * @param sanitizeFn a function to sanitize string content\n */\nconst setHtml = (element: HTMLElement, content: Node[] | Node | string, sanitizeFn?: (s: string) => string) => {\n /* istanbul ignore else */\n if (isString(content) && content.length) {\n let dirty = content.trim(); // fixing #233\n if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty);\n\n const domParser = new DOMParser();\n const tempDocument = domParser.parseFromString(dirty, 'text/html');\n element.append(...[...tempDocument.body.childNodes]);\n } else if (isHTMLElement(content)) {\n element.append(content);\n } else if (isNodeList(content) || (isArray(content) && content.every(isNode))) {\n element.append(...[...content]);\n }\n};\nexport default setHtml;\n","import { createElement, addClass, hasClass, setAttribute, querySelector, isRTL, isHTMLElement } from '@thednp/shorty';\n\nimport tooltipComponent from '../strings/tooltipComponent';\nimport tooltipString from '../strings/tooltipString';\nimport popoverString from '../strings/popoverString';\nimport fadeClass from '../strings/fadeClass';\nimport tipClassPositions from './tipClassPositions';\nimport setHtml from './setHtml';\nimport Tooltip from '../components/tooltip';\nimport Popover from '../components/popover';\n\n/**\n * Creates a new tooltip / popover.\n *\n * @param self the `Tooltip` / `Popover` instance\n */\nconst createTip = (self: Tooltip | Popover) => {\n const isTooltip = self.name === tooltipComponent;\n\n const { id, element, options } = self;\n const { title, placement, template, animation, customClass, sanitizeFn, dismissible, content, btnClose } = options;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipPositions = { ...tipClassPositions };\n let titleParts: Node[] = [];\n let contentParts: Node[] = [];\n\n if (isRTL(element)) {\n tipPositions.left = 'end';\n tipPositions.right = 'start';\n }\n\n // set initial popover class\n const placementClass = `bs-${tipString}-${tipPositions[placement]}`;\n\n // load template\n let tooltipTemplate: Node | string;\n if (isHTMLElement(template)) {\n tooltipTemplate = template;\n } else {\n const htmlMarkup = createElement('div') as HTMLElement;\n setHtml(htmlMarkup, template, sanitizeFn);\n tooltipTemplate = htmlMarkup.firstChild as HTMLElement;\n }\n\n // set popover markup\n self.tooltip = isHTMLElement(tooltipTemplate)\n ? (tooltipTemplate.cloneNode(true) as HTMLElement)\n : /* istanbul ignore next */ undefined;\n\n const { tooltip } = self;\n /* istanbul ignore else */\n if (tooltip) {\n // set id and role attributes\n setAttribute(tooltip, 'id', id);\n setAttribute(tooltip, 'role', tooltipString);\n\n const bodyClass = isTooltip ? `${tooltipString}-inner` : `${popoverString}-body`;\n const tooltipHeader = isTooltip ? null : querySelector(`.${popoverString}-header`, tooltip);\n const tooltipBody = querySelector(`.${bodyClass}`, tooltip);\n\n // set arrow and enable access for styleTip\n self.arrow = querySelector(`.${tipString}-arrow`, tooltip) as HTMLElement;\n const { arrow } = self;\n\n if (isHTMLElement(title)) titleParts = [title.cloneNode(true)];\n else {\n const tempTitle = createElement('div') as HTMLElement;\n setHtml(tempTitle, title, sanitizeFn);\n titleParts = [...[...tempTitle.childNodes]];\n }\n\n if (isHTMLElement(content)) contentParts = [content.cloneNode(true)];\n else {\n const tempContent = createElement('div') as HTMLElement;\n setHtml(tempContent, content, sanitizeFn);\n contentParts = [...[...tempContent.childNodes]];\n }\n\n // set dismissible button\n if (dismissible) {\n if (title) {\n if (isHTMLElement(btnClose)) titleParts = [...titleParts, btnClose.cloneNode(true)];\n else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n titleParts = [...titleParts, tempBtn.firstChild as Node];\n }\n } else {\n /* istanbul ignore else */\n if (tooltipHeader) tooltipHeader.remove();\n if (isHTMLElement(btnClose)) contentParts = [...contentParts, btnClose.cloneNode(true)];\n else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n contentParts = [...contentParts, tempBtn.firstChild as Node];\n }\n }\n }\n\n // fill the template with content from options / data attributes\n // also sanitize title && content\n /* istanbul ignore else */\n if (!isTooltip) {\n /* istanbul ignore else */\n if (title && tooltipHeader) setHtml(tooltipHeader, titleParts, sanitizeFn);\n /* istanbul ignore else */\n if (content && tooltipBody) setHtml(tooltipBody, contentParts, sanitizeFn);\n // set btn\n self.btn = querySelector('.btn-close', tooltip) || undefined;\n } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn);\n\n // Bootstrap 5.2.x\n // addClass(tooltip, 'position-absolute');\n addClass(tooltip, 'position-fixed');\n addClass(arrow, 'position-absolute');\n\n // set popover animation and placement\n /* istanbul ignore else */\n if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString);\n /* istanbul ignore else */\n if (animation && !hasClass(tooltip, fadeClass)) addClass(tooltip, fadeClass);\n /* istanbul ignore else */\n if (customClass && !hasClass(tooltip, customClass)) {\n addClass(tooltip, customClass);\n }\n /* istanbul ignore else */\n if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass);\n }\n};\n\nexport default createTip;\n","import { getDocument, isShadowRoot, isTableElement, getParentNode, getElementStyle } from '@thednp/shorty';\n\n/**\n * Returns an `HTMLElement` to be used as default value for *options.container*\n * for `Tooltip` / `Popover` components.\n *\n * @see https://github.com/floating-ui/floating-ui\n *\n * @param element the target\n * @returns the query result\n */\nconst getElementContainer = (element: HTMLElement): ParentNode => {\n const majorBlockTags = ['HTML', 'BODY'];\n const containers: ParentNode[] = [];\n let { parentNode } = element as Node;\n\n while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) {\n parentNode = getParentNode(parentNode) as ParentNode;\n /* istanbul ignore else */\n if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) {\n containers.push(parentNode);\n }\n }\n\n return (\n containers.find((c, i) => {\n if (\n getElementStyle(c as HTMLElement, 'position') !== 'relative' &&\n containers.slice(i + 1).every(r => getElementStyle(r as HTMLElement, 'position') === 'static')\n ) {\n return c;\n }\n return null;\n }) || /* istanbul ignore next: optional guard */ getDocument(element).body\n );\n};\n\nexport default getElementContainer;\n","/* Native JavaScript for Bootstrap 5 | Tooltip\n---------------------------------------------- */\nimport {\n ariaDescribedBy,\n focusoutEvent,\n focusinEvent,\n focusEvent,\n mouseleaveEvent,\n mouseenterEvent,\n mousedownEvent,\n mouseclickEvent,\n closest,\n getUID,\n getDocument,\n getWindow,\n removeAttribute,\n getAttribute,\n setAttribute,\n hasAttribute,\n touchstartEvent,\n resizeEvent,\n scrollEvent,\n mousehoverEvent,\n toLowerCase,\n focus,\n Timer,\n emulateTransitionEnd,\n passiveHandler,\n dispatchEvent,\n isApple,\n getInstance,\n ObjectAssign,\n createCustomEvent,\n removeClass,\n hasClass,\n addClass,\n getElementStyle,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport dataOriginalTitle from '../strings/dataOriginalTitle';\nimport showClass from '../strings/showClass';\nimport tooltipString from '../strings/tooltipString';\nimport tooltipComponent from '../strings/tooltipComponent';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\nimport modalString from '../strings/modalString';\nimport offcanvasString from '../strings/offcanvasString';\n\nimport styleTip from '../util/styleTip';\nimport createTip from '../util/createTip';\nimport { appendPopup, removePopup, hasPopup } from '../util/popupContainer';\nimport getElementContainer from '../util/getElementContainer';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport BaseComponent from './base-component';\nimport { TooltipOptions, TooltipEvent } from '../interface/tooltip';\nimport { PopoverOptions, PopoverEvent } from '../interface/popover';\n\n// TOOLTIP PRIVATE GC\n// ==================\nconst tooltipSelector = `[${dataBsToggle}=\"${tooltipString}\"],[data-tip=\"${tooltipString}\"]`;\nconst titleAttr = 'title';\n\n/**\n * Static method which returns an existing `Tooltip` instance associated\n * to a target `Element`.\n *\n */\nlet getTooltipInstance = (element: HTMLElement) => getInstance(element, tooltipComponent);\n\n/**\n * A `Tooltip` initialization callback.\n */\nconst tooltipInitCallback = (element: HTMLElement) => new Tooltip(element);\n\n// TOOLTIP PRIVATE METHODS\n// =======================\n/**\n * Removes the tooltip from the DOM.\n *\n * @param self the `Tooltip` instance\n */\nconst removeTooltip = (self: Tooltip) => {\n const { element, tooltip, container, offsetParent } = self;\n removeAttribute(element, ariaDescribedBy);\n removePopup(tooltip as HTMLElement, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Check if container contains the tooltip.\n *\n * @param self Tooltip\n */\nconst hasTip = (self: Tooltip): boolean | undefined => {\n const { tooltip, container, offsetParent } = self;\n\n return tooltip && hasPopup(tooltip, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Executes after the instance has been disposed.\n *\n * @param self the `Tooltip` instance\n * @param callback the parent dispose callback\n */\nconst disposeTooltipComplete = (self: Tooltip, callback?: () => void) => {\n const { element } = self;\n self._toggleEventListeners();\n\n /* istanbul ignore else */\n if (hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent) {\n toggleTooltipTitle(self);\n }\n /* istanbul ignore else */\n if (callback) callback();\n};\n\n/**\n * Toggles on/off the special `Tooltip` event listeners.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipAction = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n\n action(getDocument(element), touchstartEvent, self.handleTouch, passiveHandler);\n\n [scrollEvent, resizeEvent].forEach(ev => {\n action(getWindow(element), ev, self.update, passiveHandler);\n });\n};\n\n/**\n * Executes after the tooltip was shown to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipShownAction = (self: Tooltip) => {\n const { element } = self;\n const shownTooltipEvent = createCustomEvent(`shown.bs.${toLowerCase(self.name)}`);\n\n toggleTooltipAction(self, true);\n dispatchEvent(element, shownTooltipEvent);\n Timer.clear(element, 'in');\n};\n\n/**\n * Executes after the tooltip was hidden to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipHiddenAction = (self: Tooltip) => {\n const { element } = self;\n const hiddenTooltipEvent = createCustomEvent(`hidden.bs.${toLowerCase(self.name)}`);\n\n toggleTooltipAction(self);\n removeTooltip(self);\n dispatchEvent(element, hiddenTooltipEvent);\n\n Timer.clear(element, 'out');\n};\n\n/**\n * Toggles on/off the `Tooltip` event listeners that hide/update the tooltip.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, container, offsetParent } = self;\n const { offsetHeight, scrollHeight } = container as HTMLElement;\n const parentModal = closest(element, `.${modalString}`);\n const parentOffcanvas = closest(element, `.${offcanvasString}`);\n\n /* istanbul ignore else */\n const win = getWindow(element);\n const overflow = offsetHeight !== scrollHeight;\n const scrollTarget = container === offsetParent && overflow ? container : win;\n action(scrollTarget, resizeEvent, self.update, passiveHandler);\n action(scrollTarget, scrollEvent, self.update, passiveHandler);\n\n // dismiss tooltips inside modal / offcanvas\n if (parentModal) action(parentModal, `hide.bs.${modalString}`, self.handleHide);\n if (parentOffcanvas) action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide);\n};\n\n/**\n * Toggles the `title` and `data-original-title` attributes.\n *\n * @param self the `Tooltip` instance\n * @param content when `true`, event listeners are added\n */\nconst toggleTooltipTitle = (self: Tooltip, content?: string) => {\n // [0 - add, 1 - remove] | [0 - remove, 1 - add]\n const titleAtt = [dataOriginalTitle, titleAttr];\n const { element } = self;\n\n setAttribute(\n element,\n titleAtt[content ? 0 : 1],\n content || getAttribute(element, titleAtt[0]) || /* istanbul ignore next */ '',\n );\n removeAttribute(element, titleAtt[content ? 1 : 0]);\n};\n\n// TOOLTIP DEFINITION\n// ==================\n/** Creates a new `Tooltip` instance. */\nexport default class Tooltip extends BaseComponent {\n static selector = tooltipSelector;\n static init = tooltipInitCallback;\n static getInstance = getTooltipInstance;\n static styleTip = styleTip;\n declare options: TooltipOptions;\n declare btn?: HTMLElement;\n declare tooltip?: HTMLElement;\n declare container: ParentNode;\n declare arrow?: HTMLElement;\n declare offsetParent?: HTMLElement;\n declare enabled: boolean;\n declare id: string;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n const { element } = this;\n const isTooltip = this.name === tooltipComponent;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipComponent = isTooltip ? tooltipComponent : popoverComponent;\n\n /* istanbul ignore next: this is to set Popover too */\n getTooltipInstance = (elem: HTMLElement) => getInstance(elem, tipComponent);\n\n // additional properties\n this.enabled = true;\n /** Set unique ID for `aria-describedby`. */\n this.id = `${tipString}-${getUID(element, tipString)}`;\n\n // instance options\n const { options } = this;\n\n // invalidate\n if (!((!options.title && isTooltip) || (!isTooltip && !options.content))) {\n // reset default options\n ObjectAssign(tooltipDefaults, { titleAttr: '' });\n\n // set title attributes and add event listeners\n /* istanbul ignore else */\n if (hasAttribute(element, titleAttr) && isTooltip && typeof options.title === 'string') {\n toggleTooltipTitle(this, options.title);\n }\n\n // set containers\n this.container = getElementContainer(element);\n this.offsetParent = ['sticky', 'fixed'].some(\n position => getElementStyle(this.container as HTMLElement, 'position') === position,\n )\n ? (this.container as HTMLElement)\n : getDocument(this.element).body;\n\n // create tooltip here\n createTip(this);\n\n // attach events\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tooltipComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return tooltipDefaults;\n }\n\n // TOOLTIP PUBLIC METHODS\n // ======================\n /** Handles the focus event on iOS. */\n handleFocus = () => focus(this.element);\n /** Shows the tooltip. */\n handleShow = () => this.show();\n show() {\n const { options, tooltip, element, container, offsetParent, id } = this;\n const { animation } = options;\n const outTimer = Timer.get(element, 'out');\n const tipContainer = container === offsetParent ? container : offsetParent;\n\n Timer.clear(element, 'out');\n\n if (tooltip && !outTimer && !hasTip(this)) {\n Timer.set(\n element,\n () => {\n const showTooltipEvent = createCustomEvent(`show.bs.${toLowerCase(this.name)}`);\n dispatchEvent(element, showTooltipEvent);\n if (!showTooltipEvent.defaultPrevented) {\n // append to container\n appendPopup(tooltip, tipContainer);\n\n setAttribute(element, ariaDescribedBy, `#${id}`);\n\n this.update();\n toggleTooltipOpenHandlers(this, true);\n\n /* istanbul ignore else */\n if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass);\n /* istanbul ignore else */\n if (animation) emulateTransitionEnd(tooltip, () => tooltipShownAction(this));\n else tooltipShownAction(this);\n }\n },\n 17,\n 'in',\n );\n }\n }\n\n /** Hides the tooltip. */\n handleHide = () => this.hide();\n hide() {\n const { options, tooltip, element } = this;\n const { animation, delay } = options;\n\n Timer.clear(element, 'in');\n\n /* istanbul ignore else */\n if (tooltip && hasTip(this)) {\n Timer.set(\n element,\n () => {\n const hideTooltipEvent = createCustomEvent(`hide.bs.${toLowerCase(this.name)}`);\n dispatchEvent(element, hideTooltipEvent);\n\n if (!hideTooltipEvent.defaultPrevented) {\n this.update();\n removeClass(tooltip, showClass);\n toggleTooltipOpenHandlers(this);\n\n /* istanbul ignore else */\n if (animation) emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this));\n else tooltipHiddenAction(this);\n }\n },\n delay + 17,\n 'out',\n );\n }\n }\n\n /** Updates the tooltip position. */\n update = () => {\n styleTip(this);\n };\n\n /** Toggles the tooltip visibility. */\n toggle = () => {\n const { tooltip } = this;\n\n if (tooltip && !hasTip(this)) this.show();\n else this.hide();\n };\n\n /** Enables the tooltip. */\n enable() {\n const { enabled } = this;\n /* istanbul ignore else */\n if (!enabled) {\n this._toggleEventListeners(true);\n this.enabled = !enabled;\n }\n }\n\n /** Disables the tooltip. */\n disable() {\n const { tooltip, options, enabled } = this;\n const { animation } = options;\n /* istanbul ignore else */\n if (enabled) {\n if (tooltip && hasTip(this) && animation) {\n this.hide();\n emulateTransitionEnd(tooltip, () => this._toggleEventListeners());\n } else {\n this._toggleEventListeners();\n }\n this.enabled = !enabled;\n }\n }\n\n /** Toggles the `disabled` property. */\n toggleEnabled() {\n if (!this.enabled) this.enable();\n else this.disable();\n }\n\n /**\n * Handles the `touchstart` event listener for `Tooltip`\n *\n * @this {Tooltip}\n * @param {TouchEvent} e the `Event` object\n */\n handleTouch = ({ target }: TouchEvent) => {\n const { tooltip, element } = this;\n\n /* istanbul ignore else */\n if (\n (tooltip && tooltip.contains(target as HTMLElement)) ||\n target === element ||\n (target && element.contains(target as HTMLElement))\n ) {\n // smile for ESLint\n } else {\n this.hide();\n }\n };\n\n /**\n * Toggles on/off the `Tooltip` event listeners.\n *\n * @param add when `true`, event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n // btn is only for dismissible popover\n const { element, options, btn } = this;\n const { trigger } = options;\n const isPopover = this.name !== tooltipComponent;\n const dismissible = isPopover && (options as PopoverOptions).dismissible ? true : false;\n\n /* istanbul ignore else */\n if (!trigger.includes('manual')) {\n this.enabled = !!add;\n\n const triggerOptions = trigger.split(' ');\n\n triggerOptions.forEach(tr => {\n /* istanbul ignore else */\n if (tr === mousehoverEvent) {\n action(element, mousedownEvent, this.handleShow);\n action(element, mouseenterEvent, this.handleShow);\n\n /* istanbul ignore else */\n if (!dismissible) {\n action(element, mouseleaveEvent, this.handleHide);\n action(getDocument(element), touchstartEvent, this.handleTouch, passiveHandler);\n }\n } else if (tr === mouseclickEvent) {\n action(element, tr, !dismissible ? this.toggle : this.handleShow);\n } else if (tr === focusEvent) {\n action(element, focusinEvent, this.handleShow);\n /* istanbul ignore else */\n if (!dismissible) action(element, focusoutEvent, this.handleHide);\n /* istanbul ignore else */\n if (isApple) {\n action(element, mouseclickEvent, this.handleFocus);\n }\n }\n /* istanbul ignore else */\n if (dismissible && btn) {\n action(btn, mouseclickEvent, this.handleHide);\n }\n });\n }\n };\n\n /** Removes the `Tooltip` from the target element. */\n dispose() {\n const { tooltip, options } = this;\n const clone = { ...this, name: this.name };\n const callback = () => setTimeout(() => disposeTooltipComplete(clone, () => super.dispose()), 17);\n\n if (options.animation && hasTip(clone)) {\n this.options.delay = 0; // reset delay\n this.hide();\n emulateTransitionEnd(tooltip as HTMLElement, callback);\n } else {\n callback();\n }\n }\n}\n"],"names":["popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","arrow","body","tipClassPositions","styleTip","self","tipClasses","element","tooltip","container","options","tipPositions","RTL","isRTL","setElementStyle","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","getDocumentElement","placement","parentCWidth","parentOWidth","fixedParent","getElementStyle","scrollbarWidth","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","getBoundingClientRect","x","y","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","topExceed","bottomExceed","leftExceed","rightExceed","horizontals","verticals","isHTMLElement","updatedTooltipEvent","createCustomEvent","toLowerCase","dispatchEvent","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","isString","dirty","isFunction","tempDocument","isNodeList","isArray","isNode","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","createElement","setAttribute","tooltipHeader","querySelector","tooltipBody","tempTitle","tempContent","tempBtn","addClass","hasClass","fadeClass","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","c","i","getDocument","tooltipSelector","dataBsToggle","titleAttr","getTooltipInstance","getInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","removeAttribute","ariaDescribedBy","removePopup","hasTip","hasPopup","disposeTooltipComplete","callback","hasAttribute","toggleTooltipTitle","toggleTooltipAction","add","action","addListener","removeListener","touchstartEvent","passiveHandler","scrollEvent","resizeEvent","ev","getWindow","tooltipShownAction","shownTooltipEvent","Timer","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","scrollHeight","parentModal","closest","modalString","parentOffcanvas","offcanvasString","win","scrollTarget","titleAtt","getAttribute","BaseComponent","target","config","__publicField","focus","btn","trigger","tr","mousehoverEvent","mousedownEvent","mouseenterEvent","mouseleaveEvent","mouseclickEvent","focusEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","ObjectAssign","position","outTimer","tipContainer","showTooltipEvent","appendPopup","showClass","emulateTransitionEnd","delay","hideTooltipEvent","removeClass","enabled","clone"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tooltip-kta4uOnb.js b/dist/components/tooltip-kta4uOnb.js new file mode 100644 index 00000000..50090341 --- /dev/null +++ b/dist/components/tooltip-kta4uOnb.js @@ -0,0 +1,36 @@ +"use strict";var bt=Object.defineProperty;var Et=(o,i,s)=>i in o?bt(o,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):o[i]=s;var v=(o,i,s)=>Et(o,typeof i!="symbol"?i+"":i,s);const t=require("@thednp/shorty"),O=require("@thednp/event-listener"),Ct=require("./dataBsToggle-Dj-Ng54N.js"),et=require("./showClass-D_Ms1FgG.js"),M=require("./popupContainer-DIlSFkzD.js"),nt=require("./fadeClass-Co6nOzNJ.js"),Tt=require("./base-component-DBcDoOjV.js"),Y="popover",it="Popover",y="tooltip",dt=o=>{const i=o===y,s=i?`${o}-inner`:`${o}-body`,e=i?"":`

`,n=`
`,l=`
`;return`
${e+n+l}
`},ht={top:"top",bottom:"bottom",left:"start",right:"end"},ot=o=>{const i=/\b(top|bottom|start|end)+/,{element:s,tooltip:e,container:n,options:l,arrow:r}=o;// istanbul ignore else @preserve +if(e){const m={...ht},f=t.isRTL(s);t.setElementStyle(e,{top:"",left:"",right:"",bottom:""});const c=o.name===it,{offsetWidth:d,offsetHeight:h}=e,{clientWidth:E,clientHeight:C,offsetWidth:B}=t.getDocumentElement(s);let{placement:a}=l;const{clientWidth:T,offsetWidth:w}=n,S=t.getElementStyle(n,"position")==="fixed",p=Math.abs(S?T-w:E-B),x=f&&S?p:0,$=E-(f?0:p)-1,{width:g,height:b,left:u,right:gt,top:D}=t.getBoundingClientRect(s,!0),{x:G,y:k}={x:u,y:D};t.setElementStyle(r,{top:"",left:"",right:"",bottom:""});let A=0,I="",H=0,V="",q="",J="",X="";const N=r.offsetWidth||0,L=r.offsetHeight||0,Z=N/2;let F=D-h-L<0,_=D+h+b+L>=C,z=u-d-N=$;const K=["left","right"],tt=["top","bottom"];F=K.includes(a)?D+b/2-h/2-L<0:F,_=K.includes(a)?D+h/2+b/2+L>=C:_,z=tt.includes(a)?u+g/2-d/2=$:j,a=K.includes(a)&&z&&j?"top":a,a=a==="top"&&F?"bottom":a,a=a==="bottom"&&_?"top":a,a=a==="left"&&z?"right":a,a=a==="right"&&j?"left":a,e.className.includes(a)||(e.className=e.className.replace(i,m[a]));// istanbul ignore else @preserve +K.includes(a)?(a==="left"?H=G-d-(c?N:0):H=G+g+(c?N:0),F&&_?(A=0,I=0,q=D+b/2-L/2):F?(A=k,I="",q=b/2-N):_?(A=k-h+b,I="",q=h-b/2-N):(A=k-h/2+b/2,q=h/2-L/2)):tt.includes(a)&&(a==="top"?A=k-h-(c?L:0):A=k+b+(c?L:0),z?(H=0,J=G+g/2-Z):j?(H="auto",V=0,X=g/2+$-gt-Z):(H=G-d/2+g/2,J=d/2-Z)),t.setElementStyle(e,{top:`${A}px`,bottom:I===""?"":`${I}px`,left:H==="auto"?H:`${H}px`,right:V!==""?`${V}px`:""});// istanbul ignore else @preserve +t.isHTMLElement(r)&&(q!==""&&(r.style.top=`${q}px`),J!==""?r.style.left=`${J}px`:X!==""&&(r.style.right=`${X}px`));const vt=t.createCustomEvent(`updated.bs.${t.toLowerCase(o.name)}`);t.dispatchEvent(s,vt)}},st={template:dt(y),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},pt="data-original-title",W="Tooltip",P=(o,i,s)=>{// istanbul ignore else @preserve +if(t.isString(i)&&i.length){let e=i.trim();t.isFunction(s)&&(e=s(e));const l=new DOMParser().parseFromString(e,"text/html");o.append(...l.body.childNodes)}else t.isHTMLElement(i)?o.append(i):(t.isNodeList(i)||t.isArray(i)&&i.every(t.isNode))&&o.append(...i)},wt=o=>{const i=o.name===W,{id:s,element:e,options:n}=o,{title:l,placement:r,template:m,animation:f,customClass:c,sanitizeFn:d,dismissible:h,content:E,btnClose:C}=n,B=i?y:Y,a={...ht};let T=[],w=[];t.isRTL(e)&&(a.left="end",a.right="start");const Q=`bs-${B}-${a[r]}`;let S;if(t.isHTMLElement(m))S=m;else{const x=t.createElement("div");P(x,m,d),S=x.firstChild}o.tooltip=t.isHTMLElement(S)?S.cloneNode(!0):void 0;const{tooltip:p}=o;// istanbul ignore else @preserve +if(p){t.setAttribute(p,"id",s),t.setAttribute(p,"role",y);const x=i?`${y}-inner`:`${Y}-body`,$=i?null:t.querySelector(`.${Y}-header`,p),g=t.querySelector(`.${x}`,p);o.arrow=t.querySelector(`.${B}-arrow`,p);const{arrow:b}=o;if(t.isHTMLElement(l))T=[l.cloneNode(!0)];else{const u=t.createElement("div");P(u,l,d),T=[...u.childNodes]}if(t.isHTMLElement(E))w=[E.cloneNode(!0)];else{const u=t.createElement("div");P(u,E,d),w=[...u.childNodes]}if(h)if(l)if(t.isHTMLElement(C))T=[...T,C.cloneNode(!0)];else{const u=t.createElement("div");P(u,C,d),T=[...T,u.firstChild]}else{// istanbul ignore else @preserve +if($&&$.remove(),t.isHTMLElement(C))w=[...w,C.cloneNode(!0)];else{const u=t.createElement("div");P(u,C,d),w=[...w,u.firstChild]}}// istanbul ignore else @preserve +if(i)l&&g&&P(g,l,d);else{// istanbul ignore else @preserve +l&&$&&P($,T,d);// istanbul ignore else @preserve +E&&g&&P(g,w,d),o.btn=t.querySelector(".btn-close",p)||void 0}t.addClass(p,"position-fixed"),t.addClass(b,"position-absolute");// istanbul ignore else @preserve +t.hasClass(p,B)||t.addClass(p,B);// istanbul ignore else @preserve +f&&!t.hasClass(p,nt.fadeClass)&&t.addClass(p,nt.fadeClass);// istanbul ignore else @preserve +c&&!t.hasClass(p,c)&&t.addClass(p,c);// istanbul ignore else @preserve +t.hasClass(p,Q)||t.addClass(p,Q)}},yt=o=>{const i=["HTML","BODY"],s=[];let{parentNode:e}=o;for(;e&&!i.includes(e.nodeName);){e=t.getParentNode(e);// istanbul ignore else @preserve +t.isShadowRoot(e)||t.isTableElement(e)||s.push(e)}return s.find((n,l)=>t.getElementStyle(n,"position")!=="relative"&&s.slice(l+1).every(r=>t.getElementStyle(r,"position")==="static")?n:null)||t.getDocument(o).body},$t=`[${Ct.dataBsToggle}="${y}"],[data-tip="${y}"]`,mt="title";let lt=o=>t.getInstance(o,W);const Ht=o=>new R(o),Lt=o=>{const{element:i,tooltip:s,container:e,offsetParent:n}=o;t.removeAttribute(i,t.ariaDescribedBy),M.removePopup(s,e===n?e:n)},U=o=>{const{tooltip:i,container:s,offsetParent:e}=o;return i&&M.hasPopup(i,s===e?s:e)},Pt=(o,i)=>{const{element:s}=o;o._toggleEventListeners();// istanbul ignore else @preserve +t.hasAttribute(s,pt)&&o.name===W&&ft(o);// istanbul ignore else @preserve +i&&i()},ut=(o,i)=>{const s=i?O.addListener:O.removeListener,{element:e}=o;s(t.getDocument(e),t.touchstartEvent,o.handleTouch,t.passiveHandler),[t.scrollEvent,t.resizeEvent].forEach(n=>{s(t.getWindow(e),n,o.update,t.passiveHandler)})},at=o=>{const{element:i}=o,s=t.createCustomEvent(`shown.bs.${t.toLowerCase(o.name)}`);ut(o,!0),t.dispatchEvent(i,s),t.Timer.clear(i,"in")},rt=o=>{const{element:i}=o,s=t.createCustomEvent(`hidden.bs.${t.toLowerCase(o.name)}`);ut(o),Lt(o),t.dispatchEvent(i,s),t.Timer.clear(i,"out")},ct=(o,i)=>{const s=i?O.addListener:O.removeListener,{element:e,container:n,offsetParent:l}=o,{offsetHeight:r,scrollHeight:m}=n,f=t.closest(e,`.${M.modalString}`),c=t.closest(e,`.${M.offcanvasString}`);// istanbul ignore else @preserve +const d=t.getWindow(e),E=n===l&&r!==m?n:d;s(E,t.resizeEvent,o.update,t.passiveHandler),s(E,t.scrollEvent,o.update,t.passiveHandler),f&&s(f,`hide.bs.${M.modalString}`,o.handleHide),c&&s(c,`hide.bs.${M.offcanvasString}`,o.handleHide)},ft=(o,i)=>{const s=[pt,mt],{element:e}=o;t.setAttribute(e,s[i?0:1],i||t.getAttribute(e,s[0])||""),t.removeAttribute(e,s[i?1:0])};class R extends Tt.BaseComponent{constructor(s,e){super(s,e);v(this,"handleFocus",()=>t.focus(this.element));v(this,"handleShow",()=>this.show());v(this,"handleHide",()=>this.hide());v(this,"update",()=>{ot(this)});v(this,"toggle",()=>{const{tooltip:s}=this;s&&!U(this)?this.show():this.hide()});v(this,"handleTouch",({target:s})=>{const{tooltip:e,element:n}=this;// istanbul ignore if @preserve +e&&e.contains(s)||s===n||s&&n.contains(s)||this.hide()});v(this,"_toggleEventListeners",s=>{const e=s?O.addListener:O.removeListener,{element:n,options:l,btn:r}=this,{trigger:m}=l,c=!!(this.name!==W&&l.dismissible);// istanbul ignore else @preserve +m.includes("manual")||(this.enabled=!!s,m.split(" ").forEach(h=>{// istanbul ignore else @preserve +if(h===t.mousehoverEvent){e(n,t.mousedownEvent,this.handleShow),e(n,t.mouseenterEvent,this.handleShow);// istanbul ignore else @preserve +c||(e(n,t.mouseleaveEvent,this.handleHide),e(t.getDocument(n),t.touchstartEvent,this.handleTouch,t.passiveHandler))}else if(h===t.mouseclickEvent)e(n,h,c?this.handleShow:this.toggle);else if(h===t.focusEvent){e(n,t.focusinEvent,this.handleShow);// istanbul ignore else @preserve +c||e(n,t.focusoutEvent,this.handleHide);// istanbul ignore else @preserve +t.isApple&&e(n,t.mouseclickEvent,this.handleFocus)}// istanbul ignore else @preserve +c&&r&&e(r,t.mouseclickEvent,this.handleHide)}))});const{element:n}=this,l=this.name===W,r=l?y:Y,m=l?W:it;// istanbul ignore next @preserve: this is to set Popover too +lt=c=>t.getInstance(c,m),this.enabled=!0,this.id=`${r}-${t.getUID(n,r)}`;const{options:f}=this;if(!(!f.title&&l||!l&&!f.content)){t.ObjectAssign(st,{titleAttr:""});// istanbul ignore else @preserve +t.hasAttribute(n,mt)&&l&&typeof f.title=="string"&&ft(this,f.title),this.container=yt(n),this.offsetParent=["sticky","fixed"].some(c=>t.getElementStyle(this.container,"position")===c)?this.container:t.getDocument(this.element).body,wt(this),this._toggleEventListeners(!0)}}get name(){return W}get defaults(){return st}show(){const{options:s,tooltip:e,element:n,container:l,offsetParent:r,id:m}=this,{animation:f}=s,c=t.Timer.get(n,"out"),d=l===r?l:r;t.Timer.clear(n,"out"),e&&!c&&!U(this)&&t.Timer.set(n,()=>{const h=t.createCustomEvent(`show.bs.${t.toLowerCase(this.name)}`);t.dispatchEvent(n,h);// istanbul ignore else @preserve +if(!h.defaultPrevented){M.appendPopup(e,d),t.setAttribute(n,t.ariaDescribedBy,`#${m}`),this.update(),ct(this,!0);// istanbul ignore else @preserve +t.hasClass(e,et.showClass)||t.addClass(e,et.showClass);// istanbul ignore else @preserve +f?t.emulateTransitionEnd(e,()=>at(this)):at(this)}},17,"in")}hide(){const{options:s,tooltip:e,element:n}=this,{animation:l,delay:r}=s;t.Timer.clear(n,"in");// istanbul ignore else @preserve +e&&U(this)&&t.Timer.set(n,()=>{const m=t.createCustomEvent(`hide.bs.${t.toLowerCase(this.name)}`);t.dispatchEvent(n,m);// istanbul ignore else @preserve +if(!m.defaultPrevented){this.update(),t.removeClass(e,et.showClass),ct(this);// istanbul ignore else @preserve +l?t.emulateTransitionEnd(e,()=>rt(this)):rt(this)}},r+17,"out")}enable(){const{enabled:s}=this;// istanbul ignore else @preserve +s||(this._toggleEventListeners(!0),this.enabled=!s)}disable(){const{tooltip:s,enabled:e}=this;// istanbul ignore else @preserve +e&&(s&&U(this)&&this.hide(),this._toggleEventListeners(),this.enabled=!e)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:s,options:e}=this,n={...this,name:this.name},l=()=>setTimeout(()=>Pt(n,()=>super.dispose()),17);e.animation&&U(n)?(this.options.delay=0,this.hide(),t.emulateTransitionEnd(s,l)):l()}}v(R,"selector",$t),v(R,"init",Ht),v(R,"getInstance",lt),v(R,"styleTip",ot);exports.Tooltip=R;exports.getTipTemplate=dt;exports.popoverComponent=it;exports.popoverString=Y;exports.styleTip=ot;exports.tooltipDefaults=st; +//# sourceMappingURL=tooltip-kta4uOnb.js.map diff --git a/dist/components/tooltip-kta4uOnb.js.map b/dist/components/tooltip-kta4uOnb.js.map new file mode 100644 index 00000000..7449df70 --- /dev/null +++ b/dist/components/tooltip-kta4uOnb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tooltip-kta4uOnb.js","sources":["../../src/strings/popoverString.ts","../../src/strings/popoverComponent.ts","../../src/strings/tooltipString.ts","../../src/util/getTipTemplate.ts","../../src/util/tipClassPositions.ts","../../src/util/styleTip.ts","../../src/util/tooltipDefaults.ts","../../src/strings/dataOriginalTitle.ts","../../src/strings/tooltipComponent.ts","../../src/util/setHtml.ts","../../src/util/createTip.ts","../../src/util/getElementContainer.ts","../../src/components/tooltip.ts"],"sourcesContent":["/** @type {string} */\nconst popoverString = 'popover';\nexport default popoverString;\n","/** @type {string} */\nconst popoverComponent = 'Popover';\nexport default popoverComponent;\n","/** @type {string} */\nconst tooltipString = 'tooltip';\nexport default tooltipString;\n","import tooltipString from '../strings/tooltipString';\n\n/**\n * Returns a template for Popover / Tooltip.\n *\n * @param tipType the expected markup type\n * @returns the template markup\n */\nconst getTipTemplate = (tipType: string) => {\n const isTooltip = tipType === tooltipString;\n const bodyClass = isTooltip ? `${tipType}-inner` : `${tipType}-body`;\n const header = !isTooltip ? `

` : '';\n const arrow = `
`;\n const body = `
`;\n return `
${header + arrow + body}
`;\n};\n\nexport default getTipTemplate;\n","const tipClassPositions = {\n top: 'top',\n bottom: 'bottom',\n left: 'start',\n right: 'end',\n};\n\nexport default tipClassPositions;\n","import {\n createCustomEvent,\n dispatchEvent,\n getBoundingClientRect,\n getDocumentElement,\n getElementStyle,\n isHTMLElement,\n isRTL,\n setElementStyle,\n toLowerCase,\n} from '@thednp/shorty';\n\nimport popoverComponent from '../strings/popoverComponent';\nimport tipClassPositions from './tipClassPositions';\nimport Tooltip from '../components/tooltip';\nimport type { TooltipEvent } from '../interface/tooltip';\nimport type { PopoverEvent } from '../interface/popover';\n\n/**\n * Style popovers and tooltips.\n *\n * @param self the `Popover` / `Tooltip` instance\n */\nconst styleTip = (self: T) => {\n const tipClasses = /\\b(top|bottom|start|end)+/;\n const { element, tooltip, container, options, arrow } = self;\n\n // istanbul ignore else @preserve\n if (tooltip) {\n const tipPositions = { ...tipClassPositions };\n const RTL = isRTL(element);\n\n // reset tooltip style (top: 0, left: 0 works best)\n setElementStyle(tooltip, {\n // top: '0px', left: '0px', right: '', bottom: '',\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n const isPopover = self.name === popoverComponent;\n const { offsetWidth: tipWidth, offsetHeight: tipHeight } = tooltip;\n const { clientWidth: htmlcw, clientHeight: htmlch, offsetWidth: htmlow } = getDocumentElement(element);\n let { placement } = options;\n const { clientWidth: parentCWidth, offsetWidth: parentOWidth } = container as HTMLElement;\n const parentPosition = getElementStyle(container as HTMLElement, 'position');\n const fixedParent = parentPosition === 'fixed';\n const scrollbarWidth = fixedParent ? Math.abs(parentCWidth - parentOWidth) : Math.abs(htmlcw - htmlow);\n const leftBoundry =\n RTL && fixedParent\n ? // istanbul ignore next @preserve\n scrollbarWidth\n : 0;\n const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1;\n const {\n width: elemWidth,\n height: elemHeight,\n left: elemRectLeft,\n right: elemRectRight,\n top: elemRectTop,\n } = getBoundingClientRect(element, true);\n const { x, y } = {\n x: elemRectLeft,\n y: elemRectTop,\n };\n // reset arrow style\n setElementStyle(arrow as HTMLElement, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n });\n let topPosition: number | string = 0;\n let bottomPosition: number | string = '';\n let leftPosition: number | string = 0;\n let rightPosition: number | string = '';\n let arrowTop: number | string = '';\n let arrowLeft: number | string = '';\n let arrowRight: number | string = '';\n\n const arrowWidth = (arrow as HTMLElement).offsetWidth || 0;\n const arrowHeight = (arrow as HTMLElement).offsetHeight || 0;\n const arrowAdjust = arrowWidth / 2;\n\n // check placement\n let topExceed = elemRectTop - tipHeight - arrowHeight < 0;\n let bottomExceed = elemRectTop + tipHeight + elemHeight + arrowHeight >= htmlch;\n let leftExceed = elemRectLeft - tipWidth - arrowWidth < leftBoundry;\n let rightExceed = elemRectLeft + tipWidth + elemWidth + arrowWidth >= rightBoundry;\n\n const horizontals = ['left', 'right'];\n const verticals = ['top', 'bottom'];\n\n topExceed = horizontals.includes(placement)\n ? elemRectTop + elemHeight / 2 - tipHeight / 2 - arrowHeight < 0\n : topExceed;\n bottomExceed = horizontals.includes(placement)\n ? elemRectTop + tipHeight / 2 + elemHeight / 2 + arrowHeight >= htmlch\n : bottomExceed;\n leftExceed = verticals.includes(placement) ? elemRectLeft + elemWidth / 2 - tipWidth / 2 < leftBoundry : leftExceed;\n rightExceed = verticals.includes(placement)\n ? elemRectLeft + tipWidth / 2 + elemWidth / 2 >= rightBoundry\n : rightExceed;\n\n // first remove side positions if both left and right limits are exceeded\n // we usually fall back to top|bottom\n placement = horizontals.includes(placement) && leftExceed && rightExceed ? 'top' : placement;\n // recompute placement\n placement = placement === 'top' && topExceed ? 'bottom' : placement;\n placement = placement === 'bottom' && bottomExceed ? 'top' : placement;\n placement = placement === 'left' && leftExceed ? 'right' : placement;\n placement =\n placement === 'right' && rightExceed\n ? 'left'\n : // istanbul ignore next @preserve\n placement;\n\n // update tooltip/popover class\n if (!tooltip.className.includes(placement)) {\n tooltip.className = tooltip.className.replace(tipClasses, tipPositions[placement]);\n }\n\n // compute tooltip / popover coordinates\n // istanbul ignore else @preserve\n if (horizontals.includes(placement)) {\n // secondary|side positions\n if (placement === 'left') {\n // LEFT\n leftPosition = x - tipWidth - (isPopover ? arrowWidth : 0);\n } else {\n // RIGHT\n leftPosition = x + elemWidth + (isPopover ? arrowWidth : 0);\n }\n\n // adjust top and arrow\n if (topExceed && bottomExceed) {\n topPosition = 0;\n bottomPosition = 0;\n arrowTop = elemRectTop + elemHeight / 2 - arrowHeight / 2;\n } else if (topExceed) {\n topPosition = y;\n bottomPosition = '';\n arrowTop = elemHeight / 2 - arrowWidth;\n } else if (bottomExceed) {\n topPosition = y - tipHeight + elemHeight;\n bottomPosition = '';\n arrowTop = tipHeight - elemHeight / 2 - arrowWidth;\n } else {\n topPosition = y - tipHeight / 2 + elemHeight / 2;\n arrowTop = tipHeight / 2 - arrowHeight / 2;\n }\n } else if (verticals.includes(placement)) {\n if (placement === 'top') {\n topPosition = y - tipHeight - (isPopover ? arrowHeight : 0);\n } else {\n // BOTTOM\n topPosition = y + elemHeight + (isPopover ? arrowHeight : 0);\n }\n\n // adjust left | right and also the arrow\n if (leftExceed) {\n leftPosition = 0;\n arrowLeft = x + elemWidth / 2 - arrowAdjust;\n } else if (rightExceed) {\n leftPosition = 'auto';\n rightPosition = 0;\n arrowRight = elemWidth / 2 + rightBoundry - elemRectRight - arrowAdjust;\n } else {\n leftPosition = x - tipWidth / 2 + elemWidth / 2;\n arrowLeft = tipWidth / 2 - arrowAdjust;\n }\n }\n\n // apply style to tooltip/popover\n setElementStyle(tooltip, {\n top: `${topPosition}px`,\n bottom: bottomPosition === '' ? '' : `${bottomPosition}px`,\n left: leftPosition === 'auto' ? leftPosition : `${leftPosition}px`,\n right: rightPosition !== '' ? `${rightPosition}px` : '',\n });\n\n // update arrow placement\n // istanbul ignore else @preserve\n if (isHTMLElement(arrow)) {\n if (arrowTop !== '') {\n arrow.style.top = `${arrowTop}px`;\n }\n if (arrowLeft !== '') {\n arrow.style.left = `${arrowLeft}px`;\n } else if (arrowRight !== '') {\n arrow.style.right = `${arrowRight}px`;\n }\n }\n const updatedTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `updated.bs.${toLowerCase(self.name)}`,\n );\n dispatchEvent(element, updatedTooltipEvent);\n }\n};\n\nexport default styleTip;\n","import getTipTemplate from './getTipTemplate';\nimport tooltipString from '../strings/tooltipString';\nimport { TooltipOptions } from '../interface/tooltip';\n\nconst tooltipDefaults: TooltipOptions = {\n template: getTipTemplate(tooltipString),\n title: '',\n customClass: '',\n trigger: 'hover focus',\n placement: 'top',\n sanitizeFn: undefined,\n animation: true,\n delay: 200,\n container: document.body,\n content: '',\n dismissible: false,\n btnClose: '',\n};\nexport default tooltipDefaults;\n","/**\n * Global namespace for `data-bs-title` attribute.\n */\nconst dataOriginalTitle = 'data-original-title';\nexport default dataOriginalTitle;\n","/** @type {string} */\nconst tooltipComponent = 'Tooltip';\nexport default tooltipComponent;\n","import { isArray, isFunction, isHTMLElement, isNode, isNodeList, isString } from '@thednp/shorty';\n\n/**\n * Append an existing `Element` to Popover / Tooltip component or HTML\n * markup string to be parsed & sanitized to be used as popover / tooltip content.\n *\n * @param element target\n * @param content the `Element` to append / string\n * @param sanitizeFn a function to sanitize string content\n */\nconst setHtml = (element: HTMLElement, content: Node[] | Node | string, sanitizeFn?: (s: string) => string) => {\n // istanbul ignore else @preserve\n if (isString(content) && content.length) {\n let dirty = content.trim(); // fixing #233\n if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty);\n\n const domParser = new DOMParser();\n const tempDocument = domParser.parseFromString(dirty, 'text/html');\n element.append(...[...tempDocument.body.childNodes]);\n } else if (isHTMLElement(content)) {\n element.append(content);\n } else if (isNodeList(content) || (isArray(content) && content.every(isNode))) {\n element.append(...[...content]);\n }\n};\nexport default setHtml;\n","import { addClass, createElement, hasClass, isHTMLElement, isRTL, querySelector, setAttribute } from '@thednp/shorty';\n\nimport tooltipComponent from '../strings/tooltipComponent';\nimport tooltipString from '../strings/tooltipString';\nimport popoverString from '../strings/popoverString';\nimport fadeClass from '../strings/fadeClass';\nimport tipClassPositions from './tipClassPositions';\nimport setHtml from './setHtml';\nimport Tooltip from '../components/tooltip';\nimport Popover from '../components/popover';\n\n/**\n * Creates a new tooltip / popover.\n *\n * @param self the `Tooltip` / `Popover` instance\n */\nconst createTip = (self: Tooltip | Popover) => {\n const isTooltip = self.name === tooltipComponent;\n\n const { id, element, options } = self;\n const { title, placement, template, animation, customClass, sanitizeFn, dismissible, content, btnClose } = options;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipPositions = { ...tipClassPositions };\n let titleParts: Node[] = [];\n let contentParts: Node[] = [];\n\n if (isRTL(element)) {\n tipPositions.left = 'end';\n tipPositions.right = 'start';\n }\n\n // set initial popover class\n const placementClass = `bs-${tipString}-${tipPositions[placement]}`;\n\n // load template\n let tooltipTemplate: Node | string;\n if (isHTMLElement(template)) {\n tooltipTemplate = template;\n } else {\n const htmlMarkup = createElement('div') as HTMLElement;\n setHtml(htmlMarkup, template, sanitizeFn);\n tooltipTemplate = htmlMarkup.firstChild as HTMLElement;\n }\n\n // set popover markup\n self.tooltip = isHTMLElement(tooltipTemplate)\n ? (tooltipTemplate.cloneNode(true) as HTMLElement)\n : // istanbul ignore next @preserve\n undefined;\n\n const { tooltip } = self;\n // istanbul ignore else @preserve\n if (tooltip) {\n // set id and role attributes\n setAttribute(tooltip, 'id', id);\n setAttribute(tooltip, 'role', tooltipString);\n\n const bodyClass = isTooltip ? `${tooltipString}-inner` : `${popoverString}-body`;\n const tooltipHeader = isTooltip ? null : querySelector(`.${popoverString}-header`, tooltip);\n const tooltipBody = querySelector(`.${bodyClass}`, tooltip);\n\n // set arrow and enable access for styleTip\n self.arrow = querySelector(`.${tipString}-arrow`, tooltip) as HTMLElement;\n const { arrow } = self;\n\n if (isHTMLElement(title)) titleParts = [title.cloneNode(true)];\n else {\n const tempTitle = createElement('div') as HTMLElement;\n setHtml(tempTitle, title, sanitizeFn);\n titleParts = [...[...tempTitle.childNodes]];\n }\n\n if (isHTMLElement(content)) contentParts = [content.cloneNode(true)];\n else {\n const tempContent = createElement('div') as HTMLElement;\n setHtml(tempContent, content, sanitizeFn);\n contentParts = [...[...tempContent.childNodes]];\n }\n\n // set dismissible button\n if (dismissible) {\n if (title) {\n if (isHTMLElement(btnClose)) {\n titleParts = [...titleParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n titleParts = [...titleParts, tempBtn.firstChild as Node];\n }\n } else {\n // istanbul ignore else @preserve\n if (tooltipHeader) tooltipHeader.remove();\n if (isHTMLElement(btnClose)) {\n contentParts = [...contentParts, btnClose.cloneNode(true)];\n } else {\n const tempBtn = createElement('div') as HTMLElement;\n setHtml(tempBtn, btnClose, sanitizeFn);\n contentParts = [...contentParts, tempBtn.firstChild as Node];\n }\n }\n }\n\n // fill the template with content from options / data attributes\n // also sanitize title && content\n // istanbul ignore else @preserve\n if (!isTooltip) {\n // istanbul ignore else @preserve\n if (title && tooltipHeader) {\n setHtml(tooltipHeader, titleParts, sanitizeFn);\n }\n // istanbul ignore else @preserve\n if (content && tooltipBody) {\n setHtml(tooltipBody, contentParts, sanitizeFn);\n }\n // set btn\n self.btn = querySelector('.btn-close', tooltip) || undefined;\n } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn);\n\n // Bootstrap 5.2.x\n // addClass(tooltip, 'position-absolute');\n addClass(tooltip, 'position-fixed');\n addClass(arrow, 'position-absolute');\n\n // set popover animation and placement\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString);\n // istanbul ignore else @preserve\n if (animation && !hasClass(tooltip, fadeClass)) {\n addClass(tooltip, fadeClass);\n }\n // istanbul ignore else @preserve\n if (customClass && !hasClass(tooltip, customClass)) {\n addClass(tooltip, customClass);\n }\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass);\n }\n};\n\nexport default createTip;\n","import { getDocument, getElementStyle, getParentNode, isShadowRoot, isTableElement } from '@thednp/shorty';\n\n/**\n * Returns an `HTMLElement` to be used as default value for *options.container*\n * for `Tooltip` / `Popover` components.\n *\n * @see https://github.com/floating-ui/floating-ui\n *\n * @param element the target\n * @returns the query result\n */\nconst getElementContainer = (element: HTMLElement): ParentNode => {\n const majorBlockTags = ['HTML', 'BODY'];\n const containers: ParentNode[] = [];\n let { parentNode } = element as Node;\n\n while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) {\n parentNode = getParentNode(parentNode) as ParentNode;\n // istanbul ignore else @preserve\n if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) {\n containers.push(parentNode);\n }\n }\n\n return (\n containers.find((c, i) => {\n if (\n getElementStyle(c as HTMLElement, 'position') !== 'relative' &&\n containers.slice(i + 1).every(r => getElementStyle(r as HTMLElement, 'position') === 'static')\n ) {\n return c;\n }\n return null;\n }) ||\n // istanbul ignore next: optional guard\n getDocument(element).body\n );\n};\n\nexport default getElementContainer;\n","/* Native JavaScript for Bootstrap 5 | Tooltip\n---------------------------------------------- */\nimport {\n addClass,\n ariaDescribedBy,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focus,\n focusEvent,\n focusinEvent,\n focusoutEvent,\n getAttribute,\n getDocument,\n getElementStyle,\n getInstance,\n getUID,\n getWindow,\n hasAttribute,\n hasClass,\n isApple,\n mouseclickEvent,\n mousedownEvent,\n mouseenterEvent,\n mousehoverEvent,\n mouseleaveEvent,\n ObjectAssign,\n passiveHandler,\n removeAttribute,\n removeClass,\n resizeEvent,\n scrollEvent,\n setAttribute,\n Timer,\n toLowerCase,\n touchstartEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport dataBsToggle from '../strings/dataBsToggle';\nimport dataOriginalTitle from '../strings/dataOriginalTitle';\nimport showClass from '../strings/showClass';\nimport tooltipString from '../strings/tooltipString';\nimport tooltipComponent from '../strings/tooltipComponent';\nimport popoverString from '../strings/popoverString';\nimport popoverComponent from '../strings/popoverComponent';\nimport modalString from '../strings/modalString';\nimport offcanvasString from '../strings/offcanvasString';\n\nimport styleTip from '../util/styleTip';\nimport createTip from '../util/createTip';\nimport { appendPopup, hasPopup, removePopup } from '../util/popupContainer';\nimport getElementContainer from '../util/getElementContainer';\nimport tooltipDefaults from '../util/tooltipDefaults';\nimport BaseComponent from './base-component';\nimport type { TooltipEvent, TooltipOptions } from '../interface/tooltip';\nimport type { PopoverEvent, PopoverOptions } from '../interface/popover';\n\n// TOOLTIP PRIVATE GC\n// ==================\nconst tooltipSelector = `[${dataBsToggle}=\"${tooltipString}\"],[data-tip=\"${tooltipString}\"]`;\nconst titleAttr = 'title';\n\n/**\n * Static method which returns an existing `Tooltip` instance associated\n * to a target `Element`.\n */\nlet getTooltipInstance = (element: HTMLElement) => getInstance(element, tooltipComponent);\n\n/**\n * A `Tooltip` initialization callback.\n */\nconst tooltipInitCallback = (element: HTMLElement) => new Tooltip(element);\n\n// TOOLTIP PRIVATE METHODS\n// =======================\n/**\n * Removes the tooltip from the DOM.\n *\n * @param self the `Tooltip` instance\n */\nconst removeTooltip = (self: Tooltip) => {\n const { element, tooltip, container, offsetParent } = self;\n removeAttribute(element, ariaDescribedBy);\n removePopup(tooltip as HTMLElement, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Check if container contains the tooltip.\n *\n * @param self Tooltip\n */\nconst hasTip = (self: Tooltip): boolean | undefined => {\n const { tooltip, container, offsetParent } = self;\n\n return tooltip && hasPopup(tooltip, container === offsetParent ? container : offsetParent);\n};\n\n/**\n * Executes after the instance has been disposed.\n *\n * @param self the `Tooltip` instance\n * @param callback the parent dispose callback\n */\nconst disposeTooltipComplete = (self: Tooltip, callback?: () => void) => {\n const { element } = self;\n self._toggleEventListeners();\n\n // istanbul ignore else @preserve\n if (hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent) {\n toggleTooltipTitle(self);\n }\n // istanbul ignore else @preserve\n if (callback) callback();\n};\n\n/**\n * Toggles on/off the special `Tooltip` event listeners.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipAction = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element } = self;\n\n action(getDocument(element), touchstartEvent, self.handleTouch, passiveHandler);\n\n [scrollEvent, resizeEvent].forEach(ev => {\n action(getWindow(element), ev, self.update, passiveHandler);\n });\n};\n\n/**\n * Executes after the tooltip was shown to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipShownAction = (self: Tooltip) => {\n const { element } = self;\n const shownTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `shown.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self, true);\n dispatchEvent(element, shownTooltipEvent);\n Timer.clear(element, 'in');\n};\n\n/**\n * Executes after the tooltip was hidden to the user.\n *\n * @param self the `Tooltip` instance\n */\nconst tooltipHiddenAction = (self: Tooltip) => {\n const { element } = self;\n const hiddenTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `hidden.bs.${toLowerCase(self.name)}`,\n );\n\n toggleTooltipAction(self);\n removeTooltip(self);\n dispatchEvent(element, hiddenTooltipEvent);\n\n Timer.clear(element, 'out');\n};\n\n/**\n * Toggles on/off the `Tooltip` event listeners that hide/update the tooltip.\n *\n * @param self the `Tooltip` instance\n * @param add when `true`, event listeners are added\n */\nconst toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, container, offsetParent } = self;\n const { offsetHeight, scrollHeight } = container as HTMLElement;\n const parentModal = closest(element, `.${modalString}`);\n const parentOffcanvas = closest(element, `.${offcanvasString}`);\n\n // istanbul ignore else @preserve\n const win = getWindow(element);\n const overflow = offsetHeight !== scrollHeight;\n const scrollTarget = container === offsetParent && overflow ? container : win;\n action(scrollTarget, resizeEvent, self.update, passiveHandler);\n action(scrollTarget, scrollEvent, self.update, passiveHandler);\n\n // dismiss tooltips inside modal / offcanvas\n if (parentModal) {\n action(parentModal, `hide.bs.${modalString}`, self.handleHide);\n }\n if (parentOffcanvas) {\n action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide);\n }\n};\n\n/**\n * Toggles the `title` and `data-original-title` attributes.\n *\n * @param self the `Tooltip` instance\n * @param content when `true`, event listeners are added\n */\nconst toggleTooltipTitle = (self: Tooltip, content?: string) => {\n // [0 - add, 1 - remove] | [0 - remove, 1 - add]\n const titleAtt = [dataOriginalTitle, titleAttr];\n const { element } = self;\n\n setAttribute(\n element,\n titleAtt[content ? 0 : 1],\n content ||\n getAttribute(element, titleAtt[0]) ||\n // istanbul ignore next @preserve\n '',\n );\n removeAttribute(element, titleAtt[content ? 1 : 0]);\n};\n\n// TOOLTIP DEFINITION\n// ==================\n/** Creates a new `Tooltip` instance. */\nexport default class Tooltip extends BaseComponent {\n static selector = tooltipSelector;\n static init = tooltipInitCallback;\n static getInstance = getTooltipInstance;\n static styleTip = styleTip;\n declare options: TooltipOptions;\n declare btn?: HTMLElement;\n declare tooltip?: HTMLElement;\n declare container: ParentNode;\n declare arrow?: HTMLElement;\n declare offsetParent?: HTMLElement;\n declare enabled: boolean;\n declare id: string;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n const { element } = this;\n const isTooltip = this.name === tooltipComponent;\n const tipString = isTooltip ? tooltipString : popoverString;\n const tipComponent = isTooltip ? tooltipComponent : popoverComponent;\n\n // istanbul ignore next @preserve: this is to set Popover too\n getTooltipInstance = (elem: HTMLElement) => getInstance(elem, tipComponent);\n\n // additional properties\n this.enabled = true;\n /** Set unique ID for `aria-describedby`. */\n this.id = `${tipString}-${getUID(element, tipString)}`;\n\n // instance options\n const { options } = this;\n\n // invalidate\n if (!((!options.title && isTooltip) || (!isTooltip && !options.content))) {\n // reset default options\n ObjectAssign(tooltipDefaults, { titleAttr: '' });\n\n // set title attributes and add event listeners\n // istanbul ignore else @preserve\n if (hasAttribute(element, titleAttr) && isTooltip && typeof options.title === 'string') {\n toggleTooltipTitle(this, options.title);\n }\n\n // set containers\n this.container = getElementContainer(element);\n this.offsetParent = ['sticky', 'fixed'].some(\n position => getElementStyle(this.container as HTMLElement, 'position') === position,\n )\n ? (this.container as HTMLElement)\n : getDocument(this.element).body;\n\n // create tooltip here\n createTip(this);\n\n // attach events\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tooltipComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return tooltipDefaults;\n }\n\n // TOOLTIP PUBLIC METHODS\n // ======================\n /** Handles the focus event on iOS. */\n // istanbul ignore next @preserve - impossible to test without Apple device\n handleFocus = () => focus(this.element);\n /** Shows the tooltip. */\n handleShow = () => this.show();\n show() {\n const { options, tooltip, element, container, offsetParent, id } = this;\n const { animation } = options;\n const outTimer = Timer.get(element, 'out');\n const tipContainer = container === offsetParent ? container : offsetParent;\n\n Timer.clear(element, 'out');\n\n if (tooltip && !outTimer && !hasTip(this)) {\n Timer.set(\n element,\n () => {\n const showTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `show.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, showTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!showTooltipEvent.defaultPrevented) {\n // append to container\n appendPopup(tooltip, tipContainer);\n\n setAttribute(element, ariaDescribedBy, `#${id}`);\n\n this.update();\n toggleTooltipOpenHandlers(this, true);\n\n // istanbul ignore else @preserve\n if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass);\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipShownAction(this));\n } else tooltipShownAction(this);\n }\n },\n 17,\n 'in',\n );\n }\n }\n\n /** Hides the tooltip. */\n handleHide = () => this.hide();\n hide() {\n const { options, tooltip, element } = this;\n const { animation, delay } = options;\n\n Timer.clear(element, 'in');\n\n // istanbul ignore else @preserve\n if (tooltip && hasTip(this)) {\n Timer.set(\n element,\n () => {\n const hideTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>(\n `hide.bs.${toLowerCase(this.name)}`,\n );\n dispatchEvent(element, hideTooltipEvent);\n\n // istanbul ignore else @preserve\n if (!hideTooltipEvent.defaultPrevented) {\n this.update();\n removeClass(tooltip, showClass);\n toggleTooltipOpenHandlers(this);\n\n // istanbul ignore else @preserve\n if (animation) {\n emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this));\n } else tooltipHiddenAction(this);\n }\n },\n delay + 17,\n 'out',\n );\n }\n }\n\n /** Updates the tooltip position. */\n update = () => {\n styleTip(this);\n };\n\n /** Toggles the tooltip visibility. */\n toggle = () => {\n const { tooltip } = this;\n\n if (tooltip && !hasTip(this)) this.show();\n else this.hide();\n };\n\n /** Enables the tooltip. */\n enable() {\n const { enabled } = this;\n // istanbul ignore else @preserve\n if (!enabled) {\n this._toggleEventListeners(true);\n this.enabled = !enabled;\n }\n }\n\n /** Disables the tooltip. */\n disable() {\n const { tooltip, enabled } = this;\n // istanbul ignore else @preserve\n if (enabled) {\n if (tooltip && hasTip(this)) this.hide();\n this._toggleEventListeners();\n this.enabled = !enabled;\n }\n }\n\n /** Toggles the `disabled` property. */\n toggleEnabled() {\n if (!this.enabled) this.enable();\n else this.disable();\n }\n\n /**\n * Handles the `touchstart` event listener for `Tooltip`\n *\n * @this {Tooltip}\n * @param {TouchEvent} e the `Event` object\n */\n handleTouch = ({ target }: TouchEvent) => {\n const { tooltip, element } = this;\n\n // istanbul ignore if @preserve\n if (\n (tooltip && tooltip.contains(target as HTMLElement)) ||\n target === element ||\n (target && element.contains(target as HTMLElement))\n ) {\n // smile for ESLint\n } else {\n this.hide();\n }\n };\n\n /**\n * Toggles on/off the `Tooltip` event listeners.\n *\n * @param add when `true`, event listeners are added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n // btn is only for dismissible popover\n const { element, options, btn } = this;\n const { trigger } = options;\n const isPopover = this.name !== tooltipComponent;\n const dismissible = isPopover && (options as PopoverOptions).dismissible ? true : false;\n\n // istanbul ignore else @preserve\n if (!trigger.includes('manual')) {\n this.enabled = !!add;\n\n const triggerOptions = trigger.split(' ');\n\n triggerOptions.forEach(tr => {\n // istanbul ignore else @preserve\n if (tr === mousehoverEvent) {\n action(element, mousedownEvent, this.handleShow);\n action(element, mouseenterEvent, this.handleShow);\n\n // istanbul ignore else @preserve\n if (!dismissible) {\n action(element, mouseleaveEvent, this.handleHide);\n action(getDocument(element), touchstartEvent, this.handleTouch, passiveHandler);\n }\n } else if (tr === mouseclickEvent) {\n action(element, tr, !dismissible ? this.toggle : this.handleShow);\n } else if (tr === focusEvent) {\n action(element, focusinEvent, this.handleShow);\n // istanbul ignore else @preserve\n if (!dismissible) action(element, focusoutEvent, this.handleHide);\n // istanbul ignore else @preserve\n if (isApple) {\n action(element, mouseclickEvent, this.handleFocus);\n }\n }\n // istanbul ignore else @preserve\n if (dismissible && btn) {\n action(btn, mouseclickEvent, this.handleHide);\n }\n });\n }\n };\n\n /** Removes the `Tooltip` from the target element. */\n dispose() {\n const { tooltip, options } = this;\n const clone = { ...this, name: this.name };\n const callback = () => setTimeout(() => disposeTooltipComplete(clone, () => super.dispose()), 17);\n\n if (options.animation && hasTip(clone)) {\n this.options.delay = 0; // reset delay\n this.hide();\n emulateTransitionEnd(tooltip as HTMLElement, callback);\n } else {\n callback();\n }\n }\n}\n"],"names":["popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","arrow","body","tipClassPositions","styleTip","self","tipClasses","element","tooltip","container","options","tipPositions","RTL","isRTL","setElementStyle","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","getDocumentElement","placement","parentCWidth","parentOWidth","fixedParent","getElementStyle","scrollbarWidth","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","getBoundingClientRect","x","y","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","topExceed","bottomExceed","leftExceed","rightExceed","horizontals","verticals","isHTMLElement","updatedTooltipEvent","createCustomEvent","toLowerCase","dispatchEvent","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","isString","dirty","isFunction","tempDocument","isNodeList","isArray","isNode","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","createElement","setAttribute","tooltipHeader","querySelector","tooltipBody","tempTitle","tempContent","tempBtn","addClass","hasClass","fadeClass","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","c","i","getDocument","tooltipSelector","dataBsToggle","titleAttr","getTooltipInstance","getInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","removeAttribute","ariaDescribedBy","removePopup","hasTip","hasPopup","disposeTooltipComplete","callback","hasAttribute","toggleTooltipTitle","toggleTooltipAction","add","action","addListener","removeListener","touchstartEvent","passiveHandler","scrollEvent","resizeEvent","ev","getWindow","tooltipShownAction","shownTooltipEvent","Timer","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","scrollHeight","parentModal","closest","modalString","parentOffcanvas","offcanvasString","win","scrollTarget","titleAtt","getAttribute","BaseComponent","target","config","__publicField","focus","btn","trigger","tr","mousehoverEvent","mousedownEvent","mouseenterEvent","mouseleaveEvent","mouseclickEvent","focusEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","ObjectAssign","position","outTimer","tipContainer","showTooltipEvent","appendPopup","showClass","emulateTransitionEnd","delay","hideTooltipEvent","removeClass","enabled","clone"],"mappings":"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"} \ No newline at end of file diff --git a/dist/components/tooltip.cjs b/dist/components/tooltip.cjs index 5e2d66b7..f625c61c 100644 --- a/dist/components/tooltip.cjs +++ b/dist/components/tooltip.cjs @@ -1,2 +1,2 @@ -"use strict";require("@thednp/shorty");require("@thednp/event-listener");require("./dataBsToggle-Dj-Ng54N.js");const e=require("./tooltip-CHqbXeRf.js");require("./showClass-D_Ms1FgG.js");require("./popupContainer-RgdJuCa1.js");require("./base-component-j_bwTL_x.js");module.exports=e.Tooltip; +"use strict";require("@thednp/shorty");require("@thednp/event-listener");require("./dataBsToggle-Dj-Ng54N.js");const e=require("./tooltip-kta4uOnb.js");require("./showClass-D_Ms1FgG.js");require("./popupContainer-DIlSFkzD.js");require("./base-component-DBcDoOjV.js");module.exports=e.Tooltip; //# sourceMappingURL=tooltip.cjs.map diff --git a/dist/components/tooltip.mjs b/dist/components/tooltip.mjs index 7c3717d1..e1c194a8 100644 --- a/dist/components/tooltip.mjs +++ b/dist/components/tooltip.mjs @@ -1,10 +1,10 @@ import "@thednp/shorty"; import "@thednp/event-listener"; import "./dataBsToggle-B84TS15h.mjs"; -import { T as f } from "./tooltip-BuF2bDNc.mjs"; +import { T as f } from "./tooltip-B1BCkN2D.mjs"; import "./showClass-C8hdJfjQ.mjs"; -import "./popupContainer-C6AuDE5e.mjs"; -import "./base-component-DvIOojVW.mjs"; +import "./popupContainer-BitC465I.mjs"; +import "./base-component-nXu3wApu.mjs"; export { f as default }; diff --git a/docs/assets/js/bootstrap-native.js b/docs/assets/js/bootstrap-native.js index efe8ec72..d9300832 100644 --- a/docs/assets/js/bootstrap-native.js +++ b/docs/assets/js/bootstrap-native.js @@ -1,2 +1,186 @@ -var BSN=function(H){"use strict";var Vc=Object.defineProperty;var Kc=(H,it,lt)=>it in H?Vc(H,it,{enumerable:!0,configurable:!0,writable:!0,value:lt}):H[it]=lt;var d=(H,it,lt)=>Kc(H,typeof it!="symbol"?it+"":it,lt);const it="aria-describedby",lt="aria-expanded",Se="aria-hidden",He="aria-modal",_s="aria-pressed",Ue="aria-selected",Bo="DOMContentLoaded",qe="focus",Qe="focusin",Bs="focusout",Pe="keydown",Ro="keyup",N="click",Rs="mousedown",Wo="hover",De="mouseenter",Ze="mouseleave",Fo="pointerdown",jo="pointermove",zo="pointerup",xe="resize",Ae="scroll",Ge="touchstart",Vo="dragstart",Je="ArrowDown",ts="ArrowUp",Ws="ArrowLeft",Fs="ArrowRight",es="Escape",Ko="transitionDuration",Xo="transitionDelay",ss="transitionend",js="transitionProperty",Yo=navigator.userAgentData,Le=Yo,{userAgent:Uo}=navigator,Ie=Uo,zs=/iPhone|iPad|iPod|Android/i;Le?Le.brands.some(t=>zs.test(t.brand)):zs.test(Ie);const Vs=/(iPhone|iPod|iPad)/,qo=Le?Le.brands.some(t=>Vs.test(t.brand)):Vs.test(Ie);Ie&&Ie.includes("Firefox");const{head:ke}=document;["webkitPerspective","perspective"].some(t=>t in ke.style);const Qo=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Zo=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},Go=(t,s,e,n)=>{const o=i=>{(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Zo(t,s,o,n))};Qo(t,s,o,n)},le=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});Go(document,Bo,le,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in ke.style),["webkitAnimation","animation"].some(t=>t in ke.style),["webkitTransition","transition"].some(t=>t in ke.style);const ct=(t,s)=>t.getAttribute(s),Ne=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),f=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},h=(t,s)=>t.classList.contains(s),de=t=>t!=null&&typeof t=="object"||!1,A=t=>de(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>A(t)&&t.nodeType===1||!1,jt=new Map,Lt={data:jt,set:(t,s,e)=>{T(t)&&(jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e))},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=Lt.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=Lt.getAllFor(s);!e||!T(t)||(e.delete(t),e.size===0&&jt.delete(s))}},F=(t,s)=>Lt.get(t,s),he=t=>typeof t=="string"||!1,ns=t=>de(t)&&t.constructor.name==="Window"||!1,Ks=t=>A(t)&&t.nodeType===9||!1,E=t=>ns(t)?t.document:Ks(t)?t:A(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(he(t))return E().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},w=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},Jo=t=>{const s=z(t,js),e=z(t,Xo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},zt=t=>{const s=z(t,js),e=z(t,Ko),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},P=(t,s)=>{let e=0;const n=new Event(ss),o=zt(t),i=Jo(t);if(o){const c=a=>{a.target===t&&(s.apply(t,[a]),t.removeEventListener(ss,c),e=1)};t.addEventListener(ss,c),setTimeout(()=>{e||w(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Xs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),Vt=t=>t.toLowerCase(),ti=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},l="title";return Oe(i).forEach(([r,g])=>{const p=typeof r=="string"&&r.includes(n)?r.replace(n,"").replace(/[A-Z]/g,v=>Vt(v)):r;a[p]=Xs(g)}),Oe(o).forEach(([r,g])=>{o[r]=Xs(g)}),Oe(s).forEach(([r,g])=>{r in o?c[r]=o[r]:r in a?c[r]=a[r]:c[r]=r===l?ct(t,l):g}),c},Ys=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});return de(s)&&dt(e,s),e},tt={passive:!0},It=t=>t.offsetHeight,L=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&he(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},os=t=>de(t)&&t.constructor.name==="Map"||!1,ei=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{T(t)&&(n&&n.length?(bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))):bt.set(t,setTimeout(s,e)))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&os(e)?e.get(s)||null:ei(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);s&&s.length&&os(e)?(clearTimeout(e.get(s)),e.delete(s),e.size===0&&bt.delete(t)):(clearTimeout(e),bt.delete(t))}},fe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let l=1,r=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;l=g>0?Math.round(e)/g:1,r=p>0?Math.round(n)/p:1}return{width:e/l,height:n/r,top:o/r,right:i/l,bottom:c/r,left:a/l,x:a/l,y:o/r}},wt=t=>E(t).body,ft=t=>E(t).documentElement,Us=t=>A(t)&&t.constructor.name==="ShadowRoot"||!1,si=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||A(t)&&t.parentNode||Us(t)&&t.host||ft(t);let qs=0,Qs=0;const Kt=new Map,Zs=(t,s)=>{let e=s?qs:Qs;if(s){const n=Zs(t),o=Kt.get(n)||new Map;Kt.has(n)||Kt.set(n,o),os(o)&&!o.has(s)?(o.set(s,e),qs+=1):e=o.get(s)}else{const n=t.id||t;Kt.has(n)?e=Kt.get(n):(Kt.set(n,e),Qs+=1)}return e},Xt=t=>{var s;return t?Ks(t)?t.defaultView:A(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},ni=t=>Array.isArray(t)||!1,Gs=t=>{if(!A(t))return!1;const{top:s,bottom:e}=fe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},oi=t=>typeof t=="function"||!1,ii=t=>de(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",ci=t=>A(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,D=(t,s)=>T(t)?t:(A(s)?s:E()).querySelector(t),is=(t,s)=>(A(s)?s:E()).getElementsByTagName(t),et=(t,s)=>(A(s)?s:E()).querySelectorAll(t),gt=(t,s)=>(s&&A(s)?s:E()).getElementsByClassName(t),Js=(t,s)=>t.matches(s),Yt={},tn=t=>{const{type:s,currentTarget:e}=t;[...Yt[s]].forEach(([n,o])=>{e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{Yt[s]||(Yt[s]=new Map);const o=Yt[s];o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n),c||t.addEventListener(s,tn,n)},B=(t,s,e,n)=>{const o=Yt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;i&&i.has(e)&&i.delete(e),o&&(!i||!i.size)&&o.delete(t),(!o||!o.size)&&delete Yt[s],(!i||!i.size)&&t.removeEventListener(s,tn,a)},W="fade",m="show",Me="data-bs-dismiss",_e="alert",en="Alert",ai="5.0.14";class st{constructor(s,e){d(this,"_toggleEventListeners",()=>{});const n=D(s);if(!n)throw he(s)?Error(`${this.name} Error: "${s}" is not a valid selector.`):Error(`${this.name} Error: your target is not an instance of HTMLElement.`);const o=Lt.get(n,this.name);o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Ys(this.defaults).length?ti(n,this.defaults,e||{},"bs"):{},Lt.set(n,this.name,this)}get version(){return ai}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){Lt.remove(this.element,this.name),Ys(this).forEach(s=>{delete this[s]})}}const ri=`.${_e}`,li=`[${Me}="${_e}"]`,di=t=>F(t,en),hi=t=>new Ut(t),sn=$(`close.bs.${_e}`),fi=$(`closed.bs.${_e}`),nn=t=>{const{element:s}=t;w(s,fi),t._toggleEventListeners(),t.dispose(),s.remove()};class Ut extends st{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;e&&h(e,m)&&(w(e,sn),sn.defaultPrevented||(b(e,m),h(e,W)?P(e,()=>nn(this)):nn(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;o&&n(o,N,i)});this.dismiss=D(li,this.element),this._toggleEventListeners(!0)}get name(){return en}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",ri),d(Ut,"init",hi),d(Ut,"getInstance",di);const C="active",at="data-bs-toggle",gi="button",on="Button",pi=`[${at}="${gi}"]`,ui=t=>F(t,on),mi=t=>new qt(t);class qt extends st{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!h(n,"disabled")&&!ct(n,"disabled")&&((o?b:f)(n,C),O(n,_s,o?"false":"true"),this.isActive=h(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=h(n,C),O(n,_s,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return on}dispose(){this._toggleEventListeners(),super.dispose()}}d(qt,"selector",pi),d(qt,"init",mi),d(qt,"getInstance",ui);const cs="data-bs-target",kt="carousel",cn="Carousel",an="data-bs-parent",vi="data-bs-container",V=t=>{const s=[cs,an,vi,"href"],e=E(t);return s.map(n=>{const o=ct(t,n);return o?n===an?M(t,o):D(o,e):null}).filter(n=>n)[0]},ge=`[data-bs-ride="${kt}"]`,Q=`${kt}-item`,as="data-bs-slide-to",$t="data-bs-slide",Tt="paused",rn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>F(t,cn),bi=t=>new Qt(t);let pe=0,Be=0,rs=0;const ls=$(`slide.bs.${kt}`),ds=$(`slid.bs.${kt}`),ln=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;if(t.isAnimating){const c=fs(t),a=e==="left"?"next":"prev",l=e==="left"?"start":"end";f(o[s],C),b(o[s],`${Q}-${a}`),b(o[s],`${Q}-${l}`),b(o[c],C),b(o[c],`${Q}-${l}`),w(n,ds),u.clear(n,$t),t.cycle&&!E(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function wi(){const t=pt(this);t&&!t.isPaused&&!u.get(this,Tt)&&f(this,Tt)}function Ei(){const t=pt(this);t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function $i(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=+(ct(this,as)||0);this&&!h(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Ti(t){t.preventDefault();const s=M(this,ge)||V(this),e=pt(s);if(e&&!e.isAnimating){const n=ct(this,$t);n==="next"?e.next():n==="prev"&&e.prev()}}const yi=({code:t,target:s})=>{const e=E(s),[n]=[...et(ge,e)].filter(i=>Gs(i)),o=pt(n);if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n);t===(i?Fs:Ws)?o.prev():t===(i?Ws:Fs)&&o.next()}};function dn(t){const{target:s}=t,e=pt(this);e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function Ci(t){const{target:s}=t,e=pt(this);if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;[...n,...o].every(i=>i===s||i.contains(s))||(pe=t.pageX,this.contains(s)&&(e.isTouch=!0,hn(e,!0)))}}const Si=t=>{Be=t.pageX},Hi=t=>{var o;const{target:s}=t,e=E(s),n=[...et(ge,e)].map(i=>pt(i)).find(i=>i.isTouch);if(n){const{element:i,index:c}=n,a=Et(i);rs=t.pageX,n.isTouch=!1,hn(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(pe-rs)>120&&(Bepe&&n.to(c+(a?1:-1))),pe=0,Be=0,rs=0}},hs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C)),t.indicators[s]&&f(e[s],C)},hn=(t,s)=>{const{element:e}=t,n=s?_:B;n(E(e),jo,Si,tt),n(E(e),zo,Hi,tt)},fs=t=>{const{slides:s,element:e}=t,n=D(`.${Q}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class Qt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:l,pause:r,interval:g,keyboard:p}=o,v=e?_:B;r&&g&&(v(n,De,wi),v(n,Ze,Ei)),l&&i.length>2&&(v(n,Fo,Ci,tt),v(n,Ge,dn,{passive:!1}),v(n,Vo,dn,{passive:!1})),c.length&&c.forEach(k=>{k&&v(k,N,Ti)}),a.length&&a.forEach(k=>{v(k,N,$i)}),p&&v(E(n),Pe,yi)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(Q,o);const{slides:i}=this;if(i.length>=2){const c=fs(this),a=[...i].find(g=>Js(g,`.${Q}-next,.${Q}-next`));this.index=c;const l=E(o);this.controls=[...et(`[${$t}]`,o),...et(`[${$t}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=D(`.${kt}-indicators`,o),this.indicators=[...this.indicator?et(`[${as}]`,this.indicator):[],...et(`[${as}][${cs}="#${o.id}"]`,l)].filter((g,p,v)=>p===v.indexOf(g));const{options:r}=this;this.options.interval=r.interval===!0?rn.interval:r.interval,a?this.index=[...i].indexOf(a):c<0&&(this.index=0,f(i[0],C),this.indicators.length&&hs(this,0)),this.indicators.length&&hs(this,this.index),this._toggleEventListeners(!0),r.interval&&this.cycle()}}get name(){return cn}get defaults(){return rn}get isPaused(){return h(this.element,Tt)}get isAnimating(){return D(`.${Q}-next,.${Q}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{this.element&&!this.isPaused&&!this.isTouch&&Gs(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;!this.isPaused&&n.interval&&(f(e,Tt),u.set(e,()=>{},1,Tt))}next(){this.isAnimating||this.to(this.index+1)}prev(){this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=fs(this),a=Et(n);let l=e;if(!this.isAnimating&&c!==l&&!u.get(n,$t)){cl||c===o.length-1&&l===0)&&(this.direction=a?"left":"right");const{direction:r}=this;l<0?l=o.length-1:l>=o.length&&(l=0);const g=r==="left"?"next":"prev",p=r==="left"?"start":"end",v={relatedTarget:o[l],from:c,to:l,direction:r};dt(ls,v),dt(ds,v),w(n,ls),ls.defaultPrevented||(this.index=l,hs(this,l),zt(o[l])&&h(n,"slide")?u.set(n,()=>{f(o[l],`${Q}-${g}`),It(o[l]),f(o[l],`${Q}-${p}`),f(o[c],`${Q}-${p}`),P(o[l],()=>this.slides&&this.slides.length&&ln(this))},0,$t):(f(o[l],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t),n&&i.interval&&!this.isPaused&&this.cycle(),w(n,ds)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose(),n.isAnimating&&P(n.slides[n.index],()=>{ln(n)})}}d(Qt,"selector",ge),d(Qt,"init",bi),d(Qt,"getInstance",pt);const Nt="collapsing",K="collapse",fn="Collapse",Pi=`.${K}`,gn=`[${at}="${K}"]`,Di={parent:null},Re=t=>F(t,fn),xi=t=>new Zt(t),pn=$(`show.bs.${K}`),Ai=$(`shown.bs.${K}`),un=$(`hide.bs.${K}`),Li=$(`hidden.bs.${K}`),Ii=t=>{const{element:s,parent:e,triggers:n}=t;w(s,pn),pn.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),f(s,Nt),b(s,K),L(s,{height:`${s.scrollHeight}px`}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,lt,"true")),b(s,Nt),f(s,K),f(s,m),L(s,{height:""}),w(s,Ai)}))},mn=t=>{const{element:s,parent:e,triggers:n}=t;w(s,un),un.defaultPrevented||(u.set(s,le,17),e&&u.set(e,le,17),L(s,{height:`${s.scrollHeight}px`}),b(s,K),b(s,m),f(s,Nt),It(s),L(s,{height:"0px"}),P(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,lt,"false")),b(s,Nt),f(s,K),L(s,{height:""}),w(s,Li)}))},ki=t=>{const{target:s}=t,e=s&&M(s,gn),n=e&&V(e),o=n&&Re(n);o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,ki))});const{element:o,options:i}=this,c=E(o);this.triggers=[...et(gn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:he(i.parent)?V(o)||D(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return fn}get defaults(){return Di}hide(){const{triggers:e,element:n}=this;u.get(n)||(mn(this),e.length&&e.forEach(o=>f(o,`${K}d`)))}show(){const{element:e,parent:n,triggers:o}=this;let i,c;n&&(i=[...et(`.${K}.${m}`,n)].find(a=>Re(a)),c=i&&Re(i)),(!n||!u.get(n))&&!u.get(e)&&(c&&i!==e&&(mn(c),c.triggers.forEach(a=>{f(a,`${K}d`)})),Ii(this),o.length&&o.forEach(a=>b(a,`${K}d`)))}toggle(){h(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Pi),d(Zt,"init",xi),d(Zt,"getInstance",Re);const Ot=["dropdown","dropup","dropstart","dropend"],vn="Dropdown",bn="dropdown-menu",wn=t=>{const s=M(t,"A");return t.tagName==="A"&&Ne(t,"href")&&ct(t,"href").slice(-1)==="#"||s&&Ne(s,"href")&&ct(s,"href").slice(-1)==="#"},[nt,gs,ps,us]=Ot,En=`[${at}="${nt}"]`,Gt=t=>F(t,vn),Ni=t=>new Jt(t),Oi=`${bn}-end`,$n=[nt,gs],Tn=[ps,us],yn=["A","BUTTON"],Mi={offset:5,display:"dynamic"},ms=$(`show.bs.${nt}`),Cn=$(`shown.bs.${nt}`),vs=$(`hide.bs.${nt}`),Sn=$(`hidden.bs.${nt}`),Hn=$(`updated.bs.${nt}`),Pn=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;if(z(e,"position")!=="static"){const c=Et(s),a=h(e,Oi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",L(e,Pt)});let r=Ot.find(R=>h(n,R))||nt;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:k}=e,{clientWidth:J,clientHeight:y}=ft(s),{left:X,top:q,width:ce,height:mt}=fe(s),S=X-v-i<0,ot=X+v+ce+i>=J,rt=q+k+i>=y,j=q+k+mt+i>=y,Y=q-k-i<0,x=(!c&&a||c&&!a)&&X+ce-v<0,ae=(c&&a||!c&&!a)&&X+v>=J;if(Tn.includes(r)&&S&&ot&&(r=nt),r===ps&&(c?ot:S)&&(r=us),r===us&&(c?S:ot)&&(r=ps),r===gs&&Y&&!j&&(r=nt),r===nt&&j&&!Y&&(r=gs),Tn.includes(r)&&rt&&dt(p[r],{top:"auto",bottom:0}),$n.includes(r)&&(x||ae)){let R={left:"auto",right:"auto"};!x&&ae&&!c&&(R={left:"auto",right:0}),x&&!ae&&c&&(R={left:0,right:"auto"}),R&&dt(p[r],R)}const Ht=g[r];L(e,{...p[r],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),$n.includes(r)&&a&&a&&L(e,p[!c&&x||c&&ae?"menuStart":"menuEnd"]),w(n,Hn)}},_i=t=>[...t.children].map(s=>{if(s&&yn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&yn.includes(e.tagName)?e:null}).filter(s=>s),Dn=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=E(s);n(o,N,xn),n(o,qe,xn),n(o,Pe,Ri),n(o,Ro,Wi),e.display==="dynamic"&&[Ae,xe].forEach(i=>{n(Xt(s),i,Fi,tt)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,E(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===ct(e,at)))},xn=t=>{const{target:s,type:e}=t;if(s&&T(s)){const n=We(s),o=n&&Gt(n);if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Rs].includes(e)&&wn(s)&&t.preventDefault(),!a&&e!==qe&&s!==n&&s!==c&&o.hide()}}},Bi=t=>{const{target:s}=t,e=s&&M(s,En),n=e&&Gt(e);n&&(t.stopPropagation(),n.toggle(),e&&wn(e)&&t.preventDefault())},Ri=t=>{[Je,ts].includes(t.code)&&t.preventDefault()};function Wi(t){const{code:s}=t,e=We(this),n=e&&Gt(e),{activeElement:o}=e&&E(e);if(n&&o){const{menu:i,open:c}=n,a=_i(i);if(a&&a.length&&[Je,ts].includes(s)){let l=a.indexOf(o);o===e?l=0:s===ts?l=l>1?l-1:0:s===Je&&(l=l{(e?_:B)(this.element,N,Bi)});const{parentElement:o}=this.element,[i]=gt(bn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return vn}get defaults(){return Mi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;if(!n){const c=We(e),a=c&&Gt(c);a&&a.hide(),[ms,Cn,Hn].forEach(l=>{l.relatedTarget=e}),w(i,ms),ms.defaultPrevented||(f(o,m),f(i,m),O(e,lt,"true"),Pn(this),this.open=!n,ht(e),Dn(this),w(i,Cn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;n&&([vs,Sn].forEach(c=>{c.relatedTarget=e}),w(i,vs),vs.defaultPrevented||(b(o,m),b(i,m),O(e,lt,"false"),this.open=!n,Dn(this),w(i,Sn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Jt,"selector",En),d(Jt,"init",Ni),d(Jt,"getInstance",Gt);const U="modal",bs="Modal",ws="Offcanvas",ji="fixed-top",zi="fixed-bottom",An="sticky-top",Ln="position-sticky",In=t=>[...gt(ji,t),...gt(zi,t),...gt(An,t),...gt(Ln,t),...gt("is-fixed",t)],Vi=t=>{const s=wt(t);L(s,{paddingRight:"",overflow:""});const e=In(s);e.length&&e.forEach(n=>{L(n,{paddingRight:"",marginRight:""})})},kn=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Nn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:kn(t),c=In(e);s&&(L(e,{overflow:"hidden",paddingRight:`${n+i}px`}),c.length&&c.forEach(a=>{const l=z(a,"paddingRight");if(a.style.paddingRight=`${parseInt(l,10)+i}px`,[An,Ln].some(r=>h(a,r))){const r=z(a,"marginRight");a.style.marginRight=`${parseInt(r,10)-i}px`}}))},Z="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),On=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt,o=e?s:wt(t);A(t)&&(n===yt&&o.append(yt),n.append(t))},Mn=(t,s)=>{const e=A(s)&&s.nodeName==="BODY",n=A(s)&&!e?s:yt;A(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Es=(t,s)=>{const e=A(s)&&s.nodeName!=="BODY"?s:yt;return A(t)&&e.contains(t)},_n="backdrop",Bn=`${U}-${_n}`,Rn=`${Z}-${_n}`,Wn=`.${U}.${m}`,$s=`.${Z}.${m}`,I=vt("div"),Mt=t=>D(`${Wn},${$s}`,E(t)),Ts=t=>{const s=t?Bn:Rn;[Bn,Rn].forEach(e=>{b(I,e)}),f(I,s)},Fn=(t,s,e)=>{Ts(e),On(I,wt(t)),s&&f(I,W)},jn=()=>{h(I,m)||(f(I,m),It(I))},Fe=()=>{b(I,m)},zn=t=>{Mt(t)||(b(I,W),Mn(I,wt(t)),Vi(t))},Vn=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Ki=`.${U}`,Kn=`[${at}="${U}"]`,Xi=`[${Me}="${U}"]`,Xn=`${U}-static`,Yi={backdrop:!0,keyboard:!0},ue=t=>F(t,bs),Ui=t=>new te(t),je=$(`show.bs.${U}`),Yn=$(`shown.bs.${U}`),ys=$(`hide.bs.${U}`),Un=$(`hidden.bs.${U}`),qn=t=>{const{element:s}=t,e=kn(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;if(!a&&e){const l=Et(s)?"paddingLeft":"paddingRight",r={};r[l]=`${e}px`,L(s,r)}Nn(s,a||n!==o)},Qn=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,Zi),e(Xt(n),xe,o,tt),e(E(n),Pe,Qi)},Zn=t=>{const{triggers:s,element:e,relatedTarget:n}=t;zn(e),L(e,{paddingRight:"",display:""}),Qn(t);const o=je.relatedTarget||s.find(Vn);o&&ht(o),Un.relatedTarget=n,w(e,Un)},Gn=t=>{const{element:s,relatedTarget:e}=t;ht(s),Qn(t,!0),Yn.relatedTarget=e,w(s,Yn)},Jn=t=>{const{element:s,hasFade:e}=t;L(s,{display:"block"}),qn(t),Mt(s)||L(wt(s),{overflow:"hidden"}),f(s,m),At(s,Se),O(s,He,"true"),e?P(s,()=>Gn(t)):Gn(t)},to=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&h(I,m)&&!Mt(s)?(Fe(),P(I,()=>Zn(t))):Zn(t)},qi=t=>{const{target:s}=t,e=s&&M(s,Kn),n=e&&V(e),o=n&&ue(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle())},Qi=({code:t,target:s})=>{const e=D(Wn,E(s)),n=e&&ue(e);if(n){const{options:o}=n;o.keyboard&&t===es&&h(e,m)&&(n.relatedTarget=null,n.hide())}},Zi=t=>{var n,o;const{currentTarget:s}=t,e=s?ue(s):null;if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:l}=i,{target:r}=t,g=(o=(n=E(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(r),v=r&&M(r,Xi);c&&!p?u.set(s,()=>{f(s,Xn),P(a,()=>Gi(e))},17):(v||!g&&!c&&!p&&l)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},Gi=t=>{const{element:s,modalDialog:e}=t,n=(zt(e)||0)+17;b(s,Xn),u.set(s,()=>u.clear(s),n)};class te extends st{constructor(e,n){super(e,n);d(this,"update",()=>{h(this.element,m)&&qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;o.length&&o.forEach(i=>n(i,N,qi))});const{element:o}=this,i=D(`.${U}-dialog`,o);i&&(this.modalDialog=i,this.triggers=[...et(Kn,E(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=h(o,W),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return bs}get defaults(){return Yi}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;if(!h(e,m)&&(je.relatedTarget=i||void 0,w(e,je),!je.defaultPrevented)){const l=Mt(e);if(l&&l!==e){const r=ue(l)||F(l,ws);r&&r.hide()}c?(Es(I)?Ts(!0):Fn(e,o,!0),a=zt(I),jn(),setTimeout(()=>Jn(this),a)):(Jn(this),l&&h(I,m)&&Fe())}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;h(e,m)&&(ys.relatedTarget=o||void 0,w(e,ys),ys.defaultPrevented||(b(e,m),O(e,Se,"true"),At(e,He),n?P(e,()=>to(this)):to(this)))}dispose(){const e={...this},{element:n,modalDialog:o}=e,i=()=>super.dispose();this._toggleEventListeners(),this.hide(),h(n,"fade")?P(o,i):i()}}d(te,"selector",Ki),d(te,"init",Ui),d(te,"getInstance",ue);const Ji=`.${Z}`,Cs=`[${at}="${Z}"]`,tc=`[${Me}="${Z}"]`,ze=`${Z}-toggling`,ec={backdrop:!0,keyboard:!0,scroll:!1},me=t=>F(t,ws),sc=t=>new ee(t),Ve=$(`show.bs.${Z}`),eo=$(`shown.bs.${Z}`),Ss=$(`hide.bs.${Z}`),so=$(`hidden.bs.${Z}`),nc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Nn(s,e!==n)},no=(t,s)=>{const e=s?_:B,n=E(t.element);e(n,Pe,ac),e(n,N,cc)},oo=t=>{const{element:s,options:e}=t;e.scroll||(nc(t),L(wt(s),{overflow:"hidden"})),f(s,ze),f(s,m),L(s,{visibility:"visible"}),P(s,()=>rc(t))},oc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&h(I,m)&&Fe(),P(s,()=>lc(t))},ic=t=>{const s=M(t.target,Cs),e=s&&V(s),n=e&&me(e);n&&(n.relatedTarget=s,n.toggle(),s&&s.tagName==="A"&&t.preventDefault())},cc=t=>{const{target:s}=t,e=D($s,E(s)),n=D(tc,e),o=e&&me(e);if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,l=M(s,Cs),r=E(e).getSelection();(!I.contains(s)||a!=="static")&&(!(r&&r.toString().length)&&(!e.contains(s)&&a&&(!l||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide()),l&&l.tagName==="A"&&t.preventDefault())}},ac=({code:t,target:s})=>{const e=D($s,E(s)),n=e&&me(e);n&&n.options.keyboard&&t===es&&(n.relatedTarget=null,n.hide())},rc=t=>{const{element:s}=t;b(s,ze),At(s,Se),O(s,He,"true"),O(s,"role","dialog"),w(s,eo),no(t,!0),ht(s)},lc=t=>{const{element:s,triggers:e}=t;O(s,Se,"true"),At(s,He),At(s,"role"),L(s,{visibility:""});const n=Ve.relatedTarget||e.find(Vn);n&&ht(n),zn(s),w(s,so),b(s,ze),Mt(s)||no(t)};class ee extends st{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,ic))});const{element:o}=this;this.triggers=[...et(Cs,E(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return ws}get defaults(){return ec}toggle(){h(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!h(e,m)&&(Ve.relatedTarget=o||void 0,eo.relatedTarget=o||void 0,w(e,Ve),!Ve.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=me(c)||F(c,bs);a&&a.hide()}n.backdrop?(Es(I)?Ts():Fn(e,!0),i=zt(I),jn(),setTimeout(()=>oo(this),i)):(oo(this),c&&h(I,m)&&Fe())}}hide(){const{element:e,relatedTarget:n}=this;h(e,m)&&(Ss.relatedTarget=n||void 0,so.relatedTarget=n||void 0,w(e,Ss),Ss.defaultPrevented||(f(e,ze),b(e,m),oc(this)))}dispose(){const e={...this},{element:n,options:o}=e,i=o.backdrop?zt(I):0,c=()=>setTimeout(()=>super.dispose(),i+17);this._toggleEventListeners(),this.hide(),h(n,m)?P(n,c):c()}}d(ee,"selector",Ji),d(ee,"init",sc),d(ee,"getInstance",me);const _t="popover",Ke="Popover",ut="tooltip",io=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},co={top:"top",bottom:"bottom",left:"start",right:"end"},Hs=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;if(n){const a={...co},l=Et(e);L(n,{top:"",left:"",right:"",bottom:""});const r=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:k,offsetWidth:J}=ft(e);let{placement:y}=i;const{clientWidth:X,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?X-q:v-J),ot=l&&mt?S:0,rt=v-(l?0:S)-1,{width:j,height:Y,left:x,right:ae,top:Ht}=fe(e,!0),{x:R,y:Pt}={x,y:Ht};L(c,{top:"",left:"",right:"",bottom:""});let Wt=0,Ee="",Dt=0,ks="",re="",Xe="",Ns="";const Ft=c.offsetWidth||0,xt=c.offsetHeight||0,Os=Ft/2;let $e=Ht-p-xt<0,Te=Ht+p+Y+xt>=k,ye=x-g-Ft=rt;const Ye=["left","right"],Ms=["top","bottom"];$e=Ye.includes(y)?Ht+Y/2-p/2-xt<0:$e,Te=Ye.includes(y)?Ht+p/2+Y/2+xt>=k:Te,ye=Ms.includes(y)?x+j/2-g/2=rt:Ce,y=Ye.includes(y)&&ye&&Ce?"top":y,y=y==="top"&&$e?"bottom":y,y=y==="bottom"&&Te?"top":y,y=y==="left"&&ye?"right":y,y=y==="right"&&Ce?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y])),Ye.includes(y)?(y==="left"?Dt=R-g-(r?Ft:0):Dt=R+j+(r?Ft:0),$e&&Te?(Wt=0,Ee=0,re=Ht+Y/2-xt/2):$e?(Wt=Pt,Ee="",re=Y/2-Ft):Te?(Wt=Pt-p+Y,Ee="",re=p-Y/2-Ft):(Wt=Pt-p/2+Y/2,re=p/2-xt/2)):Ms.includes(y)&&(y==="top"?Wt=Pt-p-(r?xt:0):Wt=Pt+Y+(r?xt:0),ye?(Dt=0,Xe=R+j/2-Os):Ce?(Dt="auto",ks=0,Ns=j/2+rt-ae-Os):(Dt=R-g/2+j/2,Xe=g/2-Os)),L(n,{top:`${Wt}px`,bottom:Ee===""?"":`${Ee}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:ks!==""?`${ks}px`:""}),T(c)&&(re!==""&&(c.style.top=`${re}px`),Xe!==""?c.style.left=`${Xe}px`:Ns!==""&&(c.style.right=`${Ns}px`));const zc=$(`updated.bs.${Vt(t.name)}`);w(e,zc)}},Ps={template:io(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},ao="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{if(he(s)&&s.length){let n=s.trim();oi(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(ii(s)||ni(s)&&s.every(A))&&t.append(...s)},dc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:l,customClass:r,sanitizeFn:g,dismissible:p,content:v,btnClose:k}=o,J=s?ut:_t,y={...co};let X=[],q=[];Et(n)&&(y.left="end",y.right="start");const ce=`bs-${J}-${y[c]}`;let mt;if(T(a))mt=a;else{const ot=vt("div");Ct(ot,a,g),mt=ot.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;if(S){O(S,"id",e),O(S,"role",ut);const ot=s?`${ut}-inner`:`${_t}-body`,rt=s?null:D(`.${_t}-header`,S),j=D(`.${ot}`,S);t.arrow=D(`.${J}-arrow`,S);const{arrow:Y}=t;if(T(i))X=[i.cloneNode(!0)];else{const x=vt("div");Ct(x,i,g),X=[...x.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const x=vt("div");Ct(x,v,g),q=[...x.childNodes]}if(p)if(i)if(T(k))X=[...X,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),X=[...X,x.firstChild]}else if(rt&&rt.remove(),T(k))q=[...q,k.cloneNode(!0)];else{const x=vt("div");Ct(x,k,g),q=[...q,x.firstChild]}s?i&&j&&Ct(j,i,g):(i&&rt&&Ct(rt,X,g),v&&j&&Ct(j,q,g),t.btn=D(".btn-close",S)||void 0),f(S,"position-fixed"),f(Y,"position-absolute"),h(S,J)||f(S,J),l&&!h(S,W)&&f(S,W),r&&!h(S,r)&&f(S,r),h(S,ce)||f(S,ce)}},hc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);)n=si(n),Us(n)||ci(n)||e.push(n);return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||E(t).body},fc=`[${at}="${ut}"],[data-tip="${ut}"]`,ro="title";let lo=t=>F(t,Bt);const gc=t=>new St(t),pc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,it),Mn(e,n===o?n:o)},ve=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Es(s,e===n?e:n)},uc=(t,s)=>{const{element:e}=t;t._toggleEventListeners(),Ne(e,ao)&&t.name===Bt&&uo(t),s&&s()},ho=(t,s)=>{const e=s?_:B,{element:n}=t;e(E(n),Ge,t.handleTouch,tt),[Ae,xe].forEach(o=>{e(Xt(n),o,t.update,tt)})},fo=t=>{const{element:s}=t,e=$(`shown.bs.${Vt(t.name)}`);ho(t,!0),w(s,e),u.clear(s,"in")},go=t=>{const{element:s}=t,e=$(`hidden.bs.${Vt(t.name)}`);ho(t),pc(t),w(s,e),u.clear(s,"out")},po=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,l=M(n,`.${U}`),r=M(n,`.${Z}`),g=Xt(n),v=o===i&&c!==a?o:g;e(v,xe,t.update,tt),e(v,Ae,t.update,tt),l&&e(l,`hide.bs.${U}`,t.handleHide),r&&e(r,`hide.bs.${Z}`,t.handleHide)},uo=(t,s)=>{const e=[ao,ro],{element:n}=t;O(n,e[s?0:1],s||ct(n,e[0])||""),At(n,e[s?1:0])};class St extends st{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Hs(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!ve(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,r=!!(this.name!==Bt&&i.dismissible);a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{p===Wo?(n(o,Rs,this.handleShow),n(o,De,this.handleShow),r||(n(o,Ze,this.handleHide),n(E(o),Ge,this.handleTouch,tt))):p===N?n(o,p,r?this.handleShow:this.toggle):p===qe&&(n(o,Qe,this.handleShow),r||n(o,Bs,this.handleHide),qo&&n(o,N,this.handleFocus)),r&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;lo=r=>F(r,a),this.enabled=!0,this.id=`${c}-${Zs(o,c)}`;const{options:l}=this;!l.title&&i||!i&&!l.content||(dt(Ps,{titleAttr:""}),Ne(o,ro)&&i&&typeof l.title=="string"&&uo(this,l.title),this.container=hc(o),this.offsetParent=["sticky","fixed"].some(r=>z(this.container,"position")===r)?this.container:E(this.element).body,dc(this),this._toggleEventListeners(!0))}get name(){return Bt}get defaults(){return Ps}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:l}=e,r=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!r&&!ve(this)&&u.set(o,()=>{const p=$(`show.bs.${Vt(this.name)}`);w(o,p),p.defaultPrevented||(On(n,g),O(o,it,`#${a}`),this.update(),po(this,!0),h(n,m)||f(n,m),l?P(n,()=>fo(this)):fo(this))},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in"),n&&ve(this)&&u.set(o,()=>{const a=$(`hide.bs.${Vt(this.name)}`);w(o,a),a.defaultPrevented||(this.update(),b(n,m),po(this),i?P(n,()=>go(this)):go(this))},c+17,"out")}enable(){const{enabled:e}=this;e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,options:n,enabled:o}=this,{animation:i}=n;o&&(e&&ve(this)&&i?(this.hide(),P(e,()=>this._toggleEventListeners())):this._toggleEventListeners(),this.enabled=!o)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>uc(o,()=>super.dispose()),17);n.animation&&ve(o)?(this.options.delay=0,this.hide(),P(e,i)):i()}}d(St,"selector",fc),d(St,"init",gc),d(St,"getInstance",lo),d(St,"styleTip",Hs);const mc=`[${at}="${_t}"],[data-tip="${_t}"]`,vc=dt({},Ps,{template:io(_t),content:"",dismissible:!1,btnClose:''}),bc=t=>F(t,Ke),wc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return vc}}d(Rt,"selector",mc),d(Rt,"init",wc),d(Rt,"getInstance",bc),d(Rt,"styleTip",Hs);const Ec="scrollspy",mo="ScrollSpy",$c='[data-bs-spy="scroll"]',Tc={offset:10,target:null},yc=t=>F(t,mo),Cc=t=>new se(t),vo=$(`activate.bs.${Ec}`),Sc=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,l=ns(e),r=s&&is("A",s),g=e?bo(e):i;if(t.scrollTop=l?e.scrollY:e.scrollTop,r&&(g!==i||o!==r.length)){let p,v,k;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Hc(t),[...r].forEach(J=>{p=ct(J,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&D(p,E(c)),v&&(t.items.push(J),k=fe(v),t.offsets.push((l?k.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},bo=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Hc=({element:t,scrollTarget:s})=>ns(s)?s.innerHeight:fe(t).height,wo=t=>{[...is("A",t)].forEach(s=>{h(s,C)&&b(s,C)})},Eo=(t,s)=>{const{target:e,element:n}=t;T(e)&&wo(e),t.activeItem=s,f(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(h(i,"nav")||h(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;a&&!h(a,C)&&f(a,C)}),vo.relatedTarget=s,w(n,vo)};class se extends st{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;if(T(e)&&e.offsetHeight>0){Sc(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const r=c[i-1];a!==r&&Eo(this,r);return}const{offsets:l}=this;if(a&&n0){this.activeItem=null,e&&wo(e);return}c.forEach((r,g)=>{a!==r&&n>=l[g]&&(typeof l[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ae,this.refresh,tt)});const{element:o,options:i}=this;this.target=D(i.target,E(o)),this.target&&(this.scrollTarget=o.clientHeightF(t,$o),Pc=t=>new ne(t),Ds=$(`show.bs.${be}`),Co=$(`shown.bs.${be}`),xs=$(`hide.bs.${be}`),So=$(`hidden.bs.${be}`),we=new Map,Ho=t=>{const{tabContent:s,nav:e}=t;s&&h(s,Nt)&&(s.style.height="",b(s,Nt)),e&&u.clear(e)},Po=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&we.get(o)||{tab:null};if(e&&n&&h(n,W)){const{currentHeight:c,nextHeight:a}=we.get(s)||{currentHeight:0,nextHeight:0};c===a?Ho(t):setTimeout(()=>{e.style.height=`${a}px`,It(e),P(e,()=>Ho(t))},50)}else o&&u.clear(o);Co.relatedTarget=i,w(s,Co)},Do=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&we.get(o)||{tab:null,content:null};let a=0;if(n&&e&&h(e,W)&&([c,e].forEach(l=>{T(l)&&f(l,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),Ds.relatedTarget=i,So.relatedTarget=s,w(s,Ds),!Ds.defaultPrevented){if(e&&f(e,C),c&&b(c,C),n&&e&&h(e,W)){const l=e.scrollHeight;we.set(s,{currentHeight:a,nextHeight:l,tab:null,content:null}),f(n,Nt),n.style.height=`${a}px`,It(n),[c,e].forEach(r=>{r&&b(r,"overflow-hidden")})}e&&e&&h(e,W)?setTimeout(()=>{f(e,m),P(e,()=>{Po(t)})},1):(e&&f(e,m),Po(t)),i&&w(i,So)}},xo=t=>{const{nav:s}=t;if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;e.length===1&&!Ot.some(i=>h(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},Ao=t=>{if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?D(`.${Ot[0]}-toggle`,s):null},Dc=t=>{const s=yo(t.target);s&&(t.preventDefault(),s.show())};class ne extends st{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,Dc)});const{element:n}=this,o=V(n);if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=Ao(n);const{tab:a}=xo(this);if(i&&!a){const l=D(To,i),r=l&&V(l);r&&(f(l,C),f(r,m),f(r,C),O(n,Ue,"true"))}this._toggleEventListeners(!0)}}get name(){return $o}show(){const{element:e,content:n,nav:o,dropdown:i}=this;if(!(o&&u.get(o))&&!h(e,C)){const{tab:c,content:a}=xo(this);if(o&&we.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),xs.relatedTarget=e,T(c)&&(w(c,xs),!xs.defaultPrevented)){f(e,C),O(e,Ue,"true");const l=T(c)&&Ao(c);if(l&&h(l,C)&&b(l,C),o){const r=()=>{c&&(b(c,C),O(c,Ue,"false")),i&&!h(i,C)&&f(i,C)};a&&(h(a,W)||n&&h(n,W))?u.set(o,r,1):r()}a&&(b(a,m),h(a,W)?P(a,()=>Do(this)):Do(this))}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(ne,"selector",To),d(ne,"init",Pc),d(ne,"getInstance",yo);const G="toast",Lo="Toast",xc=`.${G}`,Ac=`[${Me}="${G}"]`,Io=`[${at}="${G}"]`,oe="showing",ko="hide",Lc={animation:!0,autohide:!0,delay:5e3},As=t=>F(t,Lo),Ic=t=>new ie(t),No=$(`show.bs.${G}`),kc=$(`shown.bs.${G}`),Oo=$(`hide.bs.${G}`),Nc=$(`hidden.bs.${G}`),Mo=t=>{const{element:s,options:e}=t;b(s,oe),u.clear(s,oe),w(s,kc),e.autohide&&u.set(s,()=>t.hide(),e.delay,G)},_o=t=>{const{element:s}=t;b(s,oe),b(s,m),f(s,ko),u.clear(s,G),w(s,Nc)},Oc=t=>{const{element:s,options:e}=t;f(s,oe),e.animation?(It(s),P(s,()=>_o(t))):_o(t)},Mc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,ko),It(s),f(s,m),f(s,oe),e.animation?P(s,()=>Mo(t)):Mo(t)},17,oe)},_c=t=>{u.clear(t.element,G),t._toggleEventListeners()},Bc=t=>{const{target:s}=t,e=s&&M(s,Io),n=e&&V(e),o=n&&As(n);o&&(e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show())},Rc=t=>{const s=t.target,e=As(s),{type:n,relatedTarget:o}=t;e&&s!==o&&!s.contains(o)&&([De,Qe].includes(n)?u.clear(s,G):u.set(s,()=>e.hide(),e.options.delay,G))};class ie extends st{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;e&&!n&&(w(e,No),No.defaultPrevented||Mc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;e&&n&&(w(e,Oo),Oo.defaultPrevented||Oc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:l}=this;c&&n(c,N,l),a.autohide&&[Qe,Bs,De,Ze].forEach(r=>n(o,r,Rc)),i.length&&i.forEach(r=>n(r,N,Bc))});const{element:o,options:i}=this;i.animation&&!h(o,W)?f(o,W):!i.animation&&h(o,W)&&b(o,W),this.dismiss=D(Ac,o),this.triggers=[...et(Io,E(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Lo}get defaults(){return Lc}get isShown(){return h(this.element,m)}dispose(){const{element:e,isShown:n}=this;n&&b(e,m),_c(this),super.dispose()}}d(ie,"selector",xc),d(ie,"init",Ic),d(ie,"getInstance",As);const Ls=new Map;[Ut,qt,Qt,Zt,Jt,te,ee,Rt,se,ne,ie,St].forEach(t=>Ls.set(t.prototype.name,t));const Wc=(t,s)=>{[...s].forEach(e=>t(e))},Fc=(t,s)=>{const e=Lt.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Is=t=>{const s=t&&t.nodeName?t:document,e=[...is("*",s)];Ls.forEach(n=>{const{init:o,selector:i}=n;Wc(o,e.filter(c=>Js(c,i)))})},jc=t=>{const s=t&&t.nodeName?t:document;Ls.forEach(e=>{Fc(e.prototype.name,s)})};return document.body?Is():_(document,"DOMContentLoaded",()=>Is(),{once:!0}),H.Alert=Ut,H.Button=qt,H.Carousel=Qt,H.Collapse=Zt,H.Dropdown=Jt,H.Modal=te,H.Offcanvas=ee,H.Popover=Rt,H.ScrollSpy=se,H.Tab=ne,H.Toast=ie,H.Tooltip=St,H.initCallback=Is,H.removeDataAPI=jc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({}); +var BSN=function(H){"use strict";var Uc=Object.defineProperty;var qc=(H,ct,rt)=>ct in H?Uc(H,ct,{enumerable:!0,configurable:!0,writable:!0,value:rt}):H[ct]=rt;var d=(H,ct,rt)=>qc(H,typeof ct!="symbol"?ct+"":ct,rt);const ct="aria-describedby",rt="aria-expanded",le="aria-hidden",Pe="aria-modal",Rs="aria-pressed",qe="aria-selected",jo="DOMContentLoaded",Ze="focus",Je="focusin",Fs="focusout",De="keydown",zo="keyup",N="click",Ws="mousedown",Vo="hover",xe="mouseenter",Ge="mouseleave",Xo="pointerdown",Ko="pointermove",Yo="pointerup",Ae="resize",Ie="scroll",Qe="touchstart",Uo="dragstart",qo='a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"]',ts="ArrowDown",es="ArrowUp",js="ArrowLeft",zs="ArrowRight",ss="Escape",Zo="transitionDuration",Jo="transitionDelay",ns="transitionend",Vs="transitionProperty",Go=navigator.userAgentData,Le=Go,{userAgent:Qo}=navigator,ke=Qo,Xs=/iPhone|iPad|iPod|Android/i;// istanbul ignore else @preserve +Le?Le.brands.some(t=>Xs.test(t.brand)):Xs.test(ke);const Ks=/(iPhone|iPod|iPad)/,ti=Le?Le.brands.some(t=>Ks.test(t.brand)):Ks.test(ke);ke&&ke.includes("Firefox");const{head:Ne}=document;["webkitPerspective","perspective"].some(t=>t in Ne.style);const Ys=(t,s,e,n)=>{const o=n||!1;t.addEventListener(s,e,o)},Us=(t,s,e,n)=>{const o=n||!1;t.removeEventListener(s,e,o)},ei=(t,s,e,n)=>{const o=i=>{/* istanbul ignore else @preserve */(i.target===t||i.currentTarget===t)&&(e.apply(t,[i]),Us(t,s,o,n))};Ys(t,s,o,n)},re=()=>{};(()=>{let t=!1;try{const s=Object.defineProperty({},"passive",{get:()=>(t=!0,t)});// istanbul ignore next @preserve +ei(document,jo,re,s)}catch{}return t})(),["webkitTransform","transform"].some(t=>t in Ne.style),["webkitAnimation","animation"].some(t=>t in Ne.style),["webkitTransition","transition"].some(t=>t in Ne.style);const et=(t,s)=>t.getAttribute(s),de=(t,s)=>t.hasAttribute(s),O=(t,s,e)=>t.setAttribute(s,e),At=(t,s)=>t.removeAttribute(s),h=(t,...s)=>{t.classList.add(...s)},b=(t,...s)=>{t.classList.remove(...s)},f=(t,s)=>t.classList.contains(s),he=t=>t!=null&&typeof t=="object"||!1,x=t=>he(t)&&typeof t.nodeType=="number"&&[1,2,3,4,5,6,7,8,9,10,11].some(s=>t.nodeType===s)||!1,T=t=>x(t)&&t.nodeType===1||!1,jt=new Map,It={data:jt,set:(t,s,e)=>{if(!T(t))return;// istanbul ignore else @preserve +jt.has(s)||jt.set(s,new Map),jt.get(s).set(t,e)},getAllFor:t=>jt.get(t)||null,get:(t,s)=>{if(!T(t)||!s)return null;const e=It.getAllFor(s);return t&&e&&e.get(t)||null},remove:(t,s)=>{const e=It.getAllFor(s);if(!e||!T(t))return;e.delete(t);// istanbul ignore else @preserve +e.size===0&&jt.delete(s)}},W=(t,s)=>It.get(t,s),fe=t=>typeof t=="string"||!1,os=t=>he(t)&&t.constructor.name==="Window"||!1,qs=t=>x(t)&&t.nodeType===9||!1,w=t=>os(t)?t.document:qs(t)?t:x(t)?t.ownerDocument:window.document,dt=(t,...s)=>Object.assign(t,...s),vt=t=>{if(!t)return;if(fe(t))return w().createElement(t);const{tagName:s}=t,e=vt(s);if(!e)return;const n={...t};return delete n.tagName,dt(e,n)},E=(t,s)=>t.dispatchEvent(s),z=(t,s)=>{const e=getComputedStyle(t),n=s.replace("webkit","Webkit").replace(/([A-Z])/g,"-$1").toLowerCase();return e.getPropertyValue(n)},si=t=>{const s=z(t,Vs),e=z(t,Jo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},ge=t=>{const s=z(t,Vs),e=z(t,Zo),n=e.includes("ms")?1:1e3,o=s&&s!=="none"?parseFloat(e)*n:0;return Number.isNaN(o)?0:o},A=(t,s)=>{let e=0;const n=new Event(ns),o=ge(t),i=si(t);if(o){const c=a=>{// istanbul ignore else @preserve +a.target===t&&(s.apply(t,[a]),t.removeEventListener(ns,c),e=1)};t.addEventListener(ns,c),setTimeout(()=>{// istanbul ignore next @preserve +e||E(t,n)},o+i+17)}else s.apply(t,[n])},ht=(t,s)=>t.focus(s),Zs=t=>["true",!0].includes(t)?!0:["false",!1].includes(t)?!1:["null","",null,void 0].includes(t)?null:t!==""&&!Number.isNaN(+t)?+t:t,Oe=t=>Object.entries(t),zt=t=>t.toLowerCase(),ni=(t,s,e,n)=>{const o={...e},i={...t.dataset},c={...s},a={},r="title";return Oe(i).forEach(([l,g])=>{const p=typeof l=="string"&&l.includes(n)?l.replace(n,"").replace(/[A-Z]/g,v=>zt(v)):l;a[p]=Zs(g)}),Oe(o).forEach(([l,g])=>{o[l]=Zs(g)}),Oe(s).forEach(([l,g])=>{// istanbul ignore else @preserve +l in o?c[l]=o[l]:l in a?c[l]=a[l]:c[l]=l===r?et(t,r):g}),c},Js=t=>Object.keys(t),$=(t,s)=>{const e=new CustomEvent(t,{cancelable:!0,bubbles:!0});// istanbul ignore else @preserve +return he(s)&&dt(e,s),e},st={passive:!0},Lt=t=>t.offsetHeight,I=(t,s)=>{Oe(s).forEach(([e,n])=>{if(n&&fe(e)&&e.includes("--"))t.style.setProperty(e,n);else{const o={};o[e]=n,dt(t.style,o)}})},is=t=>he(t)&&t.constructor.name==="Map"||!1,oi=t=>typeof t=="number"||!1,bt=new Map,u={set:(t,s,e,n)=>{if(!T(t))return;// istanbul ignore else @preserve +if(n&&n.length){// istanbul ignore else @preserve +bt.has(t)||bt.set(t,new Map),bt.get(t).set(n,setTimeout(s,e))}else bt.set(t,setTimeout(s,e))},get:(t,s)=>{if(!T(t))return null;const e=bt.get(t);return s&&e&&is(e)?e.get(s)||null:oi(e)?e:null},clear:(t,s)=>{if(!T(t))return;const e=bt.get(t);if(s&&s.length&&is(e)){clearTimeout(e.get(s)),e.delete(s);// istanbul ignore else @preserve +e.size===0&&bt.delete(t)}else clearTimeout(e),bt.delete(t)}},Z=(t,s)=>(x(s)?s:w()).querySelectorAll(t),cs=new Map;function ii(t){const{shiftKey:s,code:e}=t,n=w(this),o=[...Z(qo,this)].filter(a=>!de(a,"disabled")&&!et(a,le));if(!o.length)return;const i=o[0],c=o[o.length-1];// istanbul ignore else @preserve +e==="Tab"&&(s&&n.activeElement===i?(c.focus(),t.preventDefault()):!s&&n.activeElement===c&&(i.focus(),t.preventDefault()))}const ci=t=>cs.has(t)===!0,Me=t=>{const s=ci(t);(s?Us:Ys)(t,"keydown",ii),s?cs.delete(t):cs.set(t,!0)},pe=(t,s)=>{const{width:e,height:n,top:o,right:i,bottom:c,left:a}=t.getBoundingClientRect();let r=1,l=1;if(s&&T(t)){const{offsetWidth:g,offsetHeight:p}=t;r=g>0?Math.round(e)/g:1,l=p>0?Math.round(n)/p:1}return{width:e/r,height:n/l,top:o/l,right:i/r,bottom:c/l,left:a/r,x:a/r,y:o/l}},wt=t=>w(t).body,ft=t=>w(t).documentElement,Gs=t=>x(t)&&t.constructor.name==="ShadowRoot"||!1,ai=t=>t.nodeName==="HTML"?t:T(t)&&t.assignedSlot||x(t)&&t.parentNode||Gs(t)&&t.host||ft(t);let Qs=0,tn=0;const Vt=new Map,en=(t,s)=>{let e=s?Qs:tn;if(s){const n=en(t),o=Vt.get(n)||new Map;Vt.has(n)||Vt.set(n,o),is(o)&&!o.has(s)?(o.set(s,e),Qs+=1):e=o.get(s)}else{const n=t.id||t;Vt.has(n)?e=Vt.get(n):(Vt.set(n,e),tn+=1)}return e},Xt=t=>{var s;return t?qs(t)?t.defaultView:x(t)?(s=t==null?void 0:t.ownerDocument)==null?void 0:s.defaultView:t:window},li=t=>Array.isArray(t)||!1,sn=t=>{if(!x(t))return!1;const{top:s,bottom:e}=pe(t),{clientHeight:n}=ft(t);return s<=n&&e>=0},ri=t=>typeof t=="function"||!1,di=t=>he(t)&&t.constructor.name==="NodeList"||!1,Et=t=>ft(t).dir==="rtl",hi=t=>x(t)&&["TABLE","TD","TH"].includes(t.nodeName)||!1,M=(t,s)=>t?t.closest(s)||M(t.getRootNode().host,s):null,P=(t,s)=>T(t)?t:(x(s)?s:w()).querySelector(t),as=(t,s)=>(x(s)?s:w()).getElementsByTagName(t),gt=(t,s)=>(s&&x(s)?s:w()).getElementsByClassName(t),nn=(t,s)=>t.matches(s),Kt={},on=t=>{const{type:s,currentTarget:e}=t;[...Kt[s]].forEach(([n,o])=>{/* istanbul ignore else @preserve */e===n&&[...o].forEach(([i,c])=>{i.apply(n,[t]),typeof c=="object"&&c.once&&B(n,s,i,c)})})},_=(t,s,e,n)=>{/* istanbul ignore else @preserve */Kt[s]||(Kt[s]=new Map);const o=Kt[s];/* istanbul ignore else @preserve */o.has(t)||o.set(t,new Map);const i=o.get(t),{size:c}=i;i.set(e,n);/* istanbul ignore else @preserve */c||t.addEventListener(s,on,n)},B=(t,s,e,n)=>{const o=Kt[s],i=o&&o.get(t),c=i&&i.get(e),a=c!==void 0?c:n;/* istanbul ignore else @preserve */i&&i.has(e)&&i.delete(e);/* istanbul ignore else @preserve */o&&(!i||!i.size)&&o.delete(t);/* istanbul ignore else @preserve */(!o||!o.size)&&delete Kt[s];/* istanbul ignore else @preserve */(!i||!i.size)&&t.removeEventListener(s,on,a)},F="fade",m="show",_e="data-bs-dismiss",Be="alert",cn="Alert",fi="5.0.15";class nt{constructor(s,e){d(this,"_toggleEventListeners",()=>{});let n;try{if(T(s))n=s;else if(fe(s)){n=P(s);// istanbul ignore else @preserve +if(!n)throw Error(`"${s}" is not a valid selector.`)}else throw Error("your target is not an instance of HTMLElement.")}catch(i){throw Error(`${this.name} Error: ${i.message}`)}const o=It.get(n,this.name);// istanbul ignore else @preserve +o&&o._toggleEventListeners(),this.element=n,this.options=this.defaults&&Js(this.defaults).length?ni(n,this.defaults,e||{},"bs"):{},It.set(n,this.name,this)}get version(){return fi}get name(){return"BaseComponent"}get defaults(){return{}}dispose(){It.remove(this.element,this.name),Js(this).forEach(s=>{delete this[s]})}}const gi=`.${Be}`,pi=`[${_e}="${Be}"]`,ui=t=>W(t,cn),mi=t=>new Yt(t),an=$(`close.bs.${Be}`),vi=$(`closed.bs.${Be}`),ln=t=>{const{element:s}=t;E(s,vi),t._toggleEventListeners(),t.dispose(),s.remove()};class Yt extends nt{constructor(e){super(e);d(this,"dismiss");d(this,"close",()=>{const{element:e}=this;// istanbul ignore else @preserve +e&&f(e,m)&&(E(e,an),an.defaultPrevented||(b(e,m),f(e,F)?A(e,()=>ln(this)):ln(this)))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{dismiss:o,close:i}=this;// istanbul ignore else @preserve +o&&n(o,N,i)});this.dismiss=P(pi,this.element),this._toggleEventListeners(!0)}get name(){return cn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Yt,"selector",gi),d(Yt,"init",mi),d(Yt,"getInstance",ui);const C="active",at="data-bs-toggle",bi="button",rn="Button",wi=`[${at}="${bi}"]`,Ei=t=>W(t,rn),$i=t=>new Ut(t);class Ut extends nt{constructor(e){super(e);d(this,"isActive",!1);d(this,"toggle",e=>{e&&e.preventDefault();const{element:n,isActive:o}=this;!f(n,"disabled")&&!et(n,"disabled")&&((o?b:h)(n,C),O(n,Rs,o?"false":"true"),this.isActive=f(n,C))});d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,this.toggle)});const{element:n}=this;this.isActive=f(n,C),O(n,Rs,String(!!this.isActive)),this._toggleEventListeners(!0)}get name(){return rn}dispose(){this._toggleEventListeners(),super.dispose()}}d(Ut,"selector",wi),d(Ut,"init",$i),d(Ut,"getInstance",Ei);const ls="data-bs-target",kt="carousel",dn="Carousel",hn="data-bs-parent",Ti="data-bs-container",V=t=>{const s=[ls,hn,Ti,"href"],e=w(t);return s.map(n=>{const o=et(t,n);return o?n===hn?M(t,o):P(o,e):null}).filter(n=>n)[0]},ue=`[data-bs-ride="${kt}"]`,J=`${kt}-item`,rs="data-bs-slide-to",$t="data-bs-slide",Tt="paused",fn={pause:"hover",keyboard:!1,touch:!0,interval:5e3},pt=t=>W(t,dn),yi=t=>new qt(t);let me=0,Re=0,ds=0;const hs=$(`slide.bs.${kt}`),fs=$(`slid.bs.${kt}`),gn=t=>{const{index:s,direction:e,element:n,slides:o,options:i}=t;// istanbul ignore else @preserve +if(t.isAnimating){const c=ps(t),a=e==="left"?"next":"prev",r=e==="left"?"start":"end";h(o[s],C),b(o[s],`${J}-${a}`),b(o[s],`${J}-${r}`),b(o[c],C),b(o[c],`${J}-${r}`),E(n,fs),u.clear(n,$t),t.cycle&&!w(n).hidden&&i.interval&&!t.isPaused&&t.cycle()}};function Ci(){const t=pt(this);// istanbul ignore else @preserve +t&&!t.isPaused&&!u.get(this,Tt)&&h(this,Tt)}function Si(){const t=pt(this);// istanbul ignore else @preserve +t&&t.isPaused&&!u.get(this,Tt)&&t.cycle()}function Hi(t){t.preventDefault();const s=M(this,ue)||V(this),e=pt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=+(et(this,rs)||0);// istanbul ignore else @preserve +this&&!f(this,C)&&!Number.isNaN(n)&&e.to(n)}}function Pi(t){t.preventDefault();const s=M(this,ue)||V(this),e=pt(s);// istanbul ignore else @preserve +if(e&&!e.isAnimating){const n=et(this,$t);// istanbul ignore else @preserve +n==="next"?e.next():n==="prev"&&e.prev()}}const Di=({code:t,target:s})=>{const e=w(s),[n]=[...Z(ue,e)].filter(i=>sn(i)),o=pt(n);// istanbul ignore next @preserve +if(o&&!o.isAnimating&&!/textarea|input/i.test(s.nodeName)){const i=Et(n),c=i?js:zs,a=i?zs:js;// istanbul ignore else @preserve +t===a?o.prev():t===c&&o.next()}};function pn(t){const{target:s}=t,e=pt(this);// istanbul ignore next @preserve +e&&e.isTouch&&(e.indicator&&!e.indicator.contains(s)||!e.controls.includes(s))&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())}function xi(t){const{target:s}=t,e=pt(this);// istanbul ignore else @preserve +if(e&&!e.isAnimating&&!e.isTouch){const{controls:n,indicators:o}=e;// istanbul ignore else @preserve +if(![...n,...o].every(i=>i===s||i.contains(s))){me=t.pageX;// istanbul ignore else @preserve +this.contains(s)&&(e.isTouch=!0,un(e,!0))}}}const Ai=t=>{Re=t.pageX},Ii=t=>{var o;const{target:s}=t,e=w(s),n=[...Z(ue,e)].map(i=>pt(i)).find(i=>i.isTouch);// istanbul ignore else @preserve +if(n){const{element:i,index:c}=n,a=Et(i);if(ds=t.pageX,n.isTouch=!1,un(n),!((o=e.getSelection())!=null&&o.toString().length)&&i.contains(s)&&Math.abs(me-ds)>120){// istanbul ignore else @preserve +Reme&&n.to(c+(a?1:-1))}me=0,Re=0,ds=0}},gs=(t,s)=>{const{indicators:e}=t;[...e].forEach(n=>b(n,C));// istanbul ignore else @preserve +t.indicators[s]&&h(e[s],C)},un=(t,s)=>{const{element:e}=t,n=s?_:B;n(w(e),Ko,Ai,st),n(w(e),Yo,Ii,st)},ps=t=>{const{slides:s,element:e}=t,n=P(`.${J}.${C}`,e);return T(n)?[...s].indexOf(n):-1};class qt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const{element:n,options:o,slides:i,controls:c,indicators:a}=this,{touch:r,pause:l,interval:g,keyboard:p}=o,v=e?_:B;l&&g&&(v(n,xe,Ci),v(n,Ge,Si)),r&&i.length>2&&(v(n,Xo,xi,st),v(n,Qe,pn,{passive:!1}),v(n,Uo,pn,{passive:!1}));// istanbul ignore else @preserve +c.length&&c.forEach(L=>{// istanbul ignore else @preserve +L&&v(L,N,Pi)});// istanbul ignore else @preserve +a.length&&a.forEach(L=>{v(L,N,Hi)}),p&&v(w(n),De,Di)});const{element:o}=this;this.direction=Et(o)?"right":"left",this.isTouch=!1,this.slides=gt(J,o);const{slides:i}=this;if(i.length>=2){const c=ps(this),a=[...i].find(g=>nn(g,`.${J}-next,.${J}-next`));this.index=c;const r=w(o);this.controls=[...Z(`[${$t}]`,o),...Z(`[${$t}][${ls}="#${o.id}"]`,r)].filter((g,p,v)=>p===v.indexOf(g)),this.indicator=P(`.${kt}-indicators`,o),this.indicators=[...this.indicator?Z(`[${rs}]`,this.indicator):[],...Z(`[${rs}][${ls}="#${o.id}"]`,r)].filter((g,p,v)=>p===v.indexOf(g));const{options:l}=this;this.options.interval=l.interval===!0?fn.interval:l.interval;// istanbul ignore next @preserve - impossible to test +a?this.index=[...i].indexOf(a):c<0&&(this.index=0,h(i[0],C),this.indicators.length&&gs(this,0));// istanbul ignore else @preserve +this.indicators.length&&gs(this,this.index),this._toggleEventListeners(!0),l.interval&&this.cycle()}}get name(){return dn}get defaults(){return fn}get isPaused(){return f(this.element,Tt)}get isAnimating(){return P(`.${J}-next,.${J}-prev`,this.element)!==null}cycle(){const{element:e,options:n,isPaused:o,index:i}=this;u.clear(e,kt),o&&(u.clear(e,Tt),b(e,Tt)),u.set(e,()=>{// istanbul ignore else @preserve +this.element&&!this.isPaused&&!this.isTouch&&sn(e)&&this.to(i+1)},n.interval,kt)}pause(){const{element:e,options:n}=this;// istanbul ignore else @preserve +!this.isPaused&&n.interval&&(h(e,Tt),u.set(e,()=>{},1,Tt))}next(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index+1)}prev(){// istanbul ignore else @preserve +this.isAnimating||this.to(this.index-1)}to(e){const{element:n,slides:o,options:i}=this,c=ps(this),a=Et(n);let r=e;if(!this.isAnimating&&c!==r&&!u.get(n,$t)){// istanbul ignore else @preserve +cr||c===o.length-1&&r===0)&&(this.direction=a?"left":"right");const{direction:l}=this;r<0?r=o.length-1:r>=o.length&&(r=0);const g=l==="left"?"next":"prev",p=l==="left"?"start":"end",v={relatedTarget:o[r],from:c,to:r,direction:l};dt(hs,v),dt(fs,v),E(n,hs),hs.defaultPrevented||(this.index=r,gs(this,r),ge(o[r])&&f(n,"slide")?u.set(n,()=>{h(o[r],`${J}-${g}`),Lt(o[r]),h(o[r],`${J}-${p}`),h(o[c],`${J}-${p}`),A(o[r],()=>this.slides&&this.slides.length&&gn(this))},0,$t):(h(o[r],C),b(o[c],C),u.set(n,()=>{u.clear(n,$t);// istanbul ignore else @preserve +n&&i.interval&&!this.isPaused&&this.cycle(),E(n,fs)},0,$t)))}}dispose(){const{isAnimating:e}=this,n={...this,isAnimating:e};this._toggleEventListeners(),super.dispose();// istanbul ignore next @preserve - impossible to test +n.isAnimating&&A(n.slides[n.index],()=>{gn(n)})}}d(qt,"selector",ue),d(qt,"init",yi),d(qt,"getInstance",pt);const Nt="collapsing",X="collapse",mn="Collapse",Li=`.${X}`,vn=`[${at}="${X}"]`,ki={parent:null},Fe=t=>W(t,mn),Ni=t=>new Zt(t),bn=$(`show.bs.${X}`),Oi=$(`shown.bs.${X}`),wn=$(`hide.bs.${X}`),Mi=$(`hidden.bs.${X}`),_i=t=>{const{element:s,parent:e,triggers:n}=t;E(s,bn),bn.defaultPrevented||(u.set(s,re,17),e&&u.set(e,re,17),h(s,Nt),b(s,X),I(s,{height:`${s.scrollHeight}px`}),A(s,()=>{u.clear(s),e&&u.clear(e),n.forEach(o=>O(o,rt,"true")),b(s,Nt),h(s,X),h(s,m),I(s,{height:""}),E(s,Oi)}))},En=t=>{const{element:s,parent:e,triggers:n}=t;E(s,wn),wn.defaultPrevented||(u.set(s,re,17),e&&u.set(e,re,17),I(s,{height:`${s.scrollHeight}px`}),b(s,X),b(s,m),h(s,Nt),Lt(s),I(s,{height:"0px"}),A(s,()=>{u.clear(s);// istanbul ignore else @preserve +e&&u.clear(e),n.forEach(o=>O(o,rt,"false")),b(s,Nt),h(s,X),I(s,{height:""}),E(s,Mi)}))},Bi=t=>{const{target:s}=t,e=s&&M(s,vn),n=e&&V(e),o=n&&Fe(n);// istanbul ignore else @preserve +o&&o.toggle(),e&&e.tagName==="A"&&t.preventDefault()};class Zt extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,Bi))});const{element:o,options:i}=this,c=w(o);this.triggers=[...Z(vn,c)].filter(a=>V(a)===o),this.parent=T(i.parent)?i.parent:fe(i.parent)?V(o)||P(i.parent,c):null,this._toggleEventListeners(!0)}get name(){return mn}get defaults(){return ki}hide(){const{triggers:e,element:n}=this;// istanbul ignore else @preserve +if(!u.get(n)){En(this);// istanbul ignore else @preserve +e.length&&e.forEach(o=>h(o,`${X}d`))}}show(){const{element:e,parent:n,triggers:o}=this;let i,c;if(n&&(i=[...Z(`.${X}.${m}`,n)].find(a=>Fe(a)),c=i&&Fe(i)),(!n||!u.get(n))&&!u.get(e)){c&&i!==e&&(En(c),c.triggers.forEach(a=>{h(a,`${X}d`)})),_i(this);// istanbul ignore else @preserve +o.length&&o.forEach(a=>b(a,`${X}d`))}}toggle(){f(this.element,m)?this.hide():this.show()}dispose(){this._toggleEventListeners(),super.dispose()}}d(Zt,"selector",Li),d(Zt,"init",Ni),d(Zt,"getInstance",Fe);const Ot=["dropdown","dropup","dropstart","dropend"],$n="Dropdown",Tn="dropdown-menu",yn=t=>{const s=M(t,"A");return t.tagName==="A"&&de(t,"href")&&et(t,"href").slice(-1)==="#"||s&&de(s,"href")&&et(s,"href").slice(-1)==="#"},[ot,us,ms,vs]=Ot,Cn=`[${at}="${ot}"]`,Jt=t=>W(t,$n),Ri=t=>new Gt(t),Fi=`${Tn}-end`,Sn=[ot,us],Hn=[ms,vs],Pn=["A","BUTTON"],Wi={offset:5,display:"dynamic"},bs=$(`show.bs.${ot}`),Dn=$(`shown.bs.${ot}`),ws=$(`hide.bs.${ot}`),xn=$(`hidden.bs.${ot}`),An=$(`updated.bs.${ot}`),In=t=>{const{element:s,menu:e,parentElement:n,options:o}=t,{offset:i}=o;// istanbul ignore else @preserve: this test requires a navbar +if(z(e,"position")!=="static"){const c=Et(s),a=f(e,Fi);["margin","top","bottom","left","right"].forEach(R=>{const Pt={};Pt[R]="",I(e,Pt)});let l=Ot.find(R=>f(n,R))||ot;const g={dropdown:[i,0,0],dropup:[0,0,i],dropstart:c?[-1,0,0,i]:[-1,i,0],dropend:c?[-1,i,0]:[-1,0,0,i]},p={dropdown:{top:"100%"},dropup:{top:"auto",bottom:"100%"},dropstart:c?{left:"100%",right:"auto"}:{left:"auto",right:"100%"},dropend:c?{left:"auto",right:"100%"}:{left:"100%",right:"auto"},menuStart:c?{right:"0",left:"auto"}:{right:"auto",left:"0"},menuEnd:c?{right:"auto",left:"0"}:{right:"0",left:"auto"}},{offsetWidth:v,offsetHeight:L}=e,{clientWidth:tt,clientHeight:y}=ft(s),{left:K,top:q,width:ie,height:mt}=pe(s),S=K-v-i<0,it=K+v+ie+i>=tt,lt=q+L+i>=y,j=q+L+mt+i>=y,Y=q-L-i<0,D=(!c&&a||c&&!a)&&K+ie-v<0,ce=(c&&a||!c&&!a)&&K+v>=tt;if(Hn.includes(l)&&S&&it&&(l=ot),l===ms&&(c?it:S)&&(l=vs),l===vs&&(c?S:it)&&(l=ms),l===us&&Y&&!j&&(l=ot),l===ot&&j&&!Y&&(l=us),Hn.includes(l)&<&&dt(p[l],{top:"auto",bottom:0}),Sn.includes(l)&&(D||ce)){let R={left:"auto",right:"auto"};// istanbul ignore else @preserve +!D&&ce&&!c&&(R={left:"auto",right:0});// istanbul ignore else @preserve +D&&!ce&&c&&(R={left:0,right:"auto"});// istanbul ignore else @preserve +R&&dt(p[l],R)}const Ht=g[l];if(I(e,{...p[l],margin:`${Ht.map(R=>R&&`${R}px`).join(" ")}`}),Sn.includes(l)&&a){// istanbul ignore else @preserve +a&&I(e,p[!c&&D||c&&ce?"menuStart":"menuEnd"])}E(n,An)}},ji=t=>[...t.children].map(s=>{if(s&&Pn.includes(s.tagName))return s;const{firstElementChild:e}=s;return e&&Pn.includes(e.tagName)?e:null}).filter(s=>s),Ln=t=>{const{element:s,options:e}=t,n=t.open?_:B,o=w(s);n(o,N,kn),n(o,Ze,kn),n(o,De,Vi),n(o,zo,Xi);// istanbul ignore else @preserve +e.display==="dynamic"&&[Ie,Ae].forEach(i=>{n(Xt(s),i,Ki,st)})},We=t=>{const s=[...Ot,"btn-group","input-group"].map(e=>gt(`${e} ${m}`,w(t))).find(e=>e.length);if(s&&s.length)return[...s[0].children].find(e=>Ot.some(n=>n===et(e,at)))},kn=t=>{const{target:s,type:e}=t;// istanbul ignore else @preserve +if(s&&T(s)){const n=We(s),o=n&&Jt(n);// istanbul ignore else @preserve +if(o){const{parentElement:i,menu:c}=o,a=i&&i.contains(s)&&(s.tagName==="form"||M(s,"form")!==null);[N,Ws].includes(e)&&yn(s)&&t.preventDefault();// istanbul ignore else @preserve +!a&&e!==Ze&&s!==n&&s!==c&&o.hide()}}},zi=t=>{const{target:s}=t,e=s&&M(s,Cn),n=e&&Jt(e);// istanbul ignore else @preserve +if(n){t.stopPropagation(),n.toggle();// istanbul ignore else @preserve +e&&yn(e)&&t.preventDefault()}},Vi=t=>{// istanbul ignore else @preserve +[ts,es].includes(t.code)&&t.preventDefault()};function Xi(t){const{code:s}=t,e=We(this),n=e&&Jt(e),{activeElement:o}=e&&w(e);// istanbul ignore else @preserve +if(n&&o){const{menu:i,open:c}=n,a=ji(i);if(a&&a.length&&[ts,es].includes(s)){let r=a.indexOf(o);// istanbul ignore else @preserve +o===e?r=0:s===es?r=r>1?r-1:0:s===ts&&(r=r{(e?_:B)(this.element,N,zi)});const{parentElement:o}=this.element,[i]=gt(Tn,o);i&&(this.parentElement=o,this.menu=i,this._toggleEventListeners(!0))}get name(){return $n}get defaults(){return Wi}toggle(){this.open?this.hide():this.show()}show(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +if(!n){const c=We(e),a=c&&Jt(c);a&&a.hide(),[bs,Dn,An].forEach(r=>{r.relatedTarget=e}),E(i,bs),bs.defaultPrevented||(h(o,m),h(i,m),O(e,rt,"true"),In(this),this.open=!n,ht(e),Ln(this),E(i,Dn))}}hide(){const{element:e,open:n,menu:o,parentElement:i}=this;// istanbul ignore else @preserve +n&&([ws,xn].forEach(c=>{c.relatedTarget=e}),E(i,ws),ws.defaultPrevented||(b(o,m),b(i,m),O(e,rt,"false"),this.open=!n,Ln(this),E(i,xn)))}dispose(){this.open&&this.hide(),this._toggleEventListeners(),super.dispose()}}d(Gt,"selector",Cn),d(Gt,"init",Ri),d(Gt,"getInstance",Jt);const U="modal",Es="Modal",$s="Offcanvas",Yi="fixed-top",Ui="fixed-bottom",Nn="sticky-top",On="position-sticky",Mn=t=>[...gt(Yi,t),...gt(Ui,t),...gt(Nn,t),...gt(On,t),...gt("is-fixed",t)],qi=t=>{const s=wt(t);I(s,{paddingRight:"",overflow:""});const e=Mn(s);// istanbul ignore else @preserve +e.length&&e.forEach(n=>{I(n,{paddingRight:"",marginRight:""})})},_n=t=>{const{clientWidth:s}=ft(t),{innerWidth:e}=Xt(t);return Math.abs(e-s)},Bn=(t,s)=>{const e=wt(t),n=parseInt(z(e,"paddingRight"),10),i=z(e,"overflow")==="hidden"&&n?0:_n(t),c=Mn(e);// istanbul ignore else @preserve +if(s){I(e,{overflow:"hidden",paddingRight:`${n+i}px`});// istanbul ignore else @preserve +c.length&&c.forEach(a=>{const r=z(a,"paddingRight");a.style.paddingRight=`${parseInt(r,10)+i}px`;// istanbul ignore else @preserve +if([Nn,On].some(l=>f(a,l))){const l=z(a,"marginRight");a.style.marginRight=`${parseInt(l,10)-i}px`}})}},G="offcanvas",yt=vt({tagName:"div",className:"popup-container"}),Rn=(t,s)=>{const e=x(s)&&s.nodeName==="BODY",n=x(s)&&!e?s:yt,o=e?s:wt(t);// istanbul ignore else @preserve +x(t)&&(n===yt&&o.append(yt),n.append(t))},Fn=(t,s)=>{const e=x(s)&&s.nodeName==="BODY",n=x(s)&&!e?s:yt;// istanbul ignore else @preserve +x(t)&&(t.remove(),n===yt&&!yt.children.length&&yt.remove())},Ts=(t,s)=>{const e=x(s)&&s.nodeName!=="BODY"?s:yt;return x(t)&&e.contains(t)},Wn="backdrop",jn=`${U}-${Wn}`,zn=`${G}-${Wn}`,Vn=`.${U}.${m}`,ys=`.${G}.${m}`,k=vt("div"),Mt=t=>P(`${Vn},${ys}`,w(t)),Cs=t=>{const s=t?jn:zn;[jn,zn].forEach(e=>{b(k,e)}),h(k,s)},Xn=(t,s,e)=>{Cs(e),Rn(k,wt(t)),s&&h(k,F)},Kn=()=>{f(k,m)||(h(k,m),Lt(k))},je=()=>{b(k,m)},Yn=t=>{Mt(t)||(b(k,F),Fn(k,wt(t)),qi(t))},Un=t=>T(t)&&z(t,"visibility")!=="hidden"&&t.offsetParent!==null,Zi=`.${U}`,qn=`[${at}="${U}"]`,Ji=`[${_e}="${U}"]`,Zn=`${U}-static`,Gi={backdrop:!0,keyboard:!0},ve=t=>W(t,Es),Qi=t=>new Qt(t),ze=$(`show.bs.${U}`),Jn=$(`shown.bs.${U}`),Ss=$(`hide.bs.${U}`),Gn=$(`hidden.bs.${U}`),Qn=t=>{const{element:s}=t,e=_n(s),{clientHeight:n,scrollHeight:o}=ft(s),{clientHeight:i,scrollHeight:c}=s,a=i!==c;// istanbul ignore next @preserve: impossible to test? +if(!a&&e){const l={[Et(s)?"paddingLeft":"paddingRight"]:`${e}px`};I(s,l)}Bn(s,a||n!==o)},to=(t,s)=>{const e=s?_:B,{element:n,update:o}=t;e(n,N,sc),e(Xt(n),Ae,o,st),e(w(n),De,ec)},eo=t=>{const{triggers:s,element:e,relatedTarget:n}=t;Yn(e),I(e,{paddingRight:"",display:""}),to(t);const o=ze.relatedTarget||s.find(Un);// istanbul ignore else @preserve +o&&ht(o),Gn.relatedTarget=n,E(e,Gn),Me(e)},so=t=>{const{element:s,relatedTarget:e}=t;ht(s),to(t,!0),Jn.relatedTarget=e,E(s,Jn),Me(s)},no=t=>{const{element:s,hasFade:e}=t;I(s,{display:"block"}),Qn(t);// istanbul ignore else @preserve +Mt(s)||I(wt(s),{overflow:"hidden"}),h(s,m),At(s,le),O(s,Pe,"true"),e?A(s,()=>so(t)):so(t)},oo=t=>{const{element:s,options:e,hasFade:n}=t;e.backdrop&&n&&f(k,m)&&!Mt(s)?(je(),A(k,()=>eo(t))):eo(t)},tc=t=>{const{target:s}=t,e=s&&M(s,qn),n=e&&V(e),o=n&&ve(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.toggle()}},ec=({code:t,target:s})=>{const e=P(Vn,w(s)),n=e&&ve(e);// istanbul ignore else @preserve +if(n){const{options:o}=n;// istanbul ignore else @preserve +o.keyboard&&t===ss&&f(e,m)&&(n.relatedTarget=null,n.hide())}},sc=t=>{var n,o;const{currentTarget:s}=t,e=s&&ve(s);// istanbul ignore else @preserve +if(e&&s&&!u.get(s)){const{options:i,isStatic:c,modalDialog:a}=e,{backdrop:r}=i,{target:l}=t,g=(o=(n=w(s))==null?void 0:n.getSelection())==null?void 0:o.toString().length,p=a.contains(l),v=l&&M(l,Ji);// istanbul ignore else @preserve +c&&!p?u.set(s,()=>{h(s,Zn),A(a,()=>nc(e))},17):(v||!g&&!c&&!p&&r)&&(e.relatedTarget=v||null,e.hide(),t.preventDefault())}},nc=t=>{const{element:s,modalDialog:e}=t,n=(ge(e)||0)+17;b(s,Zn),u.set(s,()=>u.clear(s),n)};class Qt extends nt{constructor(e,n){super(e,n);d(this,"update",()=>{// istanbul ignore else @preserve +f(this.element,m)&&Qn(this)});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{triggers:o}=this;// istanbul ignore else @preserve +o.length&&o.forEach(i=>n(i,N,tc))});const{element:o}=this,i=P(`.${U}-dialog`,o);// istanbul ignore else @preserve +i&&(this.modalDialog=i,this.triggers=[...Z(qn,w(o))].filter(c=>V(c)===o),this.isStatic=this.options.backdrop==="static",this.hasFade=f(o,F),this.relatedTarget=null,this._toggleEventListeners(!0))}get name(){return Es}get defaults(){return Gi}toggle(){f(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,hasFade:o,relatedTarget:i}=this,{backdrop:c}=n;let a=0;// istanbul ignore else @preserve +if(!f(e,m)&&(ze.relatedTarget=i||void 0,E(e,ze),!ze.defaultPrevented)){const r=Mt(e);// istanbul ignore else @preserve +if(r&&r!==e){const l=ve(r)||W(r,$s);// istanbul ignore else @preserve +l&&l.hide()}if(c)Ts(k)?Cs(!0):Xn(e,o,!0),a=ge(k),Kn(),setTimeout(()=>no(this),a);else{no(this);// istanbul ignore else @preserve +r&&f(k,m)&&je()}}}hide(){const{element:e,hasFade:n,relatedTarget:o}=this;// istanbul ignore else @preserve +if(f(e,m)){Ss.relatedTarget=o||void 0,E(e,Ss);// istanbul ignore else @preserve +Ss.defaultPrevented||(b(e,m),O(e,le,"true"),At(e,Pe),n?A(e,()=>oo(this)):oo(this))}}dispose(){const e={...this},{modalDialog:n,hasFade:o}=e,i=()=>setTimeout(()=>super.dispose(),17);this.hide(),this._toggleEventListeners(),o?A(n,i):i()}}d(Qt,"selector",Zi),d(Qt,"init",Qi),d(Qt,"getInstance",ve);const oc=`.${G}`,Hs=`[${at}="${G}"]`,ic=`[${_e}="${G}"]`,Ve=`${G}-toggling`,cc={backdrop:!0,keyboard:!0,scroll:!1},be=t=>W(t,$s),ac=t=>new te(t),Xe=$(`show.bs.${G}`),io=$(`shown.bs.${G}`),Ps=$(`hide.bs.${G}`),co=$(`hidden.bs.${G}`),lc=t=>{const{element:s}=t,{clientHeight:e,scrollHeight:n}=ft(s);Bn(s,e!==n)},ao=(t,s)=>{const e=s?_:B,n=w(t.element);e(n,De,fc),e(n,N,hc)},lo=t=>{const{element:s,options:e}=t;// istanbul ignore else @preserve +e.scroll||(lc(t),I(wt(s),{overflow:"hidden"})),h(s,Ve),h(s,m),I(s,{visibility:"visible"}),A(s,()=>gc(t))},rc=t=>{const{element:s,options:e}=t,n=Mt(s);s.blur(),!n&&e.backdrop&&f(k,m)&&je(),A(s,()=>pc(t))},dc=t=>{const s=M(t.target,Hs),e=s&&V(s),n=e&&be(e);// istanbul ignore else @preserve +if(n){n.relatedTarget=s,n.toggle();// istanbul ignore else @preserve +s&&s.tagName==="A"&&t.preventDefault()}},hc=t=>{const{target:s}=t,e=P(ys,w(s)),n=P(ic,e),o=e&&be(e);// istanbul ignore else @preserve +if(o){const{options:i,triggers:c}=o,{backdrop:a}=i,r=M(s,Hs),l=w(e).getSelection();// istanbul ignore else: a filter is required here @preserve +if(!k.contains(s)||a!=="static"){// istanbul ignore else @preserve +!(l&&l.toString().length)&&(!e.contains(s)&&a&&(!r||c.includes(s))||n&&n.contains(s))&&(o.relatedTarget=n&&n.contains(s)?n:null,o.hide());// istanbul ignore next @preserve +r&&r.tagName==="A"&&t.preventDefault()}}},fc=({code:t,target:s})=>{const e=P(ys,w(s)),n=e&&be(e);// istanbul ignore else @preserve +if(n){// istanbul ignore else @preserve +n.options.keyboard&&t===ss&&(n.relatedTarget=null,n.hide())}},gc=t=>{const{element:s}=t;b(s,Ve),At(s,le),O(s,Pe,"true"),O(s,"role","dialog"),E(s,io),ao(t,!0),ht(s),Me(s)},pc=t=>{const{element:s,triggers:e}=t;O(s,le,"true"),At(s,Pe),At(s,"role"),I(s,{visibility:""});const n=Xe.relatedTarget||e.find(Un);// istanbul ignore else @preserve +n&&ht(n),Yn(s),E(s,co),b(s,Ve),Me(s),Mt(s)||ao(t)};class te extends nt{constructor(e,n){super(e,n);d(this,"_toggleEventListeners",e=>{const n=e?_:B;this.triggers.forEach(o=>n(o,N,dc))});const{element:o}=this;this.triggers=[...Z(Hs,w(o))].filter(i=>V(i)===o),this.relatedTarget=null,this._toggleEventListeners(!0)}get name(){return $s}get defaults(){return cc}toggle(){f(this.element,m)?this.hide():this.show()}show(){const{element:e,options:n,relatedTarget:o}=this;let i=0;if(!f(e,m)&&(Xe.relatedTarget=o||void 0,io.relatedTarget=o||void 0,E(e,Xe),!Xe.defaultPrevented)){const c=Mt(e);if(c&&c!==e){const a=be(c)||W(c,Es);// istanbul ignore else @preserve +a&&a.hide()}if(n.backdrop)Ts(k)?Cs():Xn(e,!0),i=ge(k),Kn(),setTimeout(()=>lo(this),i);else{lo(this);// istanbul ignore next @preserve - this test was done on Modal +c&&f(k,m)&&je()}}}hide(){const{element:e,relatedTarget:n}=this;f(e,m)&&(Ps.relatedTarget=n||void 0,co.relatedTarget=n||void 0,E(e,Ps),Ps.defaultPrevented||(h(e,Ve),b(e,m),rc(this)))}dispose(){const{element:e}=this,n=f(e,m),o=()=>setTimeout(()=>super.dispose(),1);if(this.hide(),this._toggleEventListeners(),n){A(e,o);// istanbul ignore next @preserve +}else o()}}d(te,"selector",oc),d(te,"init",ac),d(te,"getInstance",be);const _t="popover",Ke="Popover",ut="tooltip",ro=t=>{const s=t===ut,e=s?`${t}-inner`:`${t}-body`,n=s?"":`

`,o=`
`,i=`
`;return`
${n+o+i}
`},ho={top:"top",bottom:"bottom",left:"start",right:"end"},Ds=t=>{const s=/\b(top|bottom|start|end)+/,{element:e,tooltip:n,container:o,options:i,arrow:c}=t;// istanbul ignore else @preserve +if(n){const a={...ho},r=Et(e);I(n,{top:"",left:"",right:"",bottom:""});const l=t.name===Ke,{offsetWidth:g,offsetHeight:p}=n,{clientWidth:v,clientHeight:L,offsetWidth:tt}=ft(e);let{placement:y}=i;const{clientWidth:K,offsetWidth:q}=o,mt=z(o,"position")==="fixed",S=Math.abs(mt?K-q:v-tt),it=r&&mt?S:0,lt=v-(r?0:S)-1,{width:j,height:Y,left:D,right:ce,top:Ht}=pe(e,!0),{x:R,y:Pt}={x:D,y:Ht};I(c,{top:"",left:"",right:"",bottom:""});let Ft=0,Te="",Dt=0,Os="",ae="",Ye="",Ms="";const Wt=c.offsetWidth||0,xt=c.offsetHeight||0,_s=Wt/2;let ye=Ht-p-xt<0,Ce=Ht+p+Y+xt>=L,Se=D-g-Wt=lt;const Ue=["left","right"],Bs=["top","bottom"];ye=Ue.includes(y)?Ht+Y/2-p/2-xt<0:ye,Ce=Ue.includes(y)?Ht+p/2+Y/2+xt>=L:Ce,Se=Bs.includes(y)?D+j/2-g/2=lt:He,y=Ue.includes(y)&&Se&&He?"top":y,y=y==="top"&&ye?"bottom":y,y=y==="bottom"&&Ce?"top":y,y=y==="left"&&Se?"right":y,y=y==="right"&&He?"left":y,n.className.includes(y)||(n.className=n.className.replace(s,a[y]));// istanbul ignore else @preserve +Ue.includes(y)?(y==="left"?Dt=R-g-(l?Wt:0):Dt=R+j+(l?Wt:0),ye&&Ce?(Ft=0,Te=0,ae=Ht+Y/2-xt/2):ye?(Ft=Pt,Te="",ae=Y/2-Wt):Ce?(Ft=Pt-p+Y,Te="",ae=p-Y/2-Wt):(Ft=Pt-p/2+Y/2,ae=p/2-xt/2)):Bs.includes(y)&&(y==="top"?Ft=Pt-p-(l?xt:0):Ft=Pt+Y+(l?xt:0),Se?(Dt=0,Ye=R+j/2-_s):He?(Dt="auto",Os=0,Ms=j/2+lt-ce-_s):(Dt=R-g/2+j/2,Ye=g/2-_s)),I(n,{top:`${Ft}px`,bottom:Te===""?"":`${Te}px`,left:Dt==="auto"?Dt:`${Dt}px`,right:Os!==""?`${Os}px`:""});// istanbul ignore else @preserve +T(c)&&(ae!==""&&(c.style.top=`${ae}px`),Ye!==""?c.style.left=`${Ye}px`:Ms!==""&&(c.style.right=`${Ms}px`));const Yc=$(`updated.bs.${zt(t.name)}`);E(e,Yc)}},xs={template:ro(ut),title:"",customClass:"",trigger:"hover focus",placement:"top",sanitizeFn:void 0,animation:!0,delay:200,container:document.body,content:"",dismissible:!1,btnClose:""},fo="data-original-title",Bt="Tooltip",Ct=(t,s,e)=>{// istanbul ignore else @preserve +if(fe(s)&&s.length){let n=s.trim();ri(e)&&(n=e(n));const i=new DOMParser().parseFromString(n,"text/html");t.append(...i.body.childNodes)}else T(s)?t.append(s):(di(s)||li(s)&&s.every(x))&&t.append(...s)},uc=t=>{const s=t.name===Bt,{id:e,element:n,options:o}=t,{title:i,placement:c,template:a,animation:r,customClass:l,sanitizeFn:g,dismissible:p,content:v,btnClose:L}=o,tt=s?ut:_t,y={...ho};let K=[],q=[];Et(n)&&(y.left="end",y.right="start");const ie=`bs-${tt}-${y[c]}`;let mt;if(T(a))mt=a;else{const it=vt("div");Ct(it,a,g),mt=it.firstChild}t.tooltip=T(mt)?mt.cloneNode(!0):void 0;const{tooltip:S}=t;// istanbul ignore else @preserve +if(S){O(S,"id",e),O(S,"role",ut);const it=s?`${ut}-inner`:`${_t}-body`,lt=s?null:P(`.${_t}-header`,S),j=P(`.${it}`,S);t.arrow=P(`.${tt}-arrow`,S);const{arrow:Y}=t;if(T(i))K=[i.cloneNode(!0)];else{const D=vt("div");Ct(D,i,g),K=[...D.childNodes]}if(T(v))q=[v.cloneNode(!0)];else{const D=vt("div");Ct(D,v,g),q=[...D.childNodes]}if(p)if(i)if(T(L))K=[...K,L.cloneNode(!0)];else{const D=vt("div");Ct(D,L,g),K=[...K,D.firstChild]}else{// istanbul ignore else @preserve +if(lt&<.remove(),T(L))q=[...q,L.cloneNode(!0)];else{const D=vt("div");Ct(D,L,g),q=[...q,D.firstChild]}}// istanbul ignore else @preserve +if(s)i&&j&&Ct(j,i,g);else{// istanbul ignore else @preserve +i&<&&Ct(lt,K,g);// istanbul ignore else @preserve +v&&j&&Ct(j,q,g),t.btn=P(".btn-close",S)||void 0}h(S,"position-fixed"),h(Y,"position-absolute");// istanbul ignore else @preserve +f(S,tt)||h(S,tt);// istanbul ignore else @preserve +r&&!f(S,F)&&h(S,F);// istanbul ignore else @preserve +l&&!f(S,l)&&h(S,l);// istanbul ignore else @preserve +f(S,ie)||h(S,ie)}},mc=t=>{const s=["HTML","BODY"],e=[];let{parentNode:n}=t;for(;n&&!s.includes(n.nodeName);){n=ai(n);// istanbul ignore else @preserve +Gs(n)||hi(n)||e.push(n)}return e.find((o,i)=>z(o,"position")!=="relative"&&e.slice(i+1).every(c=>z(c,"position")==="static")?o:null)||w(t).body},vc=`[${at}="${ut}"],[data-tip="${ut}"]`,go="title";let po=t=>W(t,Bt);const bc=t=>new St(t),wc=t=>{const{element:s,tooltip:e,container:n,offsetParent:o}=t;At(s,ct),Fn(e,n===o?n:o)},we=t=>{const{tooltip:s,container:e,offsetParent:n}=t;return s&&Ts(s,e===n?e:n)},Ec=(t,s)=>{const{element:e}=t;t._toggleEventListeners();// istanbul ignore else @preserve +de(e,fo)&&t.name===Bt&&wo(t);// istanbul ignore else @preserve +s&&s()},uo=(t,s)=>{const e=s?_:B,{element:n}=t;e(w(n),Qe,t.handleTouch,st),[Ie,Ae].forEach(o=>{e(Xt(n),o,t.update,st)})},mo=t=>{const{element:s}=t,e=$(`shown.bs.${zt(t.name)}`);uo(t,!0),E(s,e),u.clear(s,"in")},vo=t=>{const{element:s}=t,e=$(`hidden.bs.${zt(t.name)}`);uo(t),wc(t),E(s,e),u.clear(s,"out")},bo=(t,s)=>{const e=s?_:B,{element:n,container:o,offsetParent:i}=t,{offsetHeight:c,scrollHeight:a}=o,r=M(n,`.${U}`),l=M(n,`.${G}`);// istanbul ignore else @preserve +const g=Xt(n),v=o===i&&c!==a?o:g;e(v,Ae,t.update,st),e(v,Ie,t.update,st),r&&e(r,`hide.bs.${U}`,t.handleHide),l&&e(l,`hide.bs.${G}`,t.handleHide)},wo=(t,s)=>{const e=[fo,go],{element:n}=t;O(n,e[s?0:1],s||et(n,e[0])||""),At(n,e[s?1:0])};class St extends nt{constructor(e,n){super(e,n);d(this,"handleFocus",()=>ht(this.element));d(this,"handleShow",()=>this.show());d(this,"handleHide",()=>this.hide());d(this,"update",()=>{Ds(this)});d(this,"toggle",()=>{const{tooltip:e}=this;e&&!we(this)?this.show():this.hide()});d(this,"handleTouch",({target:e})=>{const{tooltip:n,element:o}=this;// istanbul ignore if @preserve +n&&n.contains(e)||e===o||e&&o.contains(e)||this.hide()});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,options:i,btn:c}=this,{trigger:a}=i,l=!!(this.name!==Bt&&i.dismissible);// istanbul ignore else @preserve +a.includes("manual")||(this.enabled=!!e,a.split(" ").forEach(p=>{// istanbul ignore else @preserve +if(p===Vo){n(o,Ws,this.handleShow),n(o,xe,this.handleShow);// istanbul ignore else @preserve +l||(n(o,Ge,this.handleHide),n(w(o),Qe,this.handleTouch,st))}else if(p===N)n(o,p,l?this.handleShow:this.toggle);else if(p===Ze){n(o,Je,this.handleShow);// istanbul ignore else @preserve +l||n(o,Fs,this.handleHide);// istanbul ignore else @preserve +ti&&n(o,N,this.handleFocus)}// istanbul ignore else @preserve +l&&c&&n(c,N,this.handleHide)}))});const{element:o}=this,i=this.name===Bt,c=i?ut:_t,a=i?Bt:Ke;// istanbul ignore next @preserve: this is to set Popover too +po=l=>W(l,a),this.enabled=!0,this.id=`${c}-${en(o,c)}`;const{options:r}=this;if(!(!r.title&&i||!i&&!r.content)){dt(xs,{titleAttr:""});// istanbul ignore else @preserve +de(o,go)&&i&&typeof r.title=="string"&&wo(this,r.title),this.container=mc(o),this.offsetParent=["sticky","fixed"].some(l=>z(this.container,"position")===l)?this.container:w(this.element).body,uc(this),this._toggleEventListeners(!0)}}get name(){return Bt}get defaults(){return xs}show(){const{options:e,tooltip:n,element:o,container:i,offsetParent:c,id:a}=this,{animation:r}=e,l=u.get(o,"out"),g=i===c?i:c;u.clear(o,"out"),n&&!l&&!we(this)&&u.set(o,()=>{const p=$(`show.bs.${zt(this.name)}`);E(o,p);// istanbul ignore else @preserve +if(!p.defaultPrevented){Rn(n,g),O(o,ct,`#${a}`),this.update(),bo(this,!0);// istanbul ignore else @preserve +f(n,m)||h(n,m);// istanbul ignore else @preserve +r?A(n,()=>mo(this)):mo(this)}},17,"in")}hide(){const{options:e,tooltip:n,element:o}=this,{animation:i,delay:c}=e;u.clear(o,"in");// istanbul ignore else @preserve +n&&we(this)&&u.set(o,()=>{const a=$(`hide.bs.${zt(this.name)}`);E(o,a);// istanbul ignore else @preserve +if(!a.defaultPrevented){this.update(),b(n,m),bo(this);// istanbul ignore else @preserve +i?A(n,()=>vo(this)):vo(this)}},c+17,"out")}enable(){const{enabled:e}=this;// istanbul ignore else @preserve +e||(this._toggleEventListeners(!0),this.enabled=!e)}disable(){const{tooltip:e,enabled:n}=this;// istanbul ignore else @preserve +n&&(e&&we(this)&&this.hide(),this._toggleEventListeners(),this.enabled=!n)}toggleEnabled(){this.enabled?this.disable():this.enable()}dispose(){const{tooltip:e,options:n}=this,o={...this,name:this.name},i=()=>setTimeout(()=>Ec(o,()=>super.dispose()),17);n.animation&&we(o)?(this.options.delay=0,this.hide(),A(e,i)):i()}}d(St,"selector",vc),d(St,"init",bc),d(St,"getInstance",po),d(St,"styleTip",Ds);const $c=`[${at}="${_t}"],[data-tip="${_t}"]`,Tc=dt({},xs,{template:ro(_t),content:"",dismissible:!1,btnClose:''}),yc=t=>W(t,Ke),Cc=t=>new Rt(t);class Rt extends St{constructor(e,n){super(e,n);d(this,"show",()=>{super.show();const{options:e,btn:n}=this;// istanbul ignore else @preserve +e.dismissible&&n&&setTimeout(()=>ht(n),17)})}get name(){return Ke}get defaults(){return Tc}}d(Rt,"selector",$c),d(Rt,"init",Cc),d(Rt,"getInstance",yc),d(Rt,"styleTip",Ds);const Sc="scrollspy",Eo="ScrollSpy",Hc='[data-bs-spy="scroll"]',Pc={offset:10,target:null},Dc=t=>W(t,Eo),xc=t=>new ee(t),$o=$(`activate.bs.${Sc}`),Ac=t=>{const{target:s,scrollTarget:e,options:n,itemsLength:o,scrollHeight:i,element:c}=t,{offset:a}=n,r=os(e),l=s&&as("A",s),g=e?To(e):i;t.scrollTop=r?e.scrollY:e.scrollTop;// istanbul ignore else @preserve +if(l&&(g!==i||o!==l.length)){let p,v,L;t.items=[],t.offsets=[],t.scrollHeight=g,t.maxScroll=t.scrollHeight-Ic(t),[...l].forEach(tt=>{p=et(tt,"href"),v=p&&p.charAt(0)==="#"&&p.slice(-1)!=="#"&&P(p,w(c)),v&&(t.items.push(tt),L=pe(v),t.offsets.push((r?L.top+t.scrollTop:v.offsetTop)-a))}),t.itemsLength=t.items.length}},To=t=>T(t)?t.scrollHeight:ft(t).scrollHeight,Ic=({element:t,scrollTarget:s})=>os(s)?s.innerHeight:pe(t).height,yo=t=>{[...as("A",t)].forEach(s=>{f(s,C)&&b(s,C)})},Co=(t,s)=>{const{target:e,element:n}=t;// istanbul ignore else @preserve +T(e)&&yo(e),t.activeItem=s,h(s,C);const o=[];let i=s;for(;i!==wt(n);)i=i.parentElement,(f(i,"nav")||f(i,"dropdown-menu"))&&o.push(i);o.forEach(c=>{const a=c.previousElementSibling;// istanbul ignore else @preserve +a&&!f(a,C)&&h(a,C)}),$o.relatedTarget=s,E(n,$o)};class ee extends nt{constructor(e,n){super(e,n);d(this,"refresh",()=>{const{target:e}=this;// istanbul ignore else @preserve +if(T(e)&&e.offsetHeight>0){Ac(this);const{scrollTop:n,maxScroll:o,itemsLength:i,items:c,activeItem:a}=this;if(n>=o){const l=c[i-1];// istanbul ignore else @preserve +a!==l&&Co(this,l);return}const{offsets:r}=this;// istanbul ignore else @preserve +if(a&&n0){this.activeItem=null;// istanbul ignore else @preserve +e&&yo(e);return}c.forEach((l,g)=>{a!==l&&n>=r[g]&&(typeof r[g+1]>"u"||n{(e?_:B)(this.scrollTarget,Ie,this.refresh,st)});const{element:o,options:i}=this;this.target=P(i.target,w(o)),this.target&&(this.scrollTarget=o.clientHeightW(t,So),Lc=t=>new se(t),As=$(`show.bs.${Ee}`),Do=$(`shown.bs.${Ee}`),Is=$(`hide.bs.${Ee}`),xo=$(`hidden.bs.${Ee}`),$e=new Map,Ao=t=>{const{tabContent:s,nav:e}=t;// istanbul ignore else @preserve +s&&f(s,Nt)&&(s.style.height="",b(s,Nt));// istanbul ignore else @preserve +e&&u.clear(e)},Io=t=>{const{element:s,tabContent:e,content:n,nav:o}=t,{tab:i}=T(o)&&$e.get(o)||{tab:null};// istanbul ignore next @preserve +// istanbul ignore else @preserve +if(e&&n&&f(n,F)){const{currentHeight:c,nextHeight:a}=$e.get(s)||{currentHeight:0,nextHeight:0};// istanbul ignore next @preserve +// istanbul ignore else @preserve: vitest won't validate this branch +c!==a?setTimeout(()=>{e.style.height=`${a}px`,Lt(e),A(e,()=>Ao(t))},50):Ao(t)}else o&&u.clear(o);Do.relatedTarget=i,E(s,Do)},Lo=t=>{const{element:s,content:e,tabContent:n,nav:o}=t,{tab:i,content:c}=o&&$e.get(o)||{tab:null,content:null};let a=0;// istanbul ignore else @preserve +n&&e&&f(e,F)&&([c,e].forEach(r=>{// istanbul ignore else @preserve +T(r)&&h(r,"overflow-hidden")}),a=T(c)?c.scrollHeight:0),As.relatedTarget=i,xo.relatedTarget=s,E(s,As);// istanbul ignore else @preserve +if(!As.defaultPrevented){// istanbul ignore else @preserve +e&&h(e,C);// istanbul ignore else @preserve +c&&b(c,C);// istanbul ignore else @preserve +if(n&&e&&f(e,F)){const r=e.scrollHeight;$e.set(s,{currentHeight:a,nextHeight:r,tab:null,content:null}),h(n,Nt),n.style.height=`${a}px`,Lt(n),[c,e].forEach(l=>{// istanbul ignore else @preserve +l&&b(l,"overflow-hidden")})}if(e&&e&&f(e,F))setTimeout(()=>{h(e,m),A(e,()=>{Io(t)})},1);else{// istanbul ignore else @preserve +e&&h(e,m),Io(t)}// istanbul ignore else @preserve +i&&E(i,xo)}},ko=t=>{const{nav:s}=t;// istanbul ignore next @preserve +if(!T(s))return{tab:null,content:null};const e=gt(C,s);let n=null;// istanbul ignore else @preserve +e.length===1&&!Ot.some(i=>f(e[0].parentElement,i))?[n]=e:e.length>1&&(n=e[e.length-1]);const o=T(n)?V(n):null;return{tab:n,content:o}},No=t=>{// istanbul ignore next @preserve +if(!T(t))return null;const s=M(t,`.${Ot.join(",.")}`);return s?P(`.${Ot[0]}-toggle`,s):null},kc=t=>{const s=Po(t.target);// istanbul ignore else @preserve +s&&(t.preventDefault(),s.show())};class se extends nt{constructor(e){super(e);d(this,"_toggleEventListeners",e=>{(e?_:B)(this.element,N,kc)});const{element:n}=this,o=V(n);// istanbul ignore else @preserve +if(o){const i=M(n,".nav"),c=M(o,".tab-content");this.nav=i,this.content=o,this.tabContent=c,this.dropdown=No(n);const{tab:a}=ko(this);if(i&&!a){const r=P(Ho,i),l=r&&V(r);// istanbul ignore else @preserve +l&&(h(r,C),h(l,m),h(l,C),O(n,qe,"true"))}this._toggleEventListeners(!0)}}get name(){return So}show(){const{element:e,content:n,nav:o,dropdown:i}=this;// istanbul ignore else @preserve +if(!(o&&u.get(o))&&!f(e,C)){const{tab:c,content:a}=ko(this);// istanbul ignore else @preserve +o&&$e.set(o,{tab:c,content:a,currentHeight:0,nextHeight:0}),Is.relatedTarget=e;// istanbul ignore else @preserve +if(T(c)){E(c,Is);// istanbul ignore else @preserve +if(!Is.defaultPrevented){h(e,C),O(e,qe,"true");const r=T(c)&&No(c);r&&f(r,C)&&b(r,C);// istanbul ignore else @preserve +if(o){const l=()=>{// istanbul ignore else @preserve +c&&(b(c,C),O(c,qe,"false")),i&&!f(i,C)&&h(i,C)};a&&(f(a,F)||n&&f(n,F))?u.set(o,l,1):l()}// istanbul ignore else @preserve +a&&(b(a,m),f(a,F)?A(a,()=>Lo(this)):Lo(this))}}}}dispose(){this._toggleEventListeners(),super.dispose()}}d(se,"selector",Ho),d(se,"init",Lc),d(se,"getInstance",Po);const Q="toast",Oo="Toast",Nc=`.${Q}`,Oc=`[${_e}="${Q}"]`,Mo=`[${at}="${Q}"]`,ne="showing",_o="hide",Mc={animation:!0,autohide:!0,delay:5e3},Ls=t=>W(t,Oo),_c=t=>new oe(t),Bo=$(`show.bs.${Q}`),Bc=$(`shown.bs.${Q}`),Ro=$(`hide.bs.${Q}`),Rc=$(`hidden.bs.${Q}`),Fo=t=>{const{element:s,options:e}=t;b(s,ne),u.clear(s,ne),E(s,Bc);// istanbul ignore else @preserve +e.autohide&&u.set(s,()=>t.hide(),e.delay,Q)},Wo=t=>{const{element:s}=t;b(s,ne),b(s,m),h(s,_o),u.clear(s,Q),E(s,Rc)},Fc=t=>{const{element:s,options:e}=t;h(s,ne),e.animation?(Lt(s),A(s,()=>Wo(t))):Wo(t)},Wc=t=>{const{element:s,options:e}=t;u.set(s,()=>{b(s,_o),Lt(s),h(s,m),h(s,ne),e.animation?A(s,()=>Fo(t)):Fo(t)},17,ne)},jc=t=>{const{target:s}=t,e=s&&M(s,Mo),n=e&&V(e),o=n&&Ls(n);// istanbul ignore else @preserve +if(o){// istanbul ignore else @preserve +e&&e.tagName==="A"&&t.preventDefault(),o.relatedTarget=e,o.show()}},zc=t=>{const s=t.target,e=Ls(s),{type:n,relatedTarget:o}=t;// istanbul ignore else @preserve: a solid filter is required +e&&s!==o&&!s.contains(o)&&([xe,Je].includes(n)?u.clear(s,Q):u.set(s,()=>e.hide(),e.options.delay,Q))};class oe extends nt{constructor(e,n){super(e,n);d(this,"show",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&!n&&(E(e,Bo),Bo.defaultPrevented||Wc(this))});d(this,"hide",()=>{const{element:e,isShown:n}=this;// istanbul ignore else @preserve +e&&n&&(E(e,Ro),Ro.defaultPrevented||Fc(this))});d(this,"_toggleEventListeners",e=>{const n=e?_:B,{element:o,triggers:i,dismiss:c,options:a,hide:r}=this;// istanbul ignore else @preserve +c&&n(c,N,r);// istanbul ignore else @preserve +a.autohide&&[Je,Fs,xe,Ge].forEach(l=>n(o,l,zc));// istanbul ignore else @preserve +i.length&&i.forEach(l=>n(l,N,jc))});const{element:o,options:i}=this;i.animation&&!f(o,F)?h(o,F):!i.animation&&f(o,F)&&b(o,F),this.dismiss=P(Oc,o),this.triggers=[...Z(Mo,w(o))].filter(c=>V(c)===o),this._toggleEventListeners(!0)}get name(){return Oo}get defaults(){return Mc}get isShown(){return f(this.element,m)}dispose(){const{element:e,isShown:n}=this;this._toggleEventListeners(),u.clear(e,Q),n&&b(e,m),super.dispose()}}d(oe,"selector",Nc),d(oe,"init",_c),d(oe,"getInstance",Ls);const ks=new Map;[Yt,Ut,qt,Zt,Gt,Qt,te,Rt,ee,se,oe,St].forEach(t=>ks.set(t.prototype.name,t));const Vc=(t,s)=>{[...s].forEach(e=>t(e))},Xc=(t,s)=>{const e=It.getAllFor(t);e&&[...e].forEach(([n,o])=>{s.contains(n)&&o.dispose()})},Ns=t=>{const s=t&&t.nodeName?t:document,e=[...as("*",s)];ks.forEach(n=>{const{init:o,selector:i}=n;Vc(o,e.filter(c=>nn(c,i)))})},Kc=t=>{const s=t&&t.nodeName?t:document;ks.forEach(e=>{Xc(e.prototype.name,s)})};return document.body?Ns():_(document,"DOMContentLoaded",()=>Ns(),{once:!0}),H.Alert=Yt,H.Button=Ut,H.Carousel=qt,H.Collapse=Zt,H.Dropdown=Gt,H.Modal=Qt,H.Offcanvas=te,H.Popover=Rt,H.ScrollSpy=ee,H.Tab=se,H.Toast=oe,H.Tooltip=St,H.initCallback=Ns,H.removeDataAPI=Kc,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"}),H}({}); //# sourceMappingURL=bootstrap-native.js.map diff --git a/docs/assets/js/bootstrap-native.js.map b/docs/assets/js/bootstrap-native.js.map index 0e4460d0..d19baaec 100644 --- a/docs/assets/js/bootstrap-native.js.map +++ b/docs/assets/js/bootstrap-native.js.map @@ -1 +1 @@ -{"version":3,"file":"bootstrap-native.js","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.3/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.5/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const pe = \"aria-checked\", me = \"aria-description\", fe = \"aria-describedby\", ge = \"aria-expanded\", ve = \"aria-haspopup\", Ee = \"aria-hidden\", be = \"aria-label\", he = \"aria-labelledby\", ye = \"aria-modal\", we = \"aria-pressed\", Ae = \"aria-selected\", Se = \"aria-valuemin\", Ne = \"aria-valuemax\", ke = \"aria-valuenow\", Me = \"aria-valuetext\", q = \"abort\", G = \"beforeunload\", J = \"blur\", K = \"change\", X = \"contextmenu\", P = \"DOMContentLoaded\", Y = \"DOMMouseScroll\", Z = \"error\", $ = \"focus\", _ = \"focusin\", tt = \"focusout\", et = \"gesturechange\", nt = \"gestureend\", ot = \"gesturestart\", st = \"keydown\", ct = \"keypress\", rt = \"keyup\", at = \"load\", it = \"click\", ut = \"dblclick\", lt = \"mousedown\", dt = \"mouseup\", pt = \"hover\", mt = \"mouseenter\", ft = \"mouseleave\", gt = \"mousein\", vt = \"mouseout\", Et = \"mouseover\", bt = \"mousemove\", ht = \"mousewheel\", yt = \"move\", wt = \"orientationchange\", At = \"pointercancel\", St = \"pointerdown\", Nt = \"pointerleave\", kt = \"pointermove\", Mt = \"pointerup\", Tt = \"readystatechange\", Dt = \"reset\", Ct = \"resize\", Ot = \"select\", Lt = \"selectend\", It = \"selectstart\", zt = \"scroll\", xt = \"submit\", Vt = \"touchstart\", Bt = \"touchmove\", Ht = \"touchcancel\", Pt = \"touchend\", Ft = \"unload\", Te = {\n DOMContentLoaded: P,\n DOMMouseScroll: Y,\n abort: q,\n beforeunload: G,\n blur: J,\n change: K,\n click: it,\n contextmenu: X,\n dblclick: ut,\n error: Z,\n focus: $,\n focusin: _,\n focusout: tt,\n gesturechange: et,\n gestureend: nt,\n gesturestart: ot,\n hover: pt,\n keydown: st,\n keypress: ct,\n keyup: rt,\n load: at,\n mousedown: lt,\n mousemove: bt,\n mousein: gt,\n mouseout: vt,\n mouseenter: mt,\n mouseleave: ft,\n mouseover: Et,\n mouseup: dt,\n mousewheel: ht,\n move: yt,\n orientationchange: wt,\n pointercancel: At,\n pointerdown: St,\n pointerleave: Nt,\n pointermove: kt,\n pointerup: Mt,\n readystatechange: Tt,\n reset: Dt,\n resize: Ct,\n scroll: zt,\n select: Ot,\n selectend: Lt,\n selectstart: It,\n submit: xt,\n touchcancel: Ht,\n touchend: Pt,\n touchmove: Bt,\n touchstart: Vt,\n unload: Ft\n}, De = \"drag\", Ce = \"dragstart\", Oe = \"dragenter\", Le = \"dragleave\", Ie = \"dragover\", ze = \"dragend\", xe = \"loadstart\", Ve = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Be = { down: \"mousedown\", up: \"mouseup\" }, He = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), Pe = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, Fe = { in: \"focusin\", out: \"focusout\" }, Ue = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, We = \"Alt\", Re = \"ArrowDown\", Qe = \"ArrowUp\", je = \"ArrowLeft\", qe = \"ArrowRight\", Ge = \"Backspace\", Je = \"CapsLock\", Ke = \"Control\", Xe = \"Delete\", Ye = \"Enter\", Ze = \"NumpadEnter\", $e = \"Escape\", _e = \"Insert\", tn = \"Meta\", en = \"Pause\", nn = \"ScrollLock\", on = \"Shift\", sn = \"Space\", cn = \"Tab\", Ut = \"animationDuration\", Wt = \"animationDelay\", F = \"animationName\", D = \"animationend\", Rt = \"transitionDuration\", Qt = \"transitionDelay\", C = \"transitionend\", U = \"transitionProperty\", rn = \"addEventListener\", an = \"removeEventListener\", un = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, ln = \"offsetHeight\", dn = \"offsetWidth\", pn = \"scrollHeight\", mn = \"scrollWidth\", fn = \"tabindex\", jt = navigator.userAgentData, A = jt, { userAgent: qt } = navigator, S = qt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst gn = O, x = /(iPhone|iPod|iPad)/, vn = A ? A.brands.some((t) => x.test(t.brand)) : (\n /* istanbul ignore next */\n x.test(S)\n), En = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next */\n !1\n), { head: N } = document, bn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), Gt = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Jt = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, Kt = (t, e, n, o) => {\n const s = (r) => {\n (r.target === t || r.currentTarget === t) && (n.apply(t, [r]), Jt(t, e, s, o));\n };\n Gt(t, e, s, o);\n}, Xt = () => {\n}, hn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n Kt(document, P, Xt, e);\n } catch {\n }\n return t;\n})(), yn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), wn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, An = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Sn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), Yt = (t, e) => t.getAttribute(e), Nn = (t, e, n) => e.getAttributeNS(t, n), kn = (t, e) => t.hasAttribute(e), Mn = (t, e, n) => e.hasAttributeNS(t, n), Tn = (t, e, n) => t.setAttribute(e, n), Dn = (t, e, n, o) => e.setAttributeNS(t, n, o), Cn = (t, e) => t.removeAttribute(e), On = (t, e, n) => e.removeAttributeNS(t, n), Ln = (t, ...e) => {\n t.classList.add(...e);\n}, In = (t, ...e) => {\n t.classList.remove(...e);\n}, zn = (t, e) => t.classList.contains(e), { body: xn } = document, { documentElement: Vn } = document, Bn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, u = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!u(t)) return;\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!u(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n !n || !u(t) || (n.delete(t), n.size === 0 && E.delete(e));\n }\n}, Hn = (t, e) => L.get(t, e), k = (t) => typeof t == \"string\" || !1, W = (t) => v(t) && t.constructor.name === \"Window\" || !1, R = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => W(t) ? t.document : R(t) ? t : i(t) ? t.ownerDocument : window.document, M = (t, ...e) => Object.assign(t, ...e), Zt = (t) => {\n if (!t) return;\n if (k(t))\n return d().createElement(t);\n const { tagName: e } = t, n = Zt(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, M(n, o);\n}, $t = (t, e) => {\n if (!t || !e) return;\n if (k(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = $t(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, M(o, s);\n}, Q = (t, e) => t.dispatchEvent(e), Pn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, _t = (t) => {\n const e = g(t, F), n = g(t, Wt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, te = (t) => {\n const e = g(t, F), n = g(t, Ut), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Fn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = te(t), r = _t(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, ee = (t) => {\n const e = g(t, U), n = g(t, Qt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, ne = (t) => {\n const e = g(t, U), n = g(t, Rt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, Un = (t, e) => {\n let n = 0;\n const o = new Event(C), s = ne(t), r = ee(t);\n if (s) {\n const a = (l) => {\n l.target === t && (e.apply(t, [l]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n n || Q(t, o);\n }, s + r + 17);\n } else\n e.apply(t, [o]);\n}, Wn = (t) => Float32Array.from(Array.from(t)), Rn = (t) => Float64Array.from(Array.from(t)), Qn = (t, e) => t.focus(e), V = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), oe = (t) => t.toLowerCase(), jn = (t, e, n, o) => {\n const s = { ...n }, r = { ...t.dataset }, a = { ...e }, l = {}, p = \"title\";\n return w(r).forEach(([c, m]) => {\n const y = o && typeof c == \"string\" && c.includes(o) ? c.replace(o, \"\").replace(/[A-Z]/g, (j) => oe(j)) : c;\n l[y] = V(m);\n }), w(s).forEach(([c, m]) => {\n s[c] = V(m);\n }), w(e).forEach(([c, m]) => {\n c in s ? a[c] = s[c] : c in l ? a[c] = l[c] : a[c] = c === p ? Yt(t, p) : m;\n }), a;\n}, qn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Gn = (t) => Object.keys(t), Jn = (t) => Object.values(t), Kn = (t) => Object.fromEntries(t), Xn = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n return v(e) && M(n, e), n;\n}, Yn = { passive: !0 }, Zn = (t) => t.offsetHeight, $n = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && k(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, M(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, se = (t) => typeof t == \"number\" || !1, f = /* @__PURE__ */ new Map(), _n = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n u(t) && (o && o.length ? (f.has(t) || f.set(t, /* @__PURE__ */ new Map()), f.get(t).set(o, setTimeout(e, n))) : f.set(t, setTimeout(e, n)));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!u(t)) return null;\n const n = f.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : se(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!u(t)) return;\n const n = f.get(t);\n e && e.length && I(n) ? (clearTimeout(n.get(e)), n.delete(e), n.size === 0 && f.delete(t)) : (clearTimeout(n), f.delete(t));\n }\n}, to = (t) => t.toUpperCase(), h = (t, e) => {\n const { width: n, height: o, top: s, right: r, bottom: a, left: l } = t.getBoundingClientRect();\n let p = 1, c = 1;\n if (e && u(t)) {\n const { offsetWidth: m, offsetHeight: y } = t;\n p = m > 0 ? Math.round(n) / m : (\n /* istanbul ignore next */\n 1\n ), c = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / c,\n top: s / c,\n right: r / p,\n bottom: a / c,\n left: l / p,\n x: l / p,\n y: s / c\n };\n}, eo = (t) => d(t).body, T = (t) => d(t).documentElement, no = (t) => d(t).head, oo = (t) => {\n const e = W(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, ce = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, so = (t) => t.nodeName === \"HTML\" ? t : u(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\nce(t) && t.host || // ShadowRoot detected\nT(t), re = (t) => {\n if (!u(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, co = (t, e, n) => {\n const o = u(e), s = h(t, o && re(e)), r = { x: 0, y: 0 };\n if (o) {\n const a = h(e, !0);\n r.x = a.x + e.clientLeft, r.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - r.x,\n y: s.top + n.y - r.y,\n width: s.width,\n height: s.height\n };\n};\nlet B = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), ae = (t, e) => {\n let n = e ? B : H;\n if (e) {\n const o = ae(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), B += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, ro = (t) => {\n var e;\n return t ? R(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ie = (t) => Array.isArray(t) || !1, ao = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ue = (t) => u(t) && !!t.shadowRoot || !1, io = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, uo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = T(t);\n return e <= o && n >= 0;\n}, lo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = T(t), { top: o, left: s, bottom: r, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && r <= n && a <= e;\n}, po = (t) => ie(t) && t.every(u) || !1, mo = (t) => typeof t == \"function\" || !1, fo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, go = (t) => u(t) && t.tagName === \"IMG\" || !1, vo = (t) => {\n if (!k(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, Eo = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, bo = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, ho = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, yo = (t) => T(t).dir === \"rtl\", wo = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Ao = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, le = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nle(t.getRootNode().host, e) : null, So = (t, e) => u(t) ? t : (i(e) ? e : d()).querySelector(t), de = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), No = (t) => [...de(\"*\", t)].filter(ue), ko = (t, e) => d(e).getElementById(t) || null, Mo = (t, e) => (i(e) ? e : d()).querySelectorAll(t), To = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(\n t\n), Do = (t, e) => t.matches(e), Co = \"2.0.3\";\nexport {\n Bn as ArrayFrom,\n P as DOMContentLoadedEvent,\n Y as DOMMouseScrollEvent,\n L as Data,\n Wn as Float32ArrayFrom,\n Rn as Float64ArrayFrom,\n M as ObjectAssign,\n w as ObjectEntries,\n Kn as ObjectFromEntries,\n qn as ObjectHasOwn,\n Gn as ObjectKeys,\n Jn as ObjectValues,\n _n as Timer,\n q as abortEvent,\n Ln as addClass,\n rn as addEventListener,\n Wt as animationDelay,\n Ut as animationDuration,\n D as animationEndEvent,\n F as animationName,\n pe as ariaChecked,\n fe as ariaDescribedBy,\n me as ariaDescription,\n ge as ariaExpanded,\n ve as ariaHasPopup,\n Ee as ariaHidden,\n be as ariaLabel,\n he as ariaLabelledBy,\n ye as ariaModal,\n we as ariaPressed,\n Ae as ariaSelected,\n Ne as ariaValueMax,\n Se as ariaValueMin,\n ke as ariaValueNow,\n Me as ariaValueText,\n G as beforeunloadEvent,\n un as bezierEasings,\n J as blurEvent,\n K as changeEvent,\n le as closest,\n X as contextmenuEvent,\n Xn as createCustomEvent,\n Zt as createElement,\n $t as createElementNS,\n Q as dispatchEvent,\n Pn as distinct,\n xn as documentBody,\n Vn as documentElement,\n N as documentHead,\n De as dragEvent,\n ze as dragendEvent,\n Oe as dragenterEvent,\n Le as dragleaveEvent,\n Ie as dragoverEvent,\n Ce as dragstartEvent,\n Fn as emulateAnimationEnd,\n Un as emulateTransitionEnd,\n Z as errorEvent,\n Qn as focus,\n $ as focusEvent,\n Fe as focusEvents,\n _ as focusinEvent,\n tt as focusoutEvent,\n et as gesturechangeEvent,\n nt as gestureendEvent,\n ot as gesturestartEvent,\n Yt as getAttribute,\n Nn as getAttributeNS,\n h as getBoundingClientRect,\n No as getCustomElements,\n d as getDocument,\n eo as getDocumentBody,\n T as getDocumentElement,\n no as getDocumentHead,\n _t as getElementAnimationDelay,\n te as getElementAnimationDuration,\n ko as getElementById,\n g as getElementStyle,\n ee as getElementTransitionDelay,\n ne as getElementTransitionDuration,\n To as getElementsByClassName,\n de as getElementsByTagName,\n Hn as getInstance,\n oo as getNodeScroll,\n so as getParentNode,\n co as getRectRelativeToOffsetParent,\n ae as getUID,\n ro as getWindow,\n kn as hasAttribute,\n Mn as hasAttributeNS,\n zn as hasClass,\n vn as isApple,\n ie as isArray,\n ao as isCanvas,\n ue as isCustomElement,\n R as isDocument,\n io as isElement,\n uo as isElementInScrollRange,\n lo as isElementInViewport,\n po as isElementsArray,\n En as isFirefox,\n mo as isFunction,\n fo as isHTMLCollection,\n u as isHTMLElement,\n go as isHTMLImageElement,\n vo as isJSON,\n I as isMap,\n bo as isMedia,\n gn as isMobile,\n i as isNode,\n ho as isNodeList,\n se as isNumber,\n v as isObject,\n yo as isRTL,\n wo as isSVGElement,\n re as isScaledElement,\n ce as isShadowRoot,\n k as isString,\n Ao as isTableElement,\n Eo as isWeakMap,\n W as isWindow,\n We as keyAlt,\n Re as keyArrowDown,\n je as keyArrowLeft,\n qe as keyArrowRight,\n Qe as keyArrowUp,\n Ge as keyBackspace,\n Je as keyCapsLock,\n Ke as keyControl,\n Xe as keyDelete,\n Ye as keyEnter,\n $e as keyEscape,\n _e as keyInsert,\n tn as keyMeta,\n Ze as keyNumpadEnter,\n en as keyPause,\n nn as keyScrollLock,\n on as keyShift,\n sn as keySpace,\n cn as keyTab,\n Ue as keyboardEventKeys,\n st as keydownEvent,\n ct as keypressEvent,\n rt as keyupEvent,\n at as loadEvent,\n xe as loadstartEvent,\n Do as matches,\n Be as mouseClickEvents,\n He as mouseHoverEvents,\n Ve as mouseSwipeEvents,\n it as mouseclickEvent,\n ut as mousedblclickEvent,\n lt as mousedownEvent,\n mt as mouseenterEvent,\n pt as mousehoverEvent,\n gt as mouseinEvent,\n ft as mouseleaveEvent,\n bt as mousemoveEvent,\n vt as mouseoutEvent,\n Et as mouseoverEvent,\n dt as mouseupEvent,\n ht as mousewheelEvent,\n yt as moveEvent,\n Te as nativeEvents,\n Xt as noop,\n jn as normalizeOptions,\n V as normalizeValue,\n Jt as off,\n ln as offsetHeight,\n dn as offsetWidth,\n Gt as on,\n Kt as one,\n wt as orientationchangeEvent,\n Yn as passiveHandler,\n At as pointercancelEvent,\n St as pointerdownEvent,\n Nt as pointerleaveEvent,\n kt as pointermoveEvent,\n Mt as pointerupEvent,\n So as querySelector,\n Mo as querySelectorAll,\n Tt as readystatechangeEvent,\n Zn as reflow,\n Cn as removeAttribute,\n On as removeAttributeNS,\n In as removeClass,\n an as removeEventListener,\n Dt as resetEvent,\n Ct as resizeEvent,\n zt as scrollEvent,\n pn as scrollHeight,\n mn as scrollWidth,\n Ot as selectEvent,\n Lt as selectendEvent,\n It as selectstartEvent,\n Tn as setAttribute,\n Dn as setAttributeNS,\n $n as setElementStyle,\n xt as submitEvent,\n bn as support3DTransform,\n An as supportAnimation,\n hn as supportPassive,\n wn as supportTouch,\n yn as supportTransform,\n Sn as supportTransition,\n fn as tabindex,\n oe as toLowerCase,\n to as toUpperCase,\n Pe as touchEvents,\n Ht as touchcancelEvent,\n Pt as touchendEvent,\n Bt as touchmoveEvent,\n Vt as touchstartEvent,\n Qt as transitionDelay,\n Rt as transitionDuration,\n C as transitionEndEvent,\n U as transitionProperty,\n Ft as unloadEvent,\n S as userAgent,\n A as userAgentData,\n Co as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n), a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n o && o.has(i) && o.delete(i), s && (!o || !o.size) && s.delete(t), (!s || !s.size) && delete e[c], (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n const element = querySelector(target);\n\n if (!element) {\n if (isString(target)) {\n throw Error(`${this.name} Error: \"${target}\" is not a valid selector.`);\n } else {\n throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`);\n }\n }\n\n const prevInstance = Data.get(element, this.name);\n /* istanbul ignore else */\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : {};\n\n Data.set(element, this.name, this);\n }\n\n /* istanbul ignore next */\n get version() {\n return Version;\n }\n\n /* istanbul ignore next */\n get name() {\n return 'BaseComponent';\n }\n\n /* istanbul ignore next */\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n emulateTransitionEnd,\n mouseclickEvent,\n getInstance,\n querySelector,\n hasClass,\n removeClass,\n dispatchEvent,\n createCustomEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n *\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element) as T;\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n /* istanbul ignore else */\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n /* istanbul ignore else */\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n getInstance,\n removeClass,\n hasClass,\n addClass,\n setAttribute,\n mouseclickEvent,\n ariaPressed,\n getAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n *\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n /* istanbul ignore else */\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n getDocumentBody,\n getDocumentElement,\n getDocument,\n getWindow,\n removeClass,\n hasClass,\n addClass,\n getElementsByTagName,\n getAttribute,\n querySelector,\n isHTMLElement,\n isWindow,\n createCustomEvent,\n getInstance,\n scrollEvent,\n passiveHandler,\n dispatchEvent,\n getBoundingClientRect,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n /* istanbul ignore else */\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n if (isHTMLElement(target)) clear(target);\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem);\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n /* istanbul ignore else */\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n /* istanbul ignore else */\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n /* istanbul ignore else */\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n emulateTransitionEnd,\n dispatchEvent,\n removeClass,\n hasClass,\n addClass,\n querySelector,\n getElementsByClassName,\n closest,\n setAttribute,\n mouseclickEvent,\n createCustomEvent,\n Timer,\n getInstance,\n ariaSelected,\n reflow,\n isHTMLElement,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n /* istanbul ignore else */\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n /* istanbul ignore else */\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null };\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ {\n currentHeight: 0,\n nextHeight: 0,\n };\n if (currentHeight === nextHeight) {\n triggerTabEnd(self);\n } else {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null };\n let currentHeight = 0;\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n if (!showTabEvent.defaultPrevented) {\n if (nextContent) addClass(nextContent, activeClass);\n if (content) removeClass(content, activeClass);\n\n /* istanbul ignore else */\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n /* istanbul ignore next */\n if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null };\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n /* istanbul ignore else */\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n /* istanbul ignore next */\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n /* istanbul ignore else */\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n /* istanbul ignore else */\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n /* istanbul ignore else */\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n /* istanbul ignore else */\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n /* istanbul ignore else */\n if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n /* istanbul ignore else */\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n /* istanbul ignore else */\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n /* istanbul ignore else */\n if (nav) {\n const toggleTab = () => {\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass);\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n mouseclickEvent,\n closest,\n removeClass,\n hasClass,\n addClass,\n focusoutEvent,\n focusinEvent,\n mouseleaveEvent,\n mouseenterEvent,\n createCustomEvent,\n getDocument,\n Timer,\n getInstance,\n reflow,\n emulateTransitionEnd,\n dispatchEvent,\n querySelectorAll,\n querySelector,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastOptions, ToastEvent } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n /* istanbul ignore else */\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Executes after the instance has been disposed.\n *\n * @param {Toast} self the `Toast` instance\n */\nconst completeDisposeToast = (self: Toast) => {\n Timer.clear(self.element, toastString);\n self._toggleEventListeners();\n};\n\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n /* istanbul ignore else */\n if (self) {\n /* istanbul ignore else */\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n /* istanbul ignore else: a solid filter is required */\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass);\n else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass);\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n /* istanbul ignore else */\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n /* istanbul ignore else */\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n /* istanbul ignore else */\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n\n /* istanbul ignore else */\n if (isShown) {\n removeClass(element, showClass);\n }\n\n completeDisposeToast(this);\n\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement, ops?: Record) => T,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) (instance as T & { dispose: () => void }).dispose();\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), { once: true });\n}\n"],"names":["fe","ge","Ee","ye","we","Ae","P","$","_","tt","st","rt","it","lt","pt","mt","ft","St","kt","Mt","Ct","zt","Vt","Ce","Re","Qe","je","qe","$e","Rt","Qt","C","U","jt","A","qt","S","z","x","vn","N","Gt","e","n","o","s","Jt","Kt","r","Xt","Yt","kn","Tn","Cn","Ln","In","zn","v","i","u","E","L","Hn","k","W","R","d","M","Zt","Q","g","ee","ne","Un","a","l","Qn","V","w","oe","jn","p","c","m","y","j","Gn","Xn","Yn","Zn","$n","I","se","f","_n","h","eo","T","ce","so","B","H","b","ae","ro","ie","uo","mo","ho","yo","Ao","le","So","de","Mo","To","Do","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","BaseComponent","target","config","__publicField","element","querySelector","isString","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","keyArrowRight","keyArrowLeft","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","isHTMLElement","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","pad","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","delay","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","completeDisposeToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"bootstrap-native.js","sources":["../node_modules/.pnpm/@thednp+shorty@2.0.5/node_modules/@thednp/shorty/dist/shorty.mjs","../node_modules/.pnpm/@thednp+event-listener@2.0.6/node_modules/@thednp/event-listener/dist/event-listener.mjs","../src/strings/fadeClass.ts","../src/strings/showClass.ts","../src/strings/dataBsDismiss.ts","../src/strings/alertString.ts","../src/strings/alertComponent.ts","../src/version.ts","../src/components/base-component.ts","../src/components/alert.ts","../src/strings/activeClass.ts","../src/strings/dataBsToggle.ts","../src/strings/buttonString.ts","../src/strings/buttonComponent.ts","../src/components/button.ts","../src/strings/dataBsTarget.ts","../src/strings/carouselString.ts","../src/strings/carouselComponent.ts","../src/strings/dataBsParent.ts","../src/strings/dataBsContainer.ts","../src/util/getTargetElement.ts","../src/components/carousel.ts","../src/strings/collapsingClass.ts","../src/strings/collapseString.ts","../src/strings/collapseComponent.ts","../src/components/collapse.ts","../src/strings/dropdownClasses.ts","../src/strings/dropdownComponent.ts","../src/strings/dropdownMenuClass.ts","../src/util/isEmptyAnchor.ts","../src/components/dropdown.ts","../src/strings/modalString.ts","../src/strings/modalComponent.ts","../src/strings/offcanvasComponent.ts","../src/strings/fixedTopClass.ts","../src/strings/fixedBottomClass.ts","../src/strings/stickyTopClass.ts","../src/strings/positionStickyClass.ts","../src/util/scrollbar.ts","../src/strings/offcanvasString.ts","../src/util/popupContainer.ts","../src/util/backdrop.ts","../src/util/isVisible.ts","../src/components/modal.ts","../src/components/offcanvas.ts","../src/strings/popoverString.ts","../src/strings/popoverComponent.ts","../src/strings/tooltipString.ts","../src/util/getTipTemplate.ts","../src/util/tipClassPositions.ts","../src/util/styleTip.ts","../src/util/tooltipDefaults.ts","../src/strings/dataOriginalTitle.ts","../src/strings/tooltipComponent.ts","../src/util/setHtml.ts","../src/util/createTip.ts","../src/util/getElementContainer.ts","../src/components/tooltip.ts","../src/components/popover.ts","../src/strings/scrollspyString.ts","../src/strings/scrollspyComponent.ts","../src/components/scrollspy.ts","../src/strings/tabString.ts","../src/strings/tabComponent.ts","../src/components/tab.ts","../src/strings/toastString.ts","../src/strings/toastComponent.ts","../src/components/toast.ts","../src/util/init.ts"],"sourcesContent":["const he = \"aria-checked\", ye = \"aria-description\", we = \"aria-describedby\", Ae = \"aria-expanded\", Se = \"aria-haspopup\", X = \"aria-hidden\", Ne = \"aria-label\", Me = \"aria-labelledby\", Te = \"aria-modal\", ke = \"aria-pressed\", De = \"aria-selected\", Ce = \"aria-valuemin\", Oe = \"aria-valuemax\", Le = \"aria-valuenow\", Ie = \"aria-valuetext\", Y = \"abort\", Z = \"beforeunload\", $ = \"blur\", _ = \"change\", tt = \"contextmenu\", P = \"DOMContentLoaded\", et = \"DOMMouseScroll\", nt = \"error\", ot = \"focus\", st = \"focusin\", ct = \"focusout\", rt = \"gesturechange\", at = \"gestureend\", it = \"gesturestart\", ut = \"keydown\", lt = \"keypress\", dt = \"keyup\", pt = \"load\", ft = \"click\", mt = \"dblclick\", gt = \"mousedown\", vt = \"mouseup\", Et = \"hover\", bt = \"mouseenter\", ht = \"mouseleave\", yt = \"mousein\", wt = \"mouseout\", At = \"mouseover\", St = \"mousemove\", Nt = \"mousewheel\", Mt = \"move\", Tt = \"orientationchange\", kt = \"pointercancel\", Dt = \"pointerdown\", Ct = \"pointerleave\", Ot = \"pointermove\", Lt = \"pointerup\", It = \"readystatechange\", xt = \"reset\", zt = \"resize\", Vt = \"select\", Bt = \"selectend\", Ft = \"selectstart\", Ht = \"scroll\", Pt = \"submit\", Ut = \"touchstart\", Wt = \"touchmove\", Rt = \"touchcancel\", Qt = \"touchend\", jt = \"unload\", xe = {\n DOMContentLoaded: P,\n DOMMouseScroll: et,\n abort: Y,\n beforeunload: Z,\n blur: $,\n change: _,\n click: ft,\n contextmenu: tt,\n dblclick: mt,\n error: nt,\n focus: ot,\n focusin: st,\n focusout: ct,\n gesturechange: rt,\n gestureend: at,\n gesturestart: it,\n hover: Et,\n keydown: ut,\n keypress: lt,\n keyup: dt,\n load: pt,\n mousedown: gt,\n mousemove: St,\n mousein: yt,\n mouseout: wt,\n mouseenter: bt,\n mouseleave: ht,\n mouseover: At,\n mouseup: vt,\n mousewheel: Nt,\n move: Mt,\n orientationchange: Tt,\n pointercancel: kt,\n pointerdown: Dt,\n pointerleave: Ct,\n pointermove: Ot,\n pointerup: Lt,\n readystatechange: It,\n reset: xt,\n resize: zt,\n scroll: Ht,\n select: Vt,\n selectend: Bt,\n selectstart: Ft,\n submit: Pt,\n touchcancel: Rt,\n touchend: Qt,\n touchmove: Wt,\n touchstart: Ut,\n unload: jt\n}, ze = \"drag\", Ve = \"dragstart\", Be = \"dragenter\", Fe = \"dragleave\", He = \"dragover\", Pe = \"dragend\", Ue = \"loadstart\", We = {\n start: \"mousedown\",\n end: \"mouseup\",\n move: \"mousemove\",\n cancel: \"mouseleave\"\n}, Re = { down: \"mousedown\", up: \"mouseup\" }, Qe = \"onmouseleave\" in document ? [\"mouseenter\", \"mouseleave\"] : (\n /* istanbul ignore next */\n [\"mouseover\", \"mouseout\"]\n), je = {\n start: \"touchstart\",\n end: \"touchend\",\n move: \"touchmove\",\n cancel: \"touchcancel\"\n}, qe = { in: \"focusin\", out: \"focusout\" }, qt = 'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"]', Ge = {\n Backspace: \"Backspace\",\n // 8\n Tab: \"Tab\",\n // 9\n Enter: \"Enter\",\n // 13\n Shift: \"Shift\",\n // 16\n Control: \"Control\",\n // 17\n Alt: \"Alt\",\n // 18\n Pause: \"Pause\",\n // 19\n CapsLock: \"CapsLock\",\n // 20\n Escape: \"Escape\",\n // 27\n Scape: \"Space\",\n // 32\n ArrowLeft: \"ArrowLeft\",\n // 37\n ArrowUp: \"ArrowUp\",\n // 38\n ArrowRight: \"ArrowRight\",\n // 39\n ArrowDown: \"ArrowDown\",\n // 40\n Insert: \"Insert\",\n // 45\n Delete: \"Delete\",\n // 46\n Meta: \"Meta\",\n // 91 windows key\n ContextMenu: \"ContextMenu\",\n // 93\n ScrollLock: \"ScrollLock\"\n // 145\n}, Ke = \"Alt\", Je = \"ArrowDown\", Xe = \"ArrowUp\", Ye = \"ArrowLeft\", Ze = \"ArrowRight\", $e = \"Backspace\", _e = \"CapsLock\", tn = \"Control\", en = \"Delete\", nn = \"Enter\", on = \"NumpadEnter\", sn = \"Escape\", cn = \"Insert\", rn = \"Meta\", an = \"Pause\", un = \"ScrollLock\", ln = \"Shift\", dn = \"Space\", pn = \"Tab\", Gt = \"animationDuration\", Kt = \"animationDelay\", U = \"animationName\", D = \"animationend\", Jt = \"transitionDuration\", Xt = \"transitionDelay\", C = \"transitionend\", W = \"transitionProperty\", fn = \"addEventListener\", mn = \"removeEventListener\", gn = {\n linear: \"linear\",\n easingSinusoidalIn: \"cubic-bezier(0.47,0,0.745,0.715)\",\n easingSinusoidalOut: \"cubic-bezier(0.39,0.575,0.565,1)\",\n easingSinusoidalInOut: \"cubic-bezier(0.445,0.05,0.55,0.95)\",\n easingQuadraticIn: \"cubic-bezier(0.550,0.085,0.680,0.530)\",\n easingQuadraticOut: \"cubic-bezier(0.250,0.460,0.450,0.940)\",\n easingQuadraticInOut: \"cubic-bezier(0.455,0.030,0.515,0.955)\",\n easingCubicIn: \"cubic-bezier(0.55,0.055,0.675,0.19)\",\n easingCubicOut: \"cubic-bezier(0.215,0.61,0.355,1)\",\n easingCubicInOut: \"cubic-bezier(0.645,0.045,0.355,1)\",\n easingQuarticIn: \"cubic-bezier(0.895,0.03,0.685,0.22)\",\n easingQuarticOut: \"cubic-bezier(0.165,0.84,0.44,1)\",\n easingQuarticInOut: \"cubic-bezier(0.77,0,0.175,1)\",\n easingQuinticIn: \"cubic-bezier(0.755,0.05,0.855,0.06)\",\n easingQuinticOut: \"cubic-bezier(0.23,1,0.32,1)\",\n easingQuinticInOut: \"cubic-bezier(0.86,0,0.07,1)\",\n easingExponentialIn: \"cubic-bezier(0.95,0.05,0.795,0.035)\",\n easingExponentialOut: \"cubic-bezier(0.19,1,0.22,1)\",\n easingExponentialInOut: \"cubic-bezier(1,0,0,1)\",\n easingCircularIn: \"cubic-bezier(0.6,0.04,0.98,0.335)\",\n easingCircularOut: \"cubic-bezier(0.075,0.82,0.165,1)\",\n easingCircularInOut: \"cubic-bezier(0.785,0.135,0.15,0.86)\",\n easingBackIn: \"cubic-bezier(0.6,-0.28,0.735,0.045)\",\n easingBackOut: \"cubic-bezier(0.175,0.885,0.32,1.275)\",\n easingBackInOut: \"cubic-bezier(0.68,-0.55,0.265,1.55)\"\n}, vn = \"offsetHeight\", En = \"offsetWidth\", bn = \"scrollHeight\", hn = \"scrollWidth\", yn = \"tabindex\", Yt = navigator.userAgentData, A = Yt, { userAgent: Zt } = navigator, S = Zt, z = /iPhone|iPad|iPod|Android/i;\nlet O = !1;\n// istanbul ignore else @preserve\nA ? O = A.brands.some((t) => z.test(t.brand)) : O = z.test(S);\nconst wn = O, V = /(iPhone|iPod|iPad)/, An = A ? A.brands.some((t) => V.test(t.brand)) : (\n /* istanbul ignore next @preserve */\n V.test(S)\n), Sn = S ? S.includes(\"Firefox\") : (\n /* istanbul ignore next @preserve */\n !1\n), { head: N } = document, Nn = [\"webkitPerspective\", \"perspective\"].some((t) => t in N.style), R = (t, e, n, o) => {\n const s = o || !1;\n t.addEventListener(e, n, s);\n}, Q = (t, e, n, o) => {\n const s = o || !1;\n t.removeEventListener(e, n, s);\n}, $t = (t, e, n, o) => {\n const s = (c) => {\n /* istanbul ignore else @preserve */\n (c.target === t || c.currentTarget === t) && (n.apply(t, [c]), Q(t, e, s, o));\n };\n R(t, e, s, o);\n}, _t = () => {\n}, Mn = (() => {\n let t = !1;\n try {\n const e = Object.defineProperty({}, \"passive\", {\n get: () => (t = !0, t)\n });\n // istanbul ignore next @preserve\n $t(document, P, _t, e);\n } catch {\n }\n return t;\n})(), Tn = [\"webkitTransform\", \"transform\"].some((t) => t in N.style), kn = \"ontouchstart\" in window || /* istanbul ignore next */\n\"msMaxTouchPoints\" in navigator, Dn = [\"webkitAnimation\", \"animation\"].some((t) => t in N.style), Cn = [\"webkitTransition\", \"transition\"].some((t) => t in N.style), j = (t, e) => t.getAttribute(e), On = (t, e, n) => e.getAttributeNS(t, n), te = (t, e) => t.hasAttribute(e), Ln = (t, e, n) => e.hasAttributeNS(t, n), In = (t, e, n) => t.setAttribute(e, n), xn = (t, e, n, o) => e.setAttributeNS(t, n, o), zn = (t, e) => t.removeAttribute(e), Vn = (t, e, n) => e.removeAttributeNS(t, n), Bn = (t, ...e) => {\n t.classList.add(...e);\n}, Fn = (t, ...e) => {\n t.classList.remove(...e);\n}, Hn = (t, e) => t.classList.contains(e), { body: Pn } = document, { documentElement: Un } = document, Wn = (t) => Array.from(t), v = (t) => t != null && typeof t == \"object\" || !1, i = (t) => v(t) && typeof t.nodeType == \"number\" && [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].some((e) => t.nodeType === e) || !1, l = (t) => i(t) && t.nodeType === 1 || !1, E = /* @__PURE__ */ new Map(), L = {\n data: E,\n /**\n * Sets web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @param instance the component instance\n */\n set: (t, e, n) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n E.has(e) || E.set(e, /* @__PURE__ */ new Map()), E.get(e).set(t, n);\n },\n /**\n * Returns all instances for specified component.\n *\n * @param component the component's name or a unique key\n * @returns all the component instances\n */\n getAllFor: (t) => E.get(t) || null,\n /**\n * Returns the instance associated with the target.\n *\n * @param element target element\n * @param component the component's name or a unique key\n * @returns the instance\n */\n get: (t, e) => {\n if (!l(t) || !e) return null;\n const n = L.getAllFor(e);\n return t && n && n.get(t) || null;\n },\n /**\n * Removes web components data.\n *\n * @param element target element\n * @param component the component's name or a unique key\n */\n remove: (t, e) => {\n const n = L.getAllFor(e);\n if (!n || !l(t)) return;\n n.delete(t);\n // istanbul ignore else @preserve\n n.size === 0 && E.delete(e);\n }\n}, Rn = (t, e) => L.get(t, e), M = (t) => typeof t == \"string\" || !1, q = (t) => v(t) && t.constructor.name === \"Window\" || !1, G = (t) => i(t) && t.nodeType === 9 || !1, d = (t) => q(t) ? t.document : G(t) ? t : i(t) ? t.ownerDocument : window.document, T = (t, ...e) => Object.assign(t, ...e), ee = (t) => {\n if (!t) return;\n if (M(t))\n return d().createElement(t);\n const { tagName: e } = t, n = ee(e);\n if (!n) return;\n const o = { ...t };\n return delete o.tagName, T(n, o);\n}, ne = (t, e) => {\n if (!t || !e) return;\n if (M(e))\n return d().createElementNS(t, e);\n const { tagName: n } = e, o = ne(t, n);\n if (!o) return;\n const s = { ...e };\n return delete s.tagName, T(o, s);\n}, K = (t, e) => t.dispatchEvent(e), Qn = (t, e, n) => n.indexOf(t) === e, g = (t, e) => {\n const n = getComputedStyle(t), o = e.replace(\"webkit\", \"Webkit\").replace(/([A-Z])/g, \"-$1\").toLowerCase();\n return n.getPropertyValue(o);\n}, oe = (t) => {\n const e = g(t, U), n = g(t, Kt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, se = (t) => {\n const e = g(t, U), n = g(t, Gt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : 0;\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, jn = (t, e) => {\n let n = 0;\n const o = new Event(D), s = se(t), c = oe(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(D, a), n = 1);\n };\n t.addEventListener(D, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else {\n // istanbul ignore next @preserve\n e.apply(t, [o]);\n }\n}, ce = (t) => {\n const e = g(t, W), n = g(t, Xt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, re = (t) => {\n const e = g(t, W), n = g(t, Jt), o = n.includes(\"ms\") ? (\n /* istanbul ignore next */\n 1\n ) : 1e3, s = e && e !== \"none\" ? parseFloat(n) * o : (\n /* istanbul ignore next */\n 0\n );\n return Number.isNaN(s) ? (\n /* istanbul ignore next */\n 0\n ) : s;\n}, qn = (t, e) => {\n let n = 0;\n const o = new Event(C), s = re(t), c = ce(t);\n if (s) {\n const a = (u) => {\n // istanbul ignore else @preserve\n u.target === t && (e.apply(t, [u]), t.removeEventListener(C, a), n = 1);\n };\n t.addEventListener(C, a), setTimeout(() => {\n // istanbul ignore next @preserve\n n || K(t, o);\n }, s + c + 17);\n } else\n e.apply(t, [o]);\n}, Gn = (t) => Float32Array.from(Array.from(t)), Kn = (t) => Float64Array.from(Array.from(t)), Jn = (t, e) => t.focus(e), B = (t) => [\"true\", !0].includes(t) ? !0 : [\"false\", !1].includes(t) ? !1 : [\"null\", \"\", null, void 0].includes(t) ? null : t !== \"\" && !Number.isNaN(+t) ? +t : t, w = (t) => Object.entries(t), ae = (t) => t.toLowerCase(), Xn = (t, e, n, o) => {\n const s = { ...n }, c = { ...t.dataset }, a = { ...e }, u = {}, p = \"title\";\n return w(c).forEach(([r, f]) => {\n const y = o && typeof r == \"string\" && r.includes(o) ? r.replace(o, \"\").replace(/[A-Z]/g, (J) => ae(J)) : (\n /* istanbul ignore next @preserve */\n r\n );\n u[y] = B(f);\n }), w(s).forEach(([r, f]) => {\n s[r] = B(f);\n }), w(e).forEach(([r, f]) => {\n // istanbul ignore else @preserve\n r in s ? a[r] = s[r] : r in u ? a[r] = u[r] : a[r] = r === p ? j(t, p) : f;\n }), a;\n}, Yn = (t, e) => v(t) && (Object.hasOwn(t, e) || e in t), Zn = (t) => Object.keys(t), $n = (t) => Object.values(t), _n = (t) => Object.fromEntries(t), to = (t, e) => {\n const n = new CustomEvent(t, {\n cancelable: !0,\n bubbles: !0\n });\n // istanbul ignore else @preserve\n return v(e) && T(n, e), n;\n}, eo = { passive: !0 }, no = (t) => t.offsetHeight, oo = (t, e) => {\n w(e).forEach(([n, o]) => {\n if (o && M(n) && n.includes(\"--\"))\n t.style.setProperty(n, o);\n else {\n const s = {};\n s[n] = o, T(t.style, s);\n }\n });\n}, I = (t) => v(t) && t.constructor.name === \"Map\" || !1, ie = (t) => typeof t == \"number\" || !1, m = /* @__PURE__ */ new Map(), so = {\n /**\n * Sets a new timeout timer for an element, or element -> key association.\n *\n * @param element target element\n * @param callback the callback\n * @param delay the execution delay\n * @param key a unique key\n */\n set: (t, e, n, o) => {\n if (!l(t)) return;\n // istanbul ignore else @preserve\n if (o && o.length) {\n // istanbul ignore else @preserve\n m.has(t) || m.set(t, /* @__PURE__ */ new Map()), m.get(t).set(o, setTimeout(e, n));\n } else\n m.set(t, setTimeout(e, n));\n },\n /**\n * Returns the timer associated with the target.\n *\n * @param element target element\n * @param key a unique\n * @returns the timer\n */\n get: (t, e) => {\n if (!l(t)) return null;\n const n = m.get(t);\n return e && n && I(n) ? n.get(e) || /* istanbul ignore next */\n null : ie(n) ? n : null;\n },\n /**\n * Clears the element's timer.\n *\n * @param element target element\n * @param key a unique key\n */\n clear: (t, e) => {\n if (!l(t)) return;\n const n = m.get(t);\n if (e && e.length && I(n)) {\n clearTimeout(n.get(e)), n.delete(e);\n // istanbul ignore else @preserve\n n.size === 0 && m.delete(t);\n } else\n clearTimeout(n), m.delete(t);\n }\n}, co = (t) => t.toUpperCase(), ue = (t, e) => (i(e) ? e : d()).querySelectorAll(t), x = /* @__PURE__ */ new Map();\nfunction le(t) {\n const { shiftKey: e, code: n } = t, o = d(this), s = [...ue(qt, this)].filter(\n (u) => !te(u, \"disabled\") && !j(u, X)\n );\n if (!s.length) return;\n const c = s[0], a = s[s.length - 1];\n // istanbul ignore else @preserve\n n === \"Tab\" && (e && o.activeElement === c ? (a.focus(), t.preventDefault()) : !e && o.activeElement === a && (c.focus(), t.preventDefault()));\n}\nconst de = (t) => x.has(t) === !0, ro = (t) => {\n const e = de(t);\n (e ? Q : R)(t, \"keydown\", le), e ? x.delete(t) : x.set(t, !0);\n}, h = (t, e) => {\n const { width: n, height: o, top: s, right: c, bottom: a, left: u } = t.getBoundingClientRect();\n let p = 1, r = 1;\n if (e && l(t)) {\n const { offsetWidth: f, offsetHeight: y } = t;\n p = f > 0 ? Math.round(n) / f : (\n /* istanbul ignore next */\n 1\n ), r = y > 0 ? Math.round(o) / y : (\n /* istanbul ignore next */\n 1\n );\n }\n return {\n width: n / p,\n height: o / r,\n top: s / r,\n right: c / p,\n bottom: a / r,\n left: u / p,\n x: u / p,\n y: s / r\n };\n}, ao = (t) => d(t).body, k = (t) => d(t).documentElement, io = (t) => d(t).head, uo = (t) => {\n const e = q(t), n = e ? t.scrollX : t.scrollLeft, o = e ? t.scrollY : t.scrollTop;\n return { x: n, y: o };\n}, pe = (t) => i(t) && t.constructor.name === \"ShadowRoot\" || !1, lo = (t) => t.nodeName === \"HTML\" ? t : l(t) && t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\ni(t) && t.parentNode || // DOM Element detected\npe(t) && t.host || // ShadowRoot detected\nk(t), fe = (t) => {\n if (!l(t)) return !1;\n const { width: e, height: n } = h(t), { offsetWidth: o, offsetHeight: s } = t;\n return Math.round(e) !== o || Math.round(n) !== s;\n}, po = (t, e, n) => {\n const o = l(e), s = h(t, o && fe(e)), c = { x: 0, y: 0 };\n // istanbul ignore else @preserve\n if (o) {\n const a = h(e, !0);\n c.x = a.x + e.clientLeft, c.y = a.y + e.clientTop;\n }\n return {\n x: s.left + n.x - c.x,\n y: s.top + n.y - c.y,\n width: s.width,\n height: s.height\n };\n};\nlet F = 0, H = 0;\nconst b = /* @__PURE__ */ new Map(), me = (t, e) => {\n let n = e ? F : H;\n if (e) {\n const o = me(t), s = b.get(o) || /* @__PURE__ */ new Map();\n b.has(o) || b.set(o, s), I(s) && !s.has(e) ? (s.set(e, n), F += 1) : n = s.get(e);\n } else {\n const o = t.id || t;\n b.has(o) ? n = b.get(o) : (b.set(o, n), H += 1);\n }\n return n;\n}, fo = (t) => {\n var e;\n return t ? G(t) ? t.defaultView : i(t) ? (e = t == null ? void 0 : t.ownerDocument) == null ? void 0 : e.defaultView : t : window;\n}, ge = (t) => Array.isArray(t) || !1, mo = (t) => i(t) && t.nodeName === \"CANVAS\" || !1, ve = (t) => l(t) && !!t.shadowRoot || !1, go = (t) => i(t) && [1, 2, 3, 4, 5, 6, 7, 8].some((e) => t.nodeType === e) || !1, vo = (t) => {\n if (!i(t)) return !1;\n const { top: e, bottom: n } = h(t), { clientHeight: o } = k(t);\n return e <= o && n >= 0;\n}, Eo = (t) => {\n if (!i(t)) return !1;\n const { clientWidth: e, clientHeight: n } = k(t), { top: o, left: s, bottom: c, right: a } = h(t, !0);\n return o >= 0 && s >= 0 && c <= n && a <= e;\n}, bo = (t) => ge(t) && t.every(l) || !1, ho = (t) => typeof t == \"function\" || !1, yo = (t) => v(t) && t.constructor.name === \"HTMLCollection\" || !1, wo = (t) => l(t) && t.tagName === \"IMG\" || !1, Ao = (t) => {\n if (!M(t)) return !1;\n try {\n JSON.parse(t);\n } catch {\n return !1;\n }\n return !0;\n}, So = (t) => v(t) && t.constructor.name === \"WeakMap\" || !1, No = (t) => i(t) && [\"SVG\", \"Image\", \"Video\", \"Canvas\"].some((e) => t.constructor.name.includes(e)) || !1, Mo = (t) => v(t) && t.constructor.name === \"NodeList\" || !1, To = (t) => k(t).dir === \"rtl\", ko = (t) => i(t) && t.constructor.name.includes(\"SVG\") || !1, Do = (t) => i(t) && [\"TABLE\", \"TD\", \"TH\"].includes(t.nodeName) || !1, Ee = (t, e) => t ? t.closest(e) || // break out of `ShadowRoot`\nEe(t.getRootNode().host, e) : null, Co = (t, e) => l(t) ? t : (i(e) ? e : d()).querySelector(t), be = (t, e) => (i(e) ? e : d()).getElementsByTagName(t), Oo = (t) => [...be(\"*\", t)].filter(ve), Lo = (t, e) => d(e).getElementById(t) || null, Io = (t, e) => (e && i(e) ? e : d()).getElementsByClassName(t), xo = (t, e) => t.matches(e), zo = \"2.0.5\";\nexport {\n Wn as ArrayFrom,\n P as DOMContentLoadedEvent,\n et as DOMMouseScrollEvent,\n L as Data,\n Gn as Float32ArrayFrom,\n Kn as Float64ArrayFrom,\n T as ObjectAssign,\n w as ObjectEntries,\n _n as ObjectFromEntries,\n Yn as ObjectHasOwn,\n Zn as ObjectKeys,\n $n as ObjectValues,\n so as Timer,\n Y as abortEvent,\n Bn as addClass,\n fn as addEventListener,\n Kt as animationDelay,\n Gt as animationDuration,\n D as animationEndEvent,\n U as animationName,\n he as ariaChecked,\n we as ariaDescribedBy,\n ye as ariaDescription,\n Ae as ariaExpanded,\n Se as ariaHasPopup,\n X as ariaHidden,\n Ne as ariaLabel,\n Me as ariaLabelledBy,\n Te as ariaModal,\n ke as ariaPressed,\n De as ariaSelected,\n Oe as ariaValueMax,\n Ce as ariaValueMin,\n Le as ariaValueNow,\n Ie as ariaValueText,\n Z as beforeunloadEvent,\n gn as bezierEasings,\n $ as blurEvent,\n _ as changeEvent,\n Ee as closest,\n tt as contextmenuEvent,\n to as createCustomEvent,\n ee as createElement,\n ne as createElementNS,\n K as dispatchEvent,\n Qn as distinct,\n Pn as documentBody,\n Un as documentElement,\n N as documentHead,\n ze as dragEvent,\n Pe as dragendEvent,\n Be as dragenterEvent,\n Fe as dragleaveEvent,\n He as dragoverEvent,\n Ve as dragstartEvent,\n jn as emulateAnimationEnd,\n qn as emulateTransitionEnd,\n nt as errorEvent,\n Jn as focus,\n ot as focusEvent,\n qe as focusEvents,\n qt as focusableSelector,\n st as focusinEvent,\n ct as focusoutEvent,\n rt as gesturechangeEvent,\n at as gestureendEvent,\n it as gesturestartEvent,\n j as getAttribute,\n On as getAttributeNS,\n h as getBoundingClientRect,\n Oo as getCustomElements,\n d as getDocument,\n ao as getDocumentBody,\n k as getDocumentElement,\n io as getDocumentHead,\n oe as getElementAnimationDelay,\n se as getElementAnimationDuration,\n Lo as getElementById,\n g as getElementStyle,\n ce as getElementTransitionDelay,\n re as getElementTransitionDuration,\n Io as getElementsByClassName,\n be as getElementsByTagName,\n Rn as getInstance,\n uo as getNodeScroll,\n lo as getParentNode,\n po as getRectRelativeToOffsetParent,\n me as getUID,\n fo as getWindow,\n te as hasAttribute,\n Ln as hasAttributeNS,\n Hn as hasClass,\n de as hasFocusTrap,\n An as isApple,\n ge as isArray,\n mo as isCanvas,\n ve as isCustomElement,\n G as isDocument,\n go as isElement,\n vo as isElementInScrollRange,\n Eo as isElementInViewport,\n bo as isElementsArray,\n Sn as isFirefox,\n ho as isFunction,\n yo as isHTMLCollection,\n l as isHTMLElement,\n wo as isHTMLImageElement,\n Ao as isJSON,\n I as isMap,\n No as isMedia,\n wn as isMobile,\n i as isNode,\n Mo as isNodeList,\n ie as isNumber,\n v as isObject,\n To as isRTL,\n ko as isSVGElement,\n fe as isScaledElement,\n pe as isShadowRoot,\n M as isString,\n Do as isTableElement,\n So as isWeakMap,\n q as isWindow,\n Ke as keyAlt,\n Je as keyArrowDown,\n Ye as keyArrowLeft,\n Ze as keyArrowRight,\n Xe as keyArrowUp,\n $e as keyBackspace,\n _e as keyCapsLock,\n tn as keyControl,\n en as keyDelete,\n nn as keyEnter,\n sn as keyEscape,\n cn as keyInsert,\n rn as keyMeta,\n on as keyNumpadEnter,\n an as keyPause,\n un as keyScrollLock,\n ln as keyShift,\n dn as keySpace,\n pn as keyTab,\n Ge as keyboardEventKeys,\n ut as keydownEvent,\n lt as keypressEvent,\n dt as keyupEvent,\n pt as loadEvent,\n Ue as loadstartEvent,\n xo as matches,\n Re as mouseClickEvents,\n Qe as mouseHoverEvents,\n We as mouseSwipeEvents,\n ft as mouseclickEvent,\n mt as mousedblclickEvent,\n gt as mousedownEvent,\n bt as mouseenterEvent,\n Et as mousehoverEvent,\n yt as mouseinEvent,\n ht as mouseleaveEvent,\n St as mousemoveEvent,\n wt as mouseoutEvent,\n At as mouseoverEvent,\n vt as mouseupEvent,\n Nt as mousewheelEvent,\n Mt as moveEvent,\n xe as nativeEvents,\n _t as noop,\n Xn as normalizeOptions,\n B as normalizeValue,\n Q as off,\n vn as offsetHeight,\n En as offsetWidth,\n R as on,\n $t as one,\n Tt as orientationchangeEvent,\n eo as passiveHandler,\n kt as pointercancelEvent,\n Dt as pointerdownEvent,\n Ct as pointerleaveEvent,\n Ot as pointermoveEvent,\n Lt as pointerupEvent,\n Co as querySelector,\n ue as querySelectorAll,\n It as readystatechangeEvent,\n no as reflow,\n zn as removeAttribute,\n Vn as removeAttributeNS,\n Fn as removeClass,\n mn as removeEventListener,\n xt as resetEvent,\n zt as resizeEvent,\n Ht as scrollEvent,\n bn as scrollHeight,\n hn as scrollWidth,\n Vt as selectEvent,\n Bt as selectendEvent,\n Ft as selectstartEvent,\n In as setAttribute,\n xn as setAttributeNS,\n oo as setElementStyle,\n Pt as submitEvent,\n Nn as support3DTransform,\n Dn as supportAnimation,\n Mn as supportPassive,\n kn as supportTouch,\n Tn as supportTransform,\n Cn as supportTransition,\n yn as tabindex,\n ae as toLowerCase,\n co as toUpperCase,\n ro as toggleFocusTrap,\n je as touchEvents,\n Rt as touchcancelEvent,\n Qt as touchendEvent,\n Wt as touchmoveEvent,\n Ut as touchstartEvent,\n Xt as transitionDelay,\n Jt as transitionDuration,\n C as transitionEndEvent,\n W as transitionProperty,\n jt as unloadEvent,\n S as userAgent,\n A as userAgentData,\n zo as version\n};\n//# sourceMappingURL=shorty.mjs.map\n","const e = {}, f = (t) => {\n const { type: c, currentTarget: i } = t;\n [...e[c]].forEach(([n, s]) => {\n /* istanbul ignore else @preserve */\n i === n && [...s].forEach(([o, a]) => {\n o.apply(n, [t]), typeof a == \"object\" && a.once && r(n, c, o, a);\n });\n });\n}, E = (t, c, i, n) => {\n /* istanbul ignore else @preserve */\n e[c] || (e[c] = /* @__PURE__ */ new Map());\n const s = e[c];\n /* istanbul ignore else @preserve */\n s.has(t) || s.set(t, /* @__PURE__ */ new Map());\n const o = s.get(t), { size: a } = o;\n o.set(i, n);\n /* istanbul ignore else @preserve */\n a || t.addEventListener(c, f, n);\n}, r = (t, c, i, n) => {\n const s = e[c], o = s && s.get(t), a = o && o.get(i), d = a !== void 0 ? a : n;\n /* istanbul ignore else @preserve */\n o && o.has(i) && o.delete(i);\n /* istanbul ignore else @preserve */\n s && (!o || !o.size) && s.delete(t);\n /* istanbul ignore else @preserve */\n (!s || !s.size) && delete e[c];\n /* istanbul ignore else @preserve */\n (!o || !o.size) && t.removeEventListener(\n c,\n f,\n d\n );\n}, g = E, M = r;\nexport {\n E as addListener,\n f as globalListener,\n M as off,\n g as on,\n e as registry,\n r as removeListener\n};\n//# sourceMappingURL=event-listener.mjs.map\n","/**\n * Global namespace for most components `fade` class.\n */\nconst fadeClass = 'fade';\nexport default fadeClass;\n","/**\n * Global namespace for most components `show` class.\n */\nconst showClass = 'show';\nexport default showClass;\n","/**\n * Global namespace for most components `dismiss` option.\n */\nconst dataBsDismiss = 'data-bs-dismiss';\nexport default dataBsDismiss;\n","/** @type {string} */\nconst alertString = 'alert';\nexport default alertString;\n","/** @type {string} */\nconst alertComponent = 'Alert';\nexport default alertComponent;\n","import { version } from '../package.json';\n\nconst Version = version;\n\nexport default Version;\n","/* Native JavaScript for Bootstrap 5 | Base Component\n----------------------------------------------------- */\nimport { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty';\n\nimport type { BaseOptions } from '../interface/baseComponent';\nimport Version from '../version';\n\n/** Returns a new `BaseComponent` instance. */\nexport default class BaseComponent {\n declare element: HTMLElement;\n declare options?: BaseOptions;\n\n /**\n * @param target `HTMLElement` or selector string\n * @param config component instance options\n */\n constructor(target: HTMLElement | string, config?: BaseOptions) {\n let element: HTMLElement | null;\n\n try {\n if (isHTMLElement(target)) {\n element = target;\n } else if (isString(target)) {\n element = querySelector(target);\n // istanbul ignore else @preserve\n if (!element) throw Error(`\"${target}\" is not a valid selector.`);\n } else {\n throw Error(`your target is not an instance of HTMLElement.`);\n }\n } catch (e) {\n throw Error(`${this.name} Error: ${(e as Error).message}`);\n }\n\n const prevInstance = Data.get(element, this.name);\n // istanbul ignore else @preserve\n if (prevInstance) {\n // remove previously attached event listeners\n // to avoid memory leaks\n prevInstance._toggleEventListeners();\n }\n\n this.element = element;\n this.options =\n this.defaults && ObjectKeys(this.defaults).length\n ? normalizeOptions(element, this.defaults, config || {}, 'bs')\n : // istanbul ignore next @preserve\n {};\n\n Data.set(element, this.name, this);\n }\n\n // istanbul ignore next @preserve\n get version() {\n return Version;\n }\n\n // istanbul ignore next @preserve\n get name() {\n return 'BaseComponent';\n }\n\n // istanbul ignore next @preserve\n get defaults() {\n return {};\n }\n\n /** just to have something to extend from */\n // istanbul ignore next @preserve coverage wise this isn't important\n _toggleEventListeners = () => {\n // do something to please linters\n };\n\n /** Removes component from target element. */\n dispose() {\n Data.remove(this.element, this.name);\n ObjectKeys(this).forEach(prop => {\n delete this[prop];\n });\n }\n}\n","/* Native JavaScript for Bootstrap 5 | Alert\n-------------------------------------------- */\nimport {\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getInstance,\n hasClass,\n mouseclickEvent,\n querySelector,\n removeClass,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport alertString from '../strings/alertString';\nimport alertComponent from '../strings/alertComponent';\nimport type { AlertEvent } from '../interface/alert';\n\nimport BaseComponent from './base-component';\n\n// ALERT PRIVATE GC\n// ================\nconst alertSelector = `.${alertString}`;\nconst alertDismissSelector = `[${dataBsDismiss}=\"${alertString}\"]`;\n\n/**\n * Static method which returns an existing `Alert` instance associated\n * to a target `Element`.\n */\nconst getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent);\n\n/**\n * An `Alert` initialization callback.\n */\nconst alertInitCallback = (element: HTMLElement) => new Alert(element);\n\n// ALERT CUSTOM EVENTS\n// ===================\nconst closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`);\nconst closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`);\n\n// ALERT EVENT HANDLER\n// ===================\n/**\n * Alert `transitionend` callback.\n *\n * @param that target Alert instance\n */\nconst alertTransitionEnd = (self: Alert) => {\n const { element } = self;\n dispatchEvent(element, closedAlertEvent);\n\n self._toggleEventListeners();\n self.dispose();\n element.remove();\n};\n\n// ALERT DEFINITION\n// ================\n/** Creates a new Alert instance. */\nexport default class Alert extends BaseComponent {\n static selector = alertSelector;\n static init = alertInitCallback;\n static getInstance = getAlertInstance;\n dismiss: HTMLElement | null;\n\n constructor(target: HTMLElement | string) {\n super(target);\n\n // the dismiss button\n this.dismiss = querySelector(alertDismissSelector, this.element);\n\n // add event listener\n this._toggleEventListeners(true);\n }\n\n /** Returns component name string. */\n get name() {\n return alertComponent;\n }\n\n // ALERT PUBLIC METHODS\n // ====================\n /**\n * Public method that hides the `.alert` element from the user,\n * disposes the instance once animation is complete, then\n * removes the element from the DOM.\n */\n close = () => {\n const { element } = this;\n\n // istanbul ignore else @preserve\n if (element && hasClass(element, showClass)) {\n dispatchEvent(element, closeAlertEvent);\n\n if (!closeAlertEvent.defaultPrevented) {\n removeClass(element, showClass);\n\n if (hasClass(element, fadeClass)) {\n emulateTransitionEnd(element, () => alertTransitionEnd(this));\n } else alertTransitionEnd(this);\n }\n }\n };\n /**\n * Toggle on / off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { dismiss, close } = this;\n // istanbul ignore else @preserve\n if (dismiss) action(dismiss, mouseclickEvent, close);\n };\n\n /** Remove the component from target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/**\n * Global namespace for most components active class.\n */\nconst activeClass = 'active';\nexport default activeClass;\n","/**\n * Global namespace for most components `toggle` option.\n */\nconst dataBsToggle = 'data-bs-toggle';\nexport default dataBsToggle;\n","/** @type {string} */\nconst buttonString = 'button';\nexport default buttonString;\n","/** @type {string} */\nconst buttonComponent = 'Button';\nexport default buttonComponent;\n","/* Native JavaScript for Bootstrap 5 | Button\n---------------------------------------------*/\nimport {\n addClass,\n ariaPressed,\n getAttribute,\n getInstance,\n hasClass,\n mouseclickEvent,\n removeClass,\n setAttribute,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport buttonString from '../strings/buttonString';\nimport buttonComponent from '../strings/buttonComponent';\n\nimport BaseComponent from './base-component';\n\n// BUTTON PRIVATE GC\n// =================\nconst buttonSelector = `[${dataBsToggle}=\"${buttonString}\"]`;\n\n/**\n * Static method which returns an existing `Button` instance associated\n * to a target `Element`.\n */\nconst getButtonInstance = (element: HTMLElement) => getInstance',\n});\n\n/**\n * Static method which returns an existing `Popover` instance associated\n * to a target `Element`.\n */\nconst getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent);\n\n/**\n * A `Popover` initialization callback.\n */\nconst popoverInitCallback = (element: HTMLElement) => new Popover(element);\n\n// POPOVER DEFINITION\n// ==================\n/** Returns a new `Popover` instance. */\nexport default class Popover extends Tooltip {\n static selector = popoverSelector;\n static init = popoverInitCallback;\n static getInstance = getPopoverInstance;\n static styleTip = styleTip;\n declare options: PopoverOptions;\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return popoverComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return popoverDefaults;\n }\n\n /* extend original `show()` */\n show = () => {\n super.show();\n // btn only exists within dismissible popover\n const { options, btn } = this;\n // istanbul ignore else @preserve\n if (options.dismissible && btn) setTimeout(() => focus(btn), 17);\n };\n}\n","/** @type {string} */\nconst scrollspyString = 'scrollspy';\nexport default scrollspyString;\n","/** @type {string} */\nconst scrollspyComponent = 'ScrollSpy';\nexport default scrollspyComponent;\n","/* Native JavaScript for Bootstrap 5 | ScrollSpy\n------------------------------------------------ */\nimport {\n addClass,\n createCustomEvent,\n dispatchEvent,\n getAttribute,\n getBoundingClientRect,\n getDocument,\n getDocumentBody,\n getDocumentElement,\n getElementsByTagName,\n getInstance,\n getWindow,\n hasClass,\n isHTMLElement,\n isWindow,\n passiveHandler,\n querySelector,\n removeClass,\n scrollEvent,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport activeClass from '../strings/activeClass';\nimport scrollspyString from '../strings/scrollspyString';\nimport scrollspyComponent from '../strings/scrollspyComponent';\n\nimport BaseComponent from './base-component';\nimport { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy';\n\n// SCROLLSPY PRIVATE GC\n// ====================\nconst scrollspySelector = '[data-bs-spy=\"scroll\"]';\n\nconst scrollspyDefaults: ScrollSpyOptions = {\n offset: 10,\n target: null,\n};\n\ntype ScrollSpyEventProps = {\n relatedTarget: HTMLElement;\n};\n\n/**\n * Static method which returns an existing `ScrollSpy` instance associated\n * to a target `Element`.\n */\nconst getScrollSpyInstance = (element: HTMLElement) => getInstance(element, scrollspyComponent);\n\n/**\n * A `ScrollSpy` initialization callback.\n */\nconst scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element);\n\n// SCROLLSPY CUSTOM EVENT\n// ======================\nconst activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`);\n\n// SCROLLSPY PRIVATE METHODS\n// =========================\n/**\n * Update the state of all items.\n *\n * @param self the `ScrollSpy` instance\n */\nconst updateSpyTargets = (self: ScrollSpy) => {\n const { target, scrollTarget, options, itemsLength, scrollHeight, element } = self;\n const { offset } = options;\n const isWin = isWindow(scrollTarget as Node | Window);\n\n const links = target && getElementsByTagName('A', target);\n const scrollHEIGHT = scrollTarget\n ? getScrollHeight(scrollTarget)\n : // istanbul ignore next @preserve\n scrollHeight;\n\n self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop;\n\n // only update items/offsets once or with each mutation\n // istanbul ignore else @preserve\n if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) {\n let href;\n let targetItem;\n let rect;\n\n // reset arrays & update\n self.items = [];\n self.offsets = [];\n self.scrollHeight = scrollHEIGHT;\n self.maxScroll = self.scrollHeight - getOffsetHeight(self);\n\n [...links].forEach(link => {\n href = getAttribute(link, 'href');\n targetItem =\n href && href.charAt(0) === '#' && href.slice(-1) !== '#' && querySelector(href, getDocument(element));\n\n if (targetItem) {\n self.items.push(link);\n rect = getBoundingClientRect(targetItem);\n self.offsets.push((isWin ? rect.top + self.scrollTop : targetItem.offsetTop) - offset);\n }\n });\n self.itemsLength = self.items.length;\n }\n};\n\n/**\n * Returns the `scrollHeight` property of the scrolling element.\n *\n * @param scrollTarget the `ScrollSpy` instance\n * @return `scrollTarget` height\n */\nconst getScrollHeight = (scrollTarget: Node | Window) => {\n return isHTMLElement(scrollTarget as Node)\n ? (scrollTarget as HTMLElement).scrollHeight\n : getDocumentElement(scrollTarget as Node).scrollHeight;\n};\n\n/**\n * Returns the height property of the scrolling element.\n *\n * @param params the `ScrollSpy` instance\n */\nconst getOffsetHeight = ({ element, scrollTarget }: ScrollSpy) => {\n return isWindow(scrollTarget as Node) ? (scrollTarget as Window).innerHeight : getBoundingClientRect(element).height;\n};\n\n/**\n * Clear all items of the target.\n *\n * @param target a single item\n */\nconst clear = (target: HTMLElement) => {\n [...getElementsByTagName('A', target)].forEach(item => {\n if (hasClass(item, activeClass)) removeClass(item, activeClass);\n });\n};\n\n/**\n * Activates a new item.\n *\n * @param self the `ScrollSpy` instance\n * @param item a single item\n */\nconst activate = (self: ScrollSpy, item: HTMLElement) => {\n const { target, element } = self;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(target)) clear(target);\n\n self.activeItem = item;\n addClass(item, activeClass);\n\n // activate all parents\n const parents: HTMLElement[] = [];\n let parentItem = item;\n while (parentItem !== getDocumentBody(element)) {\n parentItem = parentItem.parentElement as HTMLElement;\n if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) {\n parents.push(parentItem);\n }\n }\n\n parents.forEach(menuItem => {\n const parentLink = menuItem.previousElementSibling as HTMLElement | null;\n\n // istanbul ignore else @preserve\n if (parentLink && !hasClass(parentLink, activeClass)) {\n addClass(parentLink, activeClass);\n }\n });\n\n // dispatch\n activateScrollSpy.relatedTarget = item;\n dispatchEvent(element, activateScrollSpy);\n};\n\n// SCROLLSPY DEFINITION\n// ====================\n/** Returns a new `ScrollSpy` instance. */\nexport default class ScrollSpy extends BaseComponent {\n static selector = scrollspySelector;\n static init = scrollspyInitCallback;\n static getInstance = getScrollSpyInstance;\n declare options: ScrollSpyOptions;\n declare target: HTMLElement | null;\n declare scrollTarget: HTMLElement | Window;\n declare scrollTop: number;\n declare maxScroll: number;\n declare scrollHeight: number;\n declare activeItem: HTMLElement | null;\n declare items: HTMLElement[];\n declare itemsLength: number;\n declare offsets: number[];\n\n /**\n * @param target the target element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n\n // initialization element & options\n const { element, options } = this;\n\n // additional properties\n this.target = querySelector(options.target as HTMLElement | string, getDocument(element));\n\n // invalidate\n if (this.target) {\n // set initial state\n this.scrollTarget = element.clientHeight < element.scrollHeight ? element : getWindow(element);\n this.scrollHeight = getScrollHeight(this.scrollTarget);\n\n // add event handlers\n this._toggleEventListeners(true);\n\n this.refresh();\n }\n }\n\n /* eslint-disable */\n /**\n * Returns component name string.\n */\n get name() {\n return scrollspyComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return scrollspyDefaults;\n }\n /* eslint-enable */\n\n // SCROLLSPY PUBLIC METHODS\n // ========================\n /** Updates all items. */\n refresh = () => {\n const { target } = this;\n\n // check if target is visible and invalidate\n // istanbul ignore else @preserve\n if (isHTMLElement(target) && target.offsetHeight > 0) {\n updateSpyTargets(this);\n\n const { scrollTop, maxScroll, itemsLength, items, activeItem } = this;\n\n if (scrollTop >= maxScroll) {\n const newActiveItem = items[itemsLength - 1];\n\n // istanbul ignore else @preserve\n if (activeItem !== newActiveItem) {\n activate(this, newActiveItem);\n }\n return;\n }\n\n const { offsets } = this;\n\n // istanbul ignore else @preserve\n if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) {\n this.activeItem = null;\n // istanbul ignore else @preserve\n if (target) clear(target);\n return;\n }\n\n items.forEach((item, i) => {\n if (\n activeItem !== item &&\n scrollTop >= offsets[i] &&\n (typeof offsets[i + 1] === 'undefined' || scrollTop < offsets[i + 1])\n ) {\n activate(this, item);\n }\n });\n }\n };\n\n /**\n * Toggles on/off the component event listener.\n *\n * @param add when `true`, listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.scrollTarget as EventTarget, scrollEvent, this.refresh, passiveHandler);\n };\n\n /** Removes `ScrollSpy` from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst tabString = 'tab';\nexport default tabString;\n","/** @type {string} */\nconst tabComponent = 'Tab';\nexport default tabComponent;\n","/* Native JavaScript for Bootstrap 5 | Tab\n------------------------------------------ */\nimport {\n addClass,\n ariaSelected,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n getElementsByClassName,\n getInstance,\n hasClass,\n isHTMLElement,\n mouseclickEvent,\n querySelector,\n reflow,\n removeClass,\n setAttribute,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport collapsingClass from '../strings/collapsingClass';\nimport activeClass from '../strings/activeClass';\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dropdownClasses from '../strings/dropdownClasses';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport tabString from '../strings/tabString';\nimport tabComponent from '../strings/tabComponent';\n\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport type { /* TabOptions, */ TabEvent } from '../interface/tab';\n\n// TAB PRIVATE GC\n// ================\nconst tabSelector = `[${dataBsToggle}=\"${tabString}\"]`;\n\n/**\n * Static method which returns an existing `Tab` instance associated\n * to a target `Element`.\n */\nconst getTabInstance = (element: HTMLElement) => getInstance(element, tabComponent);\n\n/** A `Tab` initialization callback. */\nconst tabInitCallback = (element: HTMLElement) => new Tab(element);\n\ntype TabEventProps = {\n relatedTarget: HTMLElement | undefined;\n};\n\n// TAB CUSTOM EVENTS\n// =================\nconst showTabEvent = createCustomEvent(`show.bs.${tabString}`);\nconst shownTabEvent = createCustomEvent(`shown.bs.${tabString}`);\nconst hideTabEvent = createCustomEvent(`hide.bs.${tabString}`);\nconst hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`);\n\ninterface TabPrivate {\n tab: HTMLElement | null;\n content: HTMLElement | null;\n currentHeight: number;\n nextHeight: number;\n}\n\n/**\n * Stores the current active tab and its content\n * for a given `.nav` element.\n */\nconst tabPrivate: Map = new Map();\n\n// TAB PRIVATE METHODS\n// ===================\n/**\n * Executes after tab transition has finished.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabEnd = (self: Tab) => {\n const { tabContent, nav } = self;\n\n // istanbul ignore else @preserve\n if (tabContent && hasClass(tabContent, collapsingClass)) {\n tabContent.style.height = '';\n removeClass(tabContent, collapsingClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) Timer.clear(nav);\n};\n\n/**\n * Executes before showing the tab content.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabShow = (self: Tab) => {\n const { element, tabContent, content: nextContent, nav } = self;\n const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve\n // istanbul ignore else @preserve: vitest won't validate this branch\n if (currentHeight !== nextHeight) {\n // enables height animation\n setTimeout(() => {\n tabContent.style.height = `${nextHeight}px`;\n reflow(tabContent);\n emulateTransitionEnd(tabContent, () => triggerTabEnd(self));\n }, 50);\n } else {\n triggerTabEnd(self);\n }\n } else if (nav) Timer.clear(nav);\n\n shownTabEvent.relatedTarget = tab as HTMLElement | undefined;\n\n dispatchEvent(element, shownTabEvent);\n};\n\n/**\n * Executes before hiding the tab.\n *\n * @param self the `Tab` instance\n */\nconst triggerTabHide = (self: Tab) => {\n const { element, content: nextContent, tabContent, nav } = self;\n const { tab, content } = (nav && tabPrivate.get(nav)) || {\n // istanbul ignore next @preserve\n tab: null,\n content: null,\n };\n let currentHeight = 0;\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (isHTMLElement(c)) addClass(c, 'overflow-hidden');\n });\n currentHeight = isHTMLElement(content)\n ? content.scrollHeight\n : // istanbul ignore next @preserve\n 0;\n }\n\n // update relatedTarget and dispatch event\n showTabEvent.relatedTarget = tab as HTMLElement | undefined;\n hiddenTabEvent.relatedTarget = element;\n dispatchEvent(element, showTabEvent);\n\n // istanbul ignore else @preserve\n if (!showTabEvent.defaultPrevented) {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, activeClass);\n // istanbul ignore else @preserve\n if (content) removeClass(content, activeClass);\n\n // istanbul ignore else @preserve\n if (tabContent && nextContent && hasClass(nextContent, fadeClass)) {\n const nextHeight = nextContent.scrollHeight;\n tabPrivate.set(element, {\n currentHeight,\n nextHeight,\n tab: null,\n content: null,\n });\n\n addClass(tabContent, collapsingClass);\n tabContent.style.height = `${currentHeight}px`;\n reflow(tabContent);\n [content, nextContent].forEach(c => {\n // istanbul ignore else @preserve\n if (c) removeClass(c, 'overflow-hidden');\n });\n }\n\n if (nextContent && nextContent && hasClass(nextContent, fadeClass)) {\n setTimeout(() => {\n addClass(nextContent, showClass);\n emulateTransitionEnd(nextContent, () => {\n triggerTabShow(self);\n });\n }, 1);\n } else {\n // istanbul ignore else @preserve\n if (nextContent) addClass(nextContent, showClass);\n triggerTabShow(self);\n }\n\n // istanbul ignore else @preserve\n if (tab) dispatchEvent(tab, hiddenTabEvent);\n }\n};\n\n/**\n * Returns the current active tab and its target content.\n *\n * @param self the `Tab` instance\n * @returns the query result\n */\nconst getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => {\n const { nav } = self;\n // istanbul ignore next @preserve\n if (!isHTMLElement(nav as HTMLElement | undefined)) {\n return { tab: null, content: null };\n }\n\n const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement);\n let tab: HTMLElement | null = null;\n // istanbul ignore else @preserve\n if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) {\n [tab] = activeTabs;\n } else if (activeTabs.length > 1) {\n tab = activeTabs[activeTabs.length - 1];\n }\n const content = isHTMLElement(tab as HTMLElement) ? getTargetElement(tab as HTMLElement) : null;\n return { tab, content };\n};\n\n/**\n * Returns a parent dropdown.\n *\n * @param element the `Tab` element\n * @returns the parent dropdown\n */\nconst getParentDropdown = (element?: HTMLElement): HTMLElement | null => {\n // istanbul ignore next @preserve\n if (!isHTMLElement(element)) return null;\n const dropdown = closest(element, `.${dropdownClasses.join(',.')}`);\n return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null;\n};\n\n// TAB EVENT HANDLER\n// =================\n/**\n * Handles the `click` event listener.\n *\n * @param e the `Event` object\n */\nconst tabClickHandler = (e: Event) => {\n const self = getTabInstance(e.target as HTMLElement);\n\n // istanbul ignore else @preserve\n if (self) {\n e.preventDefault();\n self.show();\n }\n};\n\n// TAB DEFINITION\n// ==============\n/** Creates a new `Tab` instance. */\nexport default class Tab extends BaseComponent {\n static selector = tabSelector;\n static init = tabInitCallback;\n static getInstance = getTabInstance;\n declare nav: HTMLElement | null;\n declare content: HTMLElement | null;\n declare tabContent: HTMLElement | null;\n declare nextContent: HTMLElement | null;\n declare dropdown: HTMLElement | null;\n\n /** @param target the target element */\n constructor(target: HTMLElement | string) {\n super(target);\n\n // initialization element\n const { element } = this;\n const content = getTargetElement(element);\n\n // no point initializing a tab without a corresponding content\n // istanbul ignore else @preserve\n if (content) {\n const nav = closest(element, '.nav');\n const container = closest(content, '.tab-content');\n\n this.nav = nav;\n this.content = content;\n this.tabContent = container;\n\n // event targets\n this.dropdown = getParentDropdown(element);\n\n // show first Tab instance of none is shown\n // suggested on #432\n const { tab } = getActiveTab(this);\n if (nav && !tab) {\n const firstTab = querySelector(tabSelector, nav);\n const firstTabContent = firstTab && getTargetElement(firstTab);\n\n // istanbul ignore else @preserve\n if (firstTabContent) {\n addClass(firstTab, activeClass);\n addClass(firstTabContent, showClass);\n addClass(firstTabContent, activeClass);\n setAttribute(element, ariaSelected, 'true');\n }\n }\n\n // add event listener\n this._toggleEventListeners(true);\n }\n }\n\n /**\n * Returns component name string.\n */\n get name() {\n return tabComponent;\n }\n\n // TAB PUBLIC METHODS\n // ==================\n /** Shows the tab to the user. */\n show() {\n const { element, content: nextContent, nav, dropdown } = this;\n\n // istanbul ignore else @preserve\n if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) {\n const { tab, content } = getActiveTab(this);\n\n // istanbul ignore else @preserve\n if (nav) {\n tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 });\n }\n\n // update relatedTarget and dispatch\n hideTabEvent.relatedTarget = element;\n\n // istanbul ignore else @preserve\n if (isHTMLElement(tab)) {\n dispatchEvent(tab as EventTarget, hideTabEvent);\n // istanbul ignore else @preserve\n if (!hideTabEvent.defaultPrevented) {\n addClass(element, activeClass);\n setAttribute(element, ariaSelected, 'true');\n\n const activeDropdown = isHTMLElement(tab) && getParentDropdown(tab);\n if (activeDropdown && hasClass(activeDropdown, activeClass)) {\n removeClass(activeDropdown, activeClass);\n }\n\n // istanbul ignore else @preserve\n if (nav) {\n const toggleTab = () => {\n // istanbul ignore else @preserve\n if (tab) {\n removeClass(tab, activeClass);\n setAttribute(tab, ariaSelected, 'false');\n }\n if (dropdown && !hasClass(dropdown, activeClass)) {\n addClass(dropdown, activeClass);\n }\n };\n\n if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) {\n Timer.set(nav, toggleTab, 1);\n } else toggleTab();\n }\n\n // istanbul ignore else @preserve\n if (content) {\n removeClass(content, showClass);\n if (hasClass(content, fadeClass)) {\n emulateTransitionEnd(content, () => triggerTabHide(this));\n } else {\n triggerTabHide(this);\n }\n }\n }\n }\n }\n }\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, event listener is added\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n action(this.element, mouseclickEvent, tabClickHandler);\n };\n\n /** Removes the `Tab` component from the target element. */\n dispose() {\n this._toggleEventListeners();\n super.dispose();\n }\n}\n","/** @type {string} */\nconst toastString = 'toast';\nexport default toastString;\n","/** @type {string} */\nconst toastComponent = 'Toast';\nexport default toastComponent;\n","/* Native JavaScript for Bootstrap 5 | Toast\n-------------------------------------------- */\nimport {\n addClass,\n closest,\n createCustomEvent,\n dispatchEvent,\n emulateTransitionEnd,\n focusinEvent,\n focusoutEvent,\n getDocument,\n getInstance,\n hasClass,\n mouseclickEvent,\n mouseenterEvent,\n mouseleaveEvent,\n querySelector,\n querySelectorAll,\n reflow,\n removeClass,\n Timer,\n} from '@thednp/shorty';\n\nimport { addListener, removeListener } from '@thednp/event-listener';\n\nimport fadeClass from '../strings/fadeClass';\nimport showClass from '../strings/showClass';\nimport dataBsDismiss from '../strings/dataBsDismiss';\nimport dataBsToggle from '../strings/dataBsToggle';\nimport toastString from '../strings/toastString';\nimport toastComponent from '../strings/toastComponent';\nimport getTargetElement from '../util/getTargetElement';\nimport BaseComponent from './base-component';\nimport { ToastEvent, ToastOptions } from '../interface/toast';\n\n// TOAST PRIVATE GC\n// ================\nconst toastSelector = `.${toastString}`;\nconst toastDismissSelector = `[${dataBsDismiss}=\"${toastString}\"]`;\nconst toastToggleSelector = `[${dataBsToggle}=\"${toastString}\"]`;\nconst showingClass = 'showing';\n/** @deprecated */\nconst hideClass = 'hide';\n\nconst toastDefaults = {\n animation: true,\n autohide: true,\n delay: 5000,\n};\n\n/**\n * Static method which returns an existing `Toast` instance associated\n * to a target `Element`.\n */\nconst getToastInstance = (element: HTMLElement) => getInstance(element, toastComponent);\n\n/**\n * A `Toast` initialization callback.\n */\nconst toastInitCallback = (element: HTMLElement) => new Toast(element);\n\n// TOAST CUSTOM EVENTS\n// ===================\nconst showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`);\nconst shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`);\nconst hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`);\nconst hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`);\n\n// TOAST PRIVATE METHODS\n// =====================\n/**\n * Executes after the toast is shown to the user.\n *\n * @param self the `Toast` instance\n */\nconst showToastComplete = (self: Toast) => {\n const { element, options } = self;\n removeClass(element, showingClass);\n Timer.clear(element, showingClass);\n\n dispatchEvent(element, shownToastEvent);\n // istanbul ignore else @preserve\n if (options.autohide) {\n Timer.set(element, () => self.hide(), options.delay, toastString);\n }\n};\n\n/**\n * Executes after the toast is hidden to the user.\n *\n * @param self the `Toast` instance\n */\nconst hideToastComplete = (self: Toast) => {\n const { element } = self;\n removeClass(element, showingClass);\n removeClass(element, showClass);\n addClass(element, hideClass); // B/C\n Timer.clear(element, toastString);\n dispatchEvent(element, hiddenToastEvent);\n};\n\n/**\n * Executes before hiding the toast.\n *\n * @param self the `Toast` instance\n */\nconst hideToast = (self: Toast) => {\n const { element, options } = self;\n addClass(element, showingClass);\n\n if (options.animation) {\n reflow(element);\n emulateTransitionEnd(element, () => hideToastComplete(self));\n } else {\n hideToastComplete(self);\n }\n};\n\n/**\n * Executes before showing the toast.\n *\n * @param self the `Toast` instance\n */\nconst showToast = (self: Toast) => {\n const { element, options } = self;\n Timer.set(\n element,\n () => {\n removeClass(element, hideClass); // B/C\n reflow(element);\n addClass(element, showClass);\n addClass(element, showingClass);\n\n if (options.animation) {\n emulateTransitionEnd(element, () => showToastComplete(self));\n } else {\n showToastComplete(self);\n }\n },\n 17,\n showingClass,\n );\n};\n\n// TOAST EVENT HANDLERS\n// ====================\n/**\n * Handles the `click` event listener for toast.\n *\n * @param e the `Event` object\n */\nconst toastClickHandler = (e: Event) => {\n const { target } = e;\n\n const trigger = target && closest(target as HTMLElement, toastToggleSelector);\n const element = trigger && getTargetElement(trigger);\n const self = element && getToastInstance(element);\n\n // istanbul ignore else @preserve\n if (self) {\n // istanbul ignore else @preserve\n if (trigger && trigger.tagName === 'A') e.preventDefault();\n self.relatedTarget = trigger;\n self.show();\n }\n};\n\n/**\n * Executes when user interacts with the toast without closing it,\n * usually by hovering or focusing it.\n *\n * @param e the `Toast` instance\n */\nconst interactiveToastHandler = (e: MouseEvent) => {\n const element = e.target as HTMLElement;\n const self = getToastInstance(element);\n const { type, relatedTarget } = e;\n\n // istanbul ignore else @preserve: a solid filter is required\n if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) {\n if ([mouseenterEvent, focusinEvent].includes(type)) {\n Timer.clear(element, toastString);\n } else {\n Timer.set(element, () => self.hide(), self.options.delay, toastString);\n }\n }\n};\n\n// TOAST DEFINITION\n// ================\n/** Creates a new `Toast` instance. */\nexport default class Toast extends BaseComponent {\n static selector = toastSelector;\n static init = toastInitCallback;\n static getInstance = getToastInstance;\n declare options: ToastOptions;\n declare dismiss: HTMLElement | null;\n declare triggers: HTMLElement[];\n declare relatedTarget: HTMLElement | null;\n\n /**\n * @param target the target `.toast` element\n * @param config the instance options\n */\n constructor(target: HTMLElement | string, config?: Partial) {\n super(target, config);\n const { element, options } = this;\n\n // set fadeClass, the options.animation will override the markup\n if (options.animation && !hasClass(element, fadeClass)) {\n addClass(element, fadeClass);\n } else if (!options.animation && hasClass(element, fadeClass)) {\n removeClass(element, fadeClass);\n }\n\n // dismiss button\n this.dismiss = querySelector(toastDismissSelector, element);\n\n // toast can have multiple triggering elements\n this.triggers = [...querySelectorAll(toastToggleSelector, getDocument(element))].filter(\n btn => getTargetElement(btn) === element,\n );\n\n // add event listener\n this._toggleEventListeners(true);\n }\n /**\n * Returns component name string.\n */\n get name() {\n return toastComponent;\n }\n /**\n * Returns component default options.\n */\n get defaults() {\n return toastDefaults;\n }\n /**\n * Returns *true* when toast is visible.\n */\n get isShown() {\n return hasClass(this.element, showClass);\n }\n\n // TOAST PUBLIC METHODS\n // ====================\n /** Shows the toast. */\n show = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && !isShown) {\n dispatchEvent(element, showToastEvent);\n if (!showToastEvent.defaultPrevented) {\n showToast(this);\n }\n }\n };\n\n /** Hides the toast. */\n hide = () => {\n const { element, isShown } = this;\n\n // istanbul ignore else @preserve\n if (element && isShown) {\n dispatchEvent(element, hideToastEvent);\n if (!hideToastEvent.defaultPrevented) {\n hideToast(this);\n }\n }\n };\n\n /**\n * Toggles on/off the `click` event listener.\n *\n * @param add when `true`, it will add the listener\n */\n _toggleEventListeners = (add?: boolean) => {\n const action = add ? addListener : removeListener;\n const { element, triggers, dismiss, options, hide } = this;\n\n // istanbul ignore else @preserve\n if (dismiss) {\n action(dismiss, mouseclickEvent, hide);\n }\n\n // istanbul ignore else @preserve\n if (options.autohide) {\n [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e =>\n action(element, e, interactiveToastHandler),\n );\n }\n // istanbul ignore else @preserve\n if (triggers.length) {\n triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler));\n }\n };\n\n /** Removes the `Toast` component from the target element. */\n dispose() {\n const { element, isShown } = this;\n this._toggleEventListeners();\n Timer.clear(element, toastString);\n\n if (isShown) {\n removeClass(element, showClass);\n }\n super.dispose();\n }\n}\n","import { Data, getElementsByTagName, matches } from '@thednp/shorty';\n\nimport { addListener } from '@thednp/event-listener';\n\nimport Alert from '../components/alert';\nimport Button from '../components/button';\nimport Carousel from '../components/carousel';\nimport Collapse from '../components/collapse';\nimport Dropdown from '../components/dropdown';\nimport Modal from '../components/modal';\nimport Offcanvas from '../components/offcanvas';\nimport Popover from '../components/popover';\nimport ScrollSpy from '../components/scrollspy';\nimport Tab from '../components/tab';\nimport Toast from '../components/toast';\nimport Tooltip from '../components/tooltip';\n\nconst componentsList = new Map<\n string,\n | typeof Alert\n | typeof Button\n | typeof Carousel\n | typeof Collapse\n | typeof Dropdown\n | typeof Modal\n | typeof Offcanvas\n | typeof Popover\n | typeof ScrollSpy\n | typeof Tab\n | typeof Toast\n | typeof Tooltip\n>();\n\ntype Component =\n | Alert\n | Button\n | Carousel\n | Collapse\n | Dropdown\n | Modal\n | Offcanvas\n | Popover\n | ScrollSpy\n | Tab\n | Toast\n | Tooltip;\n\n[Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c =>\n componentsList.set(c.prototype.name, c),\n);\n\n/**\n * Initialize all matched `Element`s for one component.\n *\n * @param callback\n * @param collection\n */\nconst initComponentDataAPI = (\n callback: (el: HTMLElement) => Component,\n collection: HTMLCollectionOf | HTMLElement[],\n) => {\n [...collection].forEach(x => callback(x));\n};\n\n/**\n * Remove one component from a target container element or all in the page.\n *\n * @param component the component name\n * @param context parent `Node`\n */\nconst removeComponentDataAPI = (component: string, context: ParentNode) => {\n const compData = Data.getAllFor(component) as Map;\n\n if (compData) {\n [...compData].forEach(([element, instance]) => {\n if (context.contains(element)) {\n (instance as T & { dispose: () => void }).dispose();\n }\n });\n }\n};\n\n/**\n * Initialize all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const initCallback = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n const elemCollection = [...getElementsByTagName('*', lookUp)];\n\n componentsList.forEach(cs => {\n const { init, selector } = cs;\n initComponentDataAPI(\n init,\n elemCollection.filter(item => matches(item, selector)),\n );\n });\n};\n\n/**\n * Remove all BSN components for a target container.\n *\n * @param context parent `Node`\n */\nexport const removeDataAPI = (context?: ParentNode) => {\n const lookUp = context && context.nodeName ? context : document;\n\n componentsList.forEach(comp => {\n removeComponentDataAPI(comp.prototype.name, lookUp);\n });\n};\n\n// Bulk initialize all components\nif (document.body) initCallback();\nelse {\n addListener(document, 'DOMContentLoaded', () => initCallback(), {\n once: true,\n });\n}\n"],"names":["we","Ae","X","Te","ke","De","P","ot","st","ct","ut","dt","ft","gt","Et","bt","ht","Dt","Ot","Lt","zt","Ht","Ut","Ve","qt","Je","Xe","Ye","Ze","sn","Jt","Xt","C","W","Yt","A","Zt","S","z","V","An","N","R","e","n","o","s","Q","$t","c","_t","j","te","In","zn","Bn","Fn","Hn","v","i","l","E","L","Rn","M","q","G","d","T","ee","K","g","ce","re","qn","a","u","Jn","B","w","ae","Xn","p","r","f","y","J","Zn","to","eo","no","oo","I","ie","m","so","ue","x","le","de","ro","h","ao","k","pe","lo","F","H","b","me","fo","ge","vo","ho","Mo","To","Do","Ee","Co","be","Io","xo","fadeClass","showClass","dataBsDismiss","alertString","alertComponent","Version","BaseComponent","target","config","__publicField","element","isHTMLElement","isString","querySelector","prevInstance","Data","ObjectKeys","normalizeOptions","prop","alertSelector","alertDismissSelector","getAlertInstance","getInstance","alertInitCallback","Alert","closeAlertEvent","createCustomEvent","closedAlertEvent","alertTransitionEnd","self","dispatchEvent","hasClass","removeClass","emulateTransitionEnd","add","action","addListener","removeListener","dismiss","close","mouseclickEvent","activeClass","dataBsToggle","buttonString","buttonComponent","buttonSelector","getButtonInstance","buttonInitCallback","Button","isActive","getAttribute","addClass","setAttribute","ariaPressed","dataBsTarget","carouselString","carouselComponent","dataBsParent","dataBsContainer","getTargetElement","targetAttr","doc","getDocument","att","attValue","closest","carouselSelector","carouselItem","dataBsSlideTo","dataBsSlide","pausedClass","carouselDefaults","getCarouselInstance","carouselInitCallback","Carousel","startX","currentX","endX","carouselSlideEvent","carouselSlidEvent","carouselTransitionEndHandler","index","direction","slides","options","activeItem","getActiveIndex","orientation","directionClass","Timer","carouselPauseHandler","carouselResumeHandler","carouselIndicatorHandler","newIndex","carouselControlsHandler","carouselKeyHandler","code","querySelectorAll","isElementInScrollRange","RTL","isRTL","arrowKeyNext","keyArrowLeft","keyArrowRight","arrowKeyPrev","carouselDragHandler","carouselPointerDownHandler","controls","indicators","el","toggleCarouselTouchHandlers","carouselPointerMoveHandler","carouselPointerUpHandler","_a","activateCarouselIndicator","pointermoveEvent","passiveHandler","pointerupEvent","touch","pause","interval","keyboard","mouseenterEvent","mouseleaveEvent","pointerdownEvent","touchstartEvent","dragstartEvent","arrow","indicator","keydownEvent","getElementsByClassName","activeIndex","transitionItem","matches","ar","isPaused","idx","next","eventProperties","ObjectAssign","getElementTransitionDuration","reflow","isAnimating","clone","collapsingClass","collapseString","collapseComponent","collapseSelector","collapseToggleSelector","collapseDefaults","getCollapseInstance","collapseInitCallback","Collapse","showCollapseEvent","shownCollapseEvent","hideCollapseEvent","hiddenCollapseEvent","expandCollapse","parent","triggers","noop","setElementStyle","btn","ariaExpanded","collapseContent","collapseClickHandler","trigger","activeCollapse","activeCollapseInstance","dropdownMenuClasses","dropdownComponent","dropdownMenuClass","isEmptyAnchor","parentAnchor","hasAttribute","dropdownString","dropupString","dropstartString","dropendString","dropdownClasses","dropdownSelector","getDropdownInstance","dropdownInitCallback","Dropdown","dropdownMenuEndClass","verticalClass","horizontalClass","menuFocusTags","dropdownDefaults","showDropdownEvent","shownDropdownEvent","hideDropdownEvent","hiddenDropdownEvent","updatedDropdownEvent","styleDropdown","menu","parentElement","offset","getElementStyle","menuEnd","style","positionClass","dropdownMargin","dropdownPosition","menuWidth","menuHeight","clientWidth","clientHeight","getDocumentElement","targetLeft","targetTop","targetWidth","targetHeight","getBoundingClientRect","leftFullExceed","rightFullExceed","bottomExceed","bottomFullExceed","topExceed","leftExceed","rightExceed","posAjust","margins","getMenuItems","firstElementChild","toggleDropdownDismiss","dropdownDismissHandler","focusEvent","dropdownPreventScroll","keyupEvent","dropdownKeyHandler","scrollEvent","resizeEvent","ev","getWindow","dropdownLayoutHandler","getCurrentOpenDropdown","currentParent","type","isForm","mousedownEvent","dropdownClickHandler","keyArrowDown","keyArrowUp","activeElement","open","menuItems","focus","keyEscape","currentElement","currentInstance","modalString","modalComponent","offcanvasComponent","fixedTopClass","fixedBottomClass","stickyTopClass","positionStickyClass","getFixedItems","resetScrollbar","bd","getDocumentBody","fixedItems","fixed","measureScrollbar","innerWidth","setScrollbar","overflow","bodyPad","sbWidth","itemPadValue","itemMValue","offcanvasString","popupContainer","createElement","appendPopup","customContainer","containerIsBody","isNode","lookup","BODY","removePopup","hasPopup","backdropString","modalBackdropClass","offcanvasBackdropClass","modalActiveSelector","offcanvasActiveSelector","overlay","getCurrentOpen","toggleOverlayType","isModal","targetClass","appendOverlay","hasFade","showOverlay","hideOverlay","removeOverlay","isVisible","modalSelector","modalToggleSelector","modalDismissSelector","modalStaticClass","modalDefaults","getModalInstance","modalInitCallback","Modal","showModalEvent","shownModalEvent","hideModalEvent","hiddenModalEvent","setModalScrollbar","scrollbarWidth","scrollHeight","modalHeight","modalScrollHeight","modalOverflow","padStyle","toggleModalDismiss","update","modalDismissHandler","modalKeyHandler","afterModalHide","relatedTarget","focusElement","toggleFocusTrap","afterModalShow","beforeModalShow","removeAttribute","ariaHidden","ariaModal","beforeModalHide","modalClickHandler","currentTarget","isStatic","modalDialog","backdrop","selectedText","targetInsideDialog","staticTransitionEnd","duration","overlayDelay","currentOpen","that","callback","offcanvasSelector","offcanvasToggleSelector","offcanvasDismissSelector","offcanvasTogglingClass","offcanvasDefaults","getOffcanvasInstance","offcanvasInitCallback","Offcanvas","showOffcanvasEvent","shownOffcanvasEvent","hideOffcanvasEvent","hiddenOffcanvasEvent","setOffCanvasScrollbar","toggleOffCanvasDismiss","offcanvasKeyDismissHandler","offcanvasDismissHandler","beforeOffcanvasShow","showOffcanvasComplete","beforeOffcanvasHide","hideOffcanvasComplete","offcanvasTriggerHandler","offCanvasDismiss","selection","visibleTrigger","isOpen","popoverString","popoverComponent","tooltipString","getTipTemplate","tipType","isTooltip","bodyClass","header","body","tipClassPositions","styleTip","tipClasses","tooltip","container","tipPositions","isPopover","tipWidth","tipHeight","htmlcw","htmlch","htmlow","placement","parentCWidth","parentOWidth","fixedParent","leftBoundry","rightBoundry","elemWidth","elemHeight","elemRectLeft","elemRectRight","elemRectTop","topPosition","bottomPosition","leftPosition","rightPosition","arrowTop","arrowLeft","arrowRight","arrowWidth","arrowHeight","arrowAdjust","horizontals","verticals","updatedTooltipEvent","toLowerCase","tooltipDefaults","dataOriginalTitle","tooltipComponent","setHtml","content","sanitizeFn","dirty","isFunction","tempDocument","isNodeList","isArray","createTip","id","title","template","animation","customClass","dismissible","btnClose","tipString","titleParts","contentParts","placementClass","tooltipTemplate","htmlMarkup","tooltipHeader","tooltipBody","tempTitle","tempContent","tempBtn","getElementContainer","majorBlockTags","containers","parentNode","getParentNode","isShadowRoot","isTableElement","tooltipSelector","titleAttr","getTooltipInstance","tooltipInitCallback","Tooltip","removeTooltip","offsetParent","ariaDescribedBy","hasTip","disposeTooltipComplete","toggleTooltipTitle","toggleTooltipAction","tooltipShownAction","shownTooltipEvent","tooltipHiddenAction","hiddenTooltipEvent","toggleTooltipOpenHandlers","offsetHeight","parentModal","parentOffcanvas","win","scrollTarget","titleAtt","tr","mousehoverEvent","focusinEvent","focusoutEvent","isApple","tipComponent","elem","getUID","position","outTimer","tipContainer","showTooltipEvent","delay","hideTooltipEvent","enabled","popoverSelector","popoverDefaults","getPopoverInstance","popoverInitCallback","Popover","scrollspyString","scrollspyComponent","scrollspySelector","scrollspyDefaults","getScrollSpyInstance","scrollspyInitCallback","ScrollSpy","activateScrollSpy","updateSpyTargets","itemsLength","isWin","isWindow","links","getElementsByTagName","scrollHEIGHT","getScrollHeight","href","targetItem","rect","getOffsetHeight","link","clear","item","activate","parents","parentItem","menuItem","parentLink","scrollTop","maxScroll","items","newActiveItem","offsets","tabString","tabComponent","tabSelector","getTabInstance","tabInitCallback","Tab","showTabEvent","shownTabEvent","hideTabEvent","hiddenTabEvent","tabPrivate","triggerTabEnd","tabContent","nav","triggerTabShow","nextContent","tab","currentHeight","nextHeight","triggerTabHide","getActiveTab","activeTabs","getParentDropdown","dropdown","tabClickHandler","firstTab","firstTabContent","ariaSelected","activeDropdown","toggleTab","toastString","toastComponent","toastSelector","toastDismissSelector","toastToggleSelector","showingClass","hideClass","toastDefaults","getToastInstance","toastInitCallback","Toast","showToastEvent","shownToastEvent","hideToastEvent","hiddenToastEvent","showToastComplete","hideToastComplete","hideToast","showToast","toastClickHandler","interactiveToastHandler","isShown","hide","componentsList","initComponentDataAPI","collection","removeComponentDataAPI","component","context","compData","instance","initCallback","lookUp","elemCollection","cs","init","selector","removeDataAPI","comp"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 88b88673..00000000 --- a/package-lock.json +++ /dev/null @@ -1,9530 +0,0 @@ -{ - "name": "bootstrap.native", - "version": "5.0.11", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "bootstrap.native", - "version": "5.0.11", - "license": "MIT", - "dependencies": { - "@thednp/event-listener": "^2.0.4", - "@thednp/shorty": "^2.0.0" - }, - "devDependencies": { - "@bahmutov/cypress-esbuild-preprocessor": "^2.2.0", - "@cypress/code-coverage": "^3.12.12", - "@types/istanbul-lib-instrument": "^1.7.7", - "@types/node": "^20.10.0", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", - "cypress": "^13.6.0", - "dts-bundle-generator": "^8.1.2", - "eslint": "^8.54.0", - "eslint-plugin-jsdoc": "^46.9.0", - "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-prettier": "^4.2.1", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-instrument": "^5.2.1", - "ncp": "^2.0.0", - "nyc": "^15.1.0", - "prettier": "^2.8.8", - "rimraf": "^5.0.5", - "typescript": "^5.3.2", - "vite": "^4.5.0" - }, - "engines": { - "node": ">=16", - "pnpm": ">=8.6.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.3.tgz", - "integrity": "sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.3.tgz", - "integrity": "sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.3.tgz", - "integrity": "sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.3.tgz", - "integrity": "sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.3.tgz", - "integrity": "sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.3.tgz", - "integrity": "sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.3.tgz", - "integrity": "sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.3.tgz", - "integrity": "sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.3.tgz", - "integrity": "sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.3.tgz", - "integrity": "sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.3.tgz", - "integrity": "sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.3.tgz", - "integrity": "sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.3.tgz", - "integrity": "sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true, - "peer": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bahmutov/cypress-esbuild-preprocessor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@bahmutov/cypress-esbuild-preprocessor/-/cypress-esbuild-preprocessor-2.2.0.tgz", - "integrity": "sha512-pTvxRi6+OFsXy6uCn/HlO5zi0fUZWbiCtTiLTDf/+kgEfZ/Y8WIxZ2pjuir9MEM8prQenBw60TLcM0wcazh7+Q==", - "dev": true, - "dependencies": { - "debug": "4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.17.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cypress/code-coverage": { - "version": "3.12.13", - "resolved": "https://registry.npmjs.org/@cypress/code-coverage/-/code-coverage-3.12.13.tgz", - "integrity": "sha512-T89OymsdSTcVKtdEqkKjHAKpDR0JCWxIgRBlldEcCAtDYW4Bo8QM+gkE75I18iixcPVCQbnZ9m6fx8Rl6ddc+w==", - "dev": true, - "dependencies": { - "@cypress/webpack-preprocessor": "^6.0.0", - "chalk": "4.1.2", - "dayjs": "1.11.10", - "debug": "4.3.4", - "execa": "4.1.0", - "globby": "11.1.0", - "istanbul-lib-coverage": "^3.0.0", - "js-yaml": "4.1.0", - "nyc": "15.1.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.1", - "@babel/preset-env": "^7.0.0", - "babel-loader": "^8.3 || ^9", - "cypress": "*", - "webpack": "^4 || ^5" - } - }, - "node_modules/@cypress/code-coverage/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@cypress/code-coverage/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@cypress/code-coverage/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@cypress/code-coverage/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@cypress/code-coverage/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cypress/code-coverage/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@cypress/request": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", - "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "6.10.4", - "safe-buffer": "^5.1.2", - "tough-cookie": "^4.1.3", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@cypress/webpack-preprocessor": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@cypress/webpack-preprocessor/-/webpack-preprocessor-6.0.0.tgz", - "integrity": "sha512-1AS1Et5CNPJii0+DdBZBS8e0hlM2BkBNmYRdZO4/16A3KS3em1sjPZtFw7jJF00m6DYAdB9iy6QW/lLZ2bN0gg==", - "dev": true, - "dependencies": { - "bluebird": "3.7.1", - "debug": "^4.3.4", - "lodash": "^4.17.20" - }, - "peerDependencies": { - "@babel/core": "^7.0.1", - "@babel/preset-env": "^7.0.0", - "babel-loader": "^8.3 || ^9", - "webpack": "^4 || ^5" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.41.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.41.0.tgz", - "integrity": "sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==", - "dev": true, - "dependencies": { - "comment-parser": "1.4.1", - "esquery": "^1.5.0", - "jsdoc-type-pratt-parser": "~4.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.6.tgz", - "integrity": "sha512-muPzBqXJKCbMYoNbb1JpZh/ynl0xS6/+pLjrofcR3Nad82SbsCogYzUE6Aq9QT3cLP0jR/IVK/NHC9b90mSHtg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.6.tgz", - "integrity": "sha512-KQ/hbe9SJvIJ4sR+2PcZ41IBV+LPJyYp6V1K1P1xcMRup9iYsBoQn4MzE3mhMLOld27Au2eDcLlIREeKGUXpHQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.6.tgz", - "integrity": "sha512-VVJVZQ7p5BBOKoNxd0Ly3xUM78Y4DyOoFKdkdAe2m11jbh0LEU4bPles4e/72EMl4tapko8o915UalN/5zhspg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.6.tgz", - "integrity": "sha512-91LoRp/uZAKx6ESNspL3I46ypwzdqyDLXZH7x2QYCLgtnaU08+AXEbabY2yExIz03/am0DivsTtbdxzGejfXpA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.6.tgz", - "integrity": "sha512-QCGHw770ubjBU1J3ZkFJh671MFajGTYMZumPs9E/rqU52md6lIil97BR0CbPq6U+vTh3xnTNDHKRdR8ggHnmxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.6.tgz", - "integrity": "sha512-J53d0jGsDcLzWk9d9SPmlyF+wzVxjXpOH7jVW5ae7PvrDst4kiAz6sX+E8btz0GB6oH12zC+aHRD945jdjF2Vg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.6.tgz", - "integrity": "sha512-hn9qvkjHSIB5Z9JgCCjED6YYVGCNpqB7dEGavBdG6EjBD8S/UcNUIlGcB35NCkMETkdYwfZSvD9VoDJX6VeUVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.6.tgz", - "integrity": "sha512-G8IR5zFgpXad/Zp7gr7ZyTKyqZuThU6z1JjmRyN1vSF8j0bOlGzUwFSMTbctLAdd7QHpeyu0cRiuKrqK1ZTwvQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.6.tgz", - "integrity": "sha512-HQCOrk9XlH3KngASLaBfHpcoYEGUt829A9MyxaI8RMkfRA8SakG6YQEITAuwmtzFdEu5GU4eyhKcpv27dFaOBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.6.tgz", - "integrity": "sha512-22eOR08zL/OXkmEhxOfshfOGo8P69k8oKHkwkDrUlcB12S/sw/+COM4PhAPT0cAYW/gpqY2uXp3TpjQVJitz7w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.6.tgz", - "integrity": "sha512-82RvaYAh/SUJyjWA8jDpyZCHQjmEggL//sC7F3VKYcBMumQjUL3C5WDl/tJpEiKtt7XrWmgjaLkrk205zfvwTA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.6.tgz", - "integrity": "sha512-8tvnwyYJpR618vboIv2l8tK2SuK/RqUIGMfMENkeDGo3hsEIrpGldMGYFcWxWeEILe5Fi72zoXLmhZ7PR23oQA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.6.tgz", - "integrity": "sha512-Qt+D7xiPajxVNk5tQiEJwhmarNnLPdjXAoA5uWMpbfStZB0+YU6a3CtbWYSy+sgAsnyx4IGZjWsTzBzrvg/fMA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.6.tgz", - "integrity": "sha512-lxRdk0iJ9CWYDH1Wpnnnc640ajF4RmQ+w6oHFZmAIYu577meE9Ka/DCtpOrwr9McMY11ocbp4jirgGgCi7Ls/g==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.6.tgz", - "integrity": "sha512-MopyYV39vnfuykHanRWHGRcRC3AwU7b0QY4TI8ISLfAGfK+tMkXyFuyT1epw/lM0pflQlS53JoD22yN83DHZgA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.6.tgz", - "integrity": "sha512-UWcieaBzsN8WYbzFF5Jq7QULETPcQvlX7KL4xWGIB54OknXJjBO37sPqk7N82WU13JGWvmDzFBi1weVBajPovg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.6.tgz", - "integrity": "sha512-EpWiLX0fzvZn1wxtLxZrEW+oQED9Pwpnh+w4Ffv8ZLuMhUoqR9q9rL4+qHW8F4Mg5oQEKxAoT0G+8JYNqCiR6g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.6.tgz", - "integrity": "sha512-fFqTVEktM1PGs2sLKH4M5mhAVEzGpeZJuasAMRnvDZNCV0Cjvm1Hu35moL2vC0DOrAQjNTvj4zWrol/lwQ8Deg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.6.tgz", - "integrity": "sha512-M+XIAnBpaNvaVAhbe3uBXtgWyWynSdlww/JNZws0FlMPSBy+EpatPXNIlKAdtbFVII9OpX91ZfMb17TU3JKTBA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.6.tgz", - "integrity": "sha512-2DchFXn7vp/B6Tc2eKdTsLzE0ygqKkNUhUBCNtMx2Llk4POIVMUq5rUYjdcedFlGLeRe1uLCpVvCmE+G8XYybA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.6.tgz", - "integrity": "sha512-PBo/HPDQllyWdjwAVX+Gl2hH0dfBydL97BAH/grHKC8fubqp02aL4S63otZ25q3sBdINtOBbz1qTZQfXbP4VBg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.6.tgz", - "integrity": "sha512-OE7yIdbDif2kKfrGa+V0vx/B3FJv2L4KnIiLlvtibPyO9UkgO3rzYE0HhpREo2vmJ1Ixq1zwm9/0er+3VOSZJA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@thednp/event-listener": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@thednp/event-listener/-/event-listener-2.0.4.tgz", - "integrity": "sha512-sc4B7AzYAIvnGnivirq0XyR7LfzEDhGiiB70Q0qdNn8wSJ2pL1buVAsEZxrlc47qRJiBV4YIP+BFkyMm2r3NLg==", - "engines": { - "node": ">=16", - "pnpm": ">=8.6.0" - } - }, - "node_modules/@thednp/shorty": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@thednp/shorty/-/shorty-2.0.0.tgz", - "integrity": "sha512-kwtLivCxYIoFfGIVU4NlZtfdA/zxZ6X8UcWaJrb7XqU3WQ4Q1p5IaZlLBfOVAO06WH5oWE87QUdK/dS56Wnfjg==", - "engines": { - "node": ">=16", - "pnpm": ">=8.6.0" - } - }, - "node_modules/@types/babel-types": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.14.tgz", - "integrity": "sha512-5BC5W3pCoX12SH8nC8ReAOiMBy/rd9xil3es3S6dh83Pl9i4J3ZujfWUu5mXnEwo/WLqcD5+uj9Yk115Dh0obw==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.44.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", - "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true, - "peer": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-instrument": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.7.tgz", - "integrity": "sha512-xyV3cVIhVuVAT7wyJXT+lliOo4b7BpfsnfCDy0/nuuAX+J7RB2rWNDV/7hkmv62vwqAD2XQ2Fgt6OwWGWEYfvg==", - "dev": true, - "dependencies": { - "@types/babel-types": "*", - "@types/istanbul-lib-coverage": "*", - "source-map": "^0.6.1" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "20.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", - "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/semver": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.5.tgz", - "integrity": "sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==", - "dev": true - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true - }, - "node_modules/@types/sizzle": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz", - "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "peer": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "peer": true - }, - "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", - "dev": true, - "peer": true, - "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, - "node_modules/bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "peer": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001563", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "peer": true - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.33.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz", - "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==", - "dev": true, - "peer": true, - "dependencies": { - "browserslist": "^4.22.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cypress": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", - "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@cypress/request": "^3.0.0", - "@cypress/xvfb": "^1.2.4", - "@types/node": "^18.17.5", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.6.0", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-ci": "^3.0.0", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.1", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": "^16.0.0 || ^18.0.0 || >=20.0.0" - } - }, - "node_modules/cypress/node_modules/@types/node": { - "version": "18.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", - "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cypress/node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cypress/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/cypress/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cypress/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cypress/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/cypress/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dayjs": { - "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", - "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dts-bundle-generator": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-8.1.2.tgz", - "integrity": "sha512-/yvy9Xw0cfFodA8n6jEq8/COZ/WXgJtPabnLBAzIfP/TfxWbD/0a0dvfqNHneNqswQrH0kUcaAfGJC9UNvH97w==", - "dev": true, - "dependencies": { - "typescript": ">=5.0.2", - "yargs": "^17.6.0" - }, - "bin": { - "dts-bundle-generator": "dist/bin/dts-bundle-generator.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.588", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.588.tgz", - "integrity": "sha512-soytjxwbgcCu7nh5Pf4S2/4wa6UIu+A3p03U2yVr53qGxi1/VTR3ENI+p50v+UxqqZAfl48j3z55ud7VHIOr9w==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true, - "peer": true - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.19.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.6.tgz", - "integrity": "sha512-Xl7dntjA2OEIvpr9j0DVxxnog2fyTGnyVoQXAMQI6eR3mf9zCQds7VIKUDCotDgE/p4ncTgeRqgX8t5d6oP4Gw==", - "dev": true, - "hasInstallScript": true, - "peer": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.6", - "@esbuild/android-arm64": "0.19.6", - "@esbuild/android-x64": "0.19.6", - "@esbuild/darwin-arm64": "0.19.6", - "@esbuild/darwin-x64": "0.19.6", - "@esbuild/freebsd-arm64": "0.19.6", - "@esbuild/freebsd-x64": "0.19.6", - "@esbuild/linux-arm": "0.19.6", - "@esbuild/linux-arm64": "0.19.6", - "@esbuild/linux-ia32": "0.19.6", - "@esbuild/linux-loong64": "0.19.6", - "@esbuild/linux-mips64el": "0.19.6", - "@esbuild/linux-ppc64": "0.19.6", - "@esbuild/linux-riscv64": "0.19.6", - "@esbuild/linux-s390x": "0.19.6", - "@esbuild/linux-x64": "0.19.6", - "@esbuild/netbsd-x64": "0.19.6", - "@esbuild/openbsd-x64": "0.19.6", - "@esbuild/sunos-x64": "0.19.6", - "@esbuild/win32-arm64": "0.19.6", - "@esbuild/win32-ia32": "0.19.6", - "@esbuild/win32-x64": "0.19.6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.9.0.tgz", - "integrity": "sha512-UQuEtbqLNkPf5Nr/6PPRCtr9xypXY+g8y/Q7gPa0YK7eDhh0y2lWprXRnaYbW7ACgIUvpDKy9X2bZqxtGzBG9Q==", - "dev": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.41.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.4", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/eslint-plugin-prefer-arrow": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", - "integrity": "sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==", - "dev": true, - "peerDependencies": { - "eslint": ">=2.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "peer": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "peer": true - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "peer": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "peer": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, - "engines": { - "node": "> 0.8" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/listr2": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", - "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.1", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true, - "peer": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-update/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "peer": true - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/nyc/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/nyc/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/nyc/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "peer": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", - "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", - "dev": true, - "peer": true, - "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "peer": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "peer": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "peer": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "peer": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "peer": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.10.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", - "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true, - "peer": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "peer": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true, - "peer": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "peer": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "peer": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "peer": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "peer": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/throttleit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", - "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tmp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "peer": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", - "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", - "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.89.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", - "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.15.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index fb5acb0e..003d5dd2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bootstrap.native", - "version": "5.0.14", + "version": "5.0.15", "author": "thednp", "license": "MIT", "description": "Bootstrap components build with Typescript", @@ -78,22 +78,22 @@ "scripts": { "format": "prettier --write \"src/**/*.ts\"", "pre-test": "pnpm clean-coverage", - "clean-coverage": "rimraf coverage .nyc_output", - "test": "pnpm pre-test && cypress run", "dev": "vite --open ./docs/index-dev.html --port 8577", - "cypress": "npx cypress open", - "badges": "npx -p dependency-version-badge update-badge typescript eslint cypress vite prettier", - "coverage:report": "nyc report --reporter=lcov --reporter=json --reporter=text --reporter=json-summary", - "build": "pnpm check:ts && pnpm lint:ts && pnpm build-vite && pnpm build-components && pnpm dts && pnpm copy-docs", + "test": "pnpm pre-test && vitest --config vitest.config.mts", + "test-ui": "pnpm pre-test && vitest --config vitest.config-ui.mts --browser=chrome", + "clean-coverage": "rm -rf coverage .nyc_output", + "badges": "npx -p dependency-version-badge update-badge typescript eslint vitest vite", + "build": "pnpm build-vite && pnpm build-components && pnpm dts && pnpm copy-docs", "build-vite-with-dts": "vite build && pnpm copy-docs", "build-vite": "vite build && pnpm copy-docs", - "build-components": "vite build --config vite.config.components.ts", + "build-components": "vite build --config vite.config.components.mts", "dts": "dts-bundle-generator --config ./dts.config.cjs --project ./tsconfig.json", - "copy-docs": "ncp dist/bootstrap-native.js docs/assets/js/bootstrap-native.js && ncp dist/bootstrap-native.js.map docs/assets/js/bootstrap-native.js.map", + "copy-docs": "cp dist/bootstrap-native.js docs/assets/js/bootstrap-native.js && cp dist/bootstrap-native.js.map docs/assets/js/bootstrap-native.js.map", + "lint": "pnpm lint:ts && pnpm check:ts", "check:ts": "tsc --noEmit", "lint:ts": "eslint -c .eslintrc.cjs --ext .ts src", "fix:ts": "eslint -c .eslintrc.cjs --ext .ts src --fix", - "prepublishOnly": "pnpm up && pnpm format && pnpm build && pnpm badges" + "prepublishOnly": "pnpm up && pnpm lint && pnpm format && pnpm build && pnpm badges" }, "bugs": { "url": "https://github.com/thednp/bootstrap.native/issues" @@ -113,30 +113,26 @@ "typescript" ], "dependencies": { - "@thednp/event-listener": "^2.0.5", - "@thednp/shorty": "^2.0.3" + "@thednp/event-listener": "^2.0.6", + "@thednp/shorty": "^2.0.5" }, "devDependencies": { - "@bahmutov/cypress-esbuild-preprocessor": "^2.2.1", - "@cypress/code-coverage": "^3.12.44", - "@types/istanbul-lib-instrument": "^1.7.7", - "@types/node": "^20.14.11", + "@types/node": "^20.17.1", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", - "cypress": "^13.13.1", + "@vitest/browser": "^2.1.3", + "@vitest/coverage-istanbul": "^2.1.3", + "@vitest/ui": "^2.1.3", "dts-bundle-generator": "^9.5.1", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-plugin-jsdoc": "^46.10.1", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prettier": "^4.2.1", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-instrument": "^5.2.1", - "ncp": "^2.0.0", - "nyc": "^15.1.0", + "playwright": "^1.48.1", "prettier": "^2.8.8", - "rimraf": "^5.0.9", - "typescript": "^5.5.3", - "vite": "^5.3.4" + "typescript": "^5.6.3", + "vite": "^5.4.10", + "vitest": "^2.1.3" }, "packageManager": "pnpm@8.6.12", "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71f6e399..0fe8c530 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5503 +1,3242 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@thednp/event-listener': - specifier: ^2.0.5 - version: 2.0.6 - '@thednp/shorty': - specifier: ^2.0.3 - version: 2.0.3 - -devDependencies: - '@bahmutov/cypress-esbuild-preprocessor': - specifier: ^2.2.1 - version: 2.2.3(esbuild@0.23.1) - '@cypress/code-coverage': - specifier: ^3.12.44 - version: 3.13.1(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(babel-loader@9.2.1)(cypress@13.14.2)(webpack@5.94.0) - '@types/istanbul-lib-instrument': - specifier: ^1.7.7 - version: 1.7.7 - '@types/node': - specifier: ^20.14.11 - version: 20.16.5 - '@typescript-eslint/eslint-plugin': - specifier: ^5.62.0 - version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/parser': - specifier: ^5.62.0 - version: 5.62.0(eslint@8.57.1)(typescript@5.6.2) - cypress: - specifier: ^13.13.1 - version: 13.14.2 - dts-bundle-generator: - specifier: ^9.5.1 - version: 9.5.1 - eslint: - specifier: ^8.57.0 - version: 8.57.1 - eslint-plugin-jsdoc: - specifier: ^46.10.1 - version: 46.10.1(eslint@8.57.1) - eslint-plugin-prefer-arrow: - specifier: ^1.2.3 - version: 1.2.3(eslint@8.57.1) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint@8.57.1)(prettier@2.8.8) - istanbul-lib-coverage: - specifier: ^3.2.2 - version: 3.2.2 - istanbul-lib-instrument: - specifier: ^5.2.1 - version: 5.2.1 - ncp: - specifier: ^2.0.0 - version: 2.0.0 - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.8 - version: 2.8.8 - rimraf: - specifier: ^5.0.9 - version: 5.0.10 - typescript: - specifier: ^5.5.3 - version: 5.6.2 - vite: - specifier: ^5.3.4 - version: 5.3.6(@types/node@20.16.5) +importers: + + .: + dependencies: + '@thednp/event-listener': + specifier: ^2.0.6 + version: 2.0.6 + '@thednp/shorty': + specifier: ^2.0.5 + version: 2.0.5 + devDependencies: + '@types/node': + specifier: ^20.17.1 + version: 20.17.1 + '@typescript-eslint/eslint-plugin': + specifier: ^5.62.0 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^5.62.0 + version: 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@vitest/browser': + specifier: ^2.1.3 + version: 2.1.3(@types/node@20.17.1)(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0))(vitest@2.1.3) + '@vitest/coverage-istanbul': + specifier: ^2.1.3 + version: 2.1.3(vitest@2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0)) + '@vitest/ui': + specifier: ^2.1.3 + version: 2.1.3(vitest@2.1.3) + dts-bundle-generator: + specifier: ^9.5.1 + version: 9.5.1 + eslint: + specifier: ^8.57.1 + version: 8.57.1 + eslint-plugin-jsdoc: + specifier: ^46.10.1 + version: 46.10.1(eslint@8.57.1) + eslint-plugin-prefer-arrow: + specifier: ^1.2.3 + version: 1.2.3(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.1(eslint@8.57.1)(prettier@2.8.8) + playwright: + specifier: ^1.48.1 + version: 1.48.1 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + typescript: + specifier: ^5.6.3 + version: 5.6.3 + vite: + specifier: ^5.4.10 + version: 5.4.10(@types/node@20.17.1)(terser@5.33.0) + vitest: + specifier: ^2.1.3 + version: 2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0) packages: - /@ampproject/remapping@2.3.0: + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - dev: true - /@babel/compat-data@7.25.4: - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + '@babel/code-frame@7.26.0': + resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} engines: {node: '>=6.9.0'} - dev: true - /@babel/core@7.25.2: - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/compat-data@7.26.0': + resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/generator@7.25.6: - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - dev: true - /@babel/helper-annotate-as-pure@7.24.7: - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + '@babel/generator@7.26.0': + resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.25.6 - dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-compilation-targets@7.25.2: - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: true - - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2): - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.7(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-member-expression-to-functions@7.24.8: - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-imports@7.24.7: - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-optimise-call-expression@7.24.7: - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.25.6 - dev: true + '@babel/parser@7.26.0': + resolution: {integrity: sha512-aP8x5pIw3xvYr/sXT+SEUwyhrXT8rUJRZltK/qN3Db80dcKpTett8cJxHyjk+xYSVXvNnl2SfcJVjbwxpOSscA==} + engines: {node: '>=6.0.0'} + hasBin: true - /@babel/helper-plugin-utils@7.24.8: - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-wrap-function': 7.25.0 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-simple-access@7.24.7: - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-skip-transparent-expression-wrappers@7.24.7: - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} - /@babel/helper-string-parser@7.24.8: - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - dev: true + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} - /@babel/helper-validator-identifier@7.24.7: - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - dev: true + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - /@babel/helper-validator-option@7.24.8: - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - dev: true + '@es-joy/jsdoccomment@0.41.0': + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} + engines: {node: '>=16'} - /@babel/helper-wrap-function@7.25.0: - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] - /@babel/helpers@7.25.6: - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - dev: true + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - dev: true + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] - /@babel/parser@7.25.6: - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.25.6 - dev: true + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.25.2): - resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] - /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - dev: true + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] - /@babel/plugin-syntax-import-assertions@7.25.6(@babel/core@7.25.2): - resolution: {integrity: sha512-aABl0jHw9bZ2karQ/uUD6XP4u0SG22SJrOHFoL6XB1R7dTovOP4TzTlsxOYC5yQ1pdscVK2JTUnF6QL3ARoAiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] - /@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2): - resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead - /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} - /@babel/plugin-transform-async-generator-functions@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead - /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@inquirer/confirm@5.0.0': + resolution: {integrity: sha512-6QEzj6bZg8atviRIL+pR0tODC854cYSjvZxkyCarr8DVaOJPEyuGys7GmEG3W0Rb8kKSQec7P6okt0sJvNneFw==} + engines: {node: '>=18'} - /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@inquirer/core@10.0.0': + resolution: {integrity: sha512-7dwoKCGvgZGHWTZfOj2KLmbIAIdiXP9NTrwGaTO/XDfKMEmyBahZpnombiG6JDHmiOrmK3GLEJRXrWExXCDLmQ==} + engines: {node: '>=18'} - /@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@inquirer/figures@1.0.7': + resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} + engines: {node: '>=18'} - /@babel/plugin-transform-class-properties@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==} - engines: {node: '>=6.9.0'} + '@inquirer/type@3.0.0': + resolution: {integrity: sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==} + engines: {node: '>=18'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - dev: true + '@types/node': '>=18' - /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} - /@babel/plugin-transform-classes@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/traverse': 7.25.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} - /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/template': 7.25.0 - dev: true + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} - /@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.25.2): - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} - /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} - /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - dev: true + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - dev: true + '@mswjs/interceptors@0.36.6': + resolution: {integrity: sha512-issnYydStyH0wPEeU7CMwfO7kI668ffVtzKRMRS7H7BliOYuPuwEZxh9dwiXV+oeHBxT5SXT0wPwV8T7V2PJUA==} + engines: {node: '>=18'} - /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - dev: true + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} - /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - dev: true + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - /@babel/plugin-transform-function-name@7.25.1(@babel/core@7.25.2): - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} - /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - dev: true + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} - /@babel/plugin-transform-literals@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} - /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - dev: true + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} - /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} - /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - dev: true + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2): - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] - /@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] - /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] - /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] - /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] - /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - dev: true + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] - /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - dev: true + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] - /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - dev: true + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] - /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] - /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - dev: true + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] - /@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.25.2): - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] - /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] - /@babel/plugin-transform-private-methods@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] - /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] - /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] - /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - regenerator-transform: 0.15.2 - dev: true + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] - /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} - /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@testing-library/dom': '>=7.21.4' - /@babel/plugin-transform-spread@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - transitivePeerDependencies: - - supports-color - dev: true + '@thednp/event-listener@2.0.6': + resolution: {integrity: sha512-6u55ydv4+2VHwHU8EJaJXa40QzZ7XOXVo74MMPnGCSzbl0q3yqHfQh8r0Sw/50rutHxecLVQBM/C9Fr0c+m+ew==} + engines: {node: '>=16', pnpm: '>=8.6.0'} - /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@thednp/shorty@2.0.5': + resolution: {integrity: sha512-yIKW4akLyvf5MIIlW2A2SdL/ylfB2vDfp9pTNaRZJlYPdNfA8Sx5xtShbXLHM6dcG1RHSYPkBRhTqSwUyFt2Wg==} + engines: {node: '>=16', pnpm: '>=8.6.0'} - /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - /@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.25.2): - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/node@20.17.1': + resolution: {integrity: sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q==} - /@babel/plugin-transform-unicode-sets-regex@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - dev: true + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - /@babel/preset-env@7.25.4(@babel/core@7.25.2): - resolution: {integrity: sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.4(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.25.4(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/types': 7.25.6 - esutils: 2.0.3 - dev: true + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - dev: true + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - /@babel/runtime@7.25.6: - resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: true + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@babel/template@7.25.0: - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 - dev: true + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - /@babel/traverse@7.25.6: - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@babel/types@7.25.6: - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - dev: true + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - /@bahmutov/cypress-esbuild-preprocessor@2.2.3(esbuild@0.23.1): - resolution: {integrity: sha512-YdrZxCULKC3k5H5bjBeL6boadcsSXsdnJf6GQGHMRcqzUFzDQC1sZGNblauJzUU34XbA4Sko5ym4KajKf4WwAw==} + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - esbuild: '>=0.17.0' - dependencies: - debug: 4.3.7(supports-color@8.1.1) - esbuild: 0.23.1 - transitivePeerDependencies: - - supports-color - dev: true + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true - optional: true + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@cypress/code-coverage@3.13.1(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(babel-loader@9.2.1)(cypress@13.14.2)(webpack@5.94.0): - resolution: {integrity: sha512-8OxblrX44F4MnY0y9bDybYbhqoLM1DvSuKTHfw7yZlCc2U/C8WyDoRzBoKe/z3f72qjWwO8BBhDFmU3ZPI5yEA==} + '@vitest/browser@2.1.3': + resolution: {integrity: sha512-PQ2kLLc9q8ukJutuuYsynHSr31E78/dtYEvPy4jCHLht1LmITqXTVTqu7THWdZ1kXNGrWwtdMqtt3z2mvSKdIg==} peerDependencies: - '@babel/core': ^7.0.1 - '@babel/preset-env': ^7.0.0 - babel-loader: ^8.3 || ^9 - cypress: '*' - webpack: ^4 || ^5 - dependencies: - '@babel/core': 7.25.2 - '@babel/preset-env': 7.25.4(@babel/core@7.25.2) - '@cypress/webpack-preprocessor': 6.0.2(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(babel-loader@9.2.1)(webpack@5.94.0) - babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0) - chalk: 4.1.2 - cypress: 13.14.2 - dayjs: 1.11.13 - debug: 4.3.7(supports-color@8.1.1) - execa: 4.1.0 - globby: 11.1.0 - istanbul-lib-coverage: 3.2.2 - js-yaml: 4.1.0 - nyc: 15.1.0 - webpack: 5.94.0(esbuild@0.23.1) - transitivePeerDependencies: - - supports-color - dev: true + playwright: '*' + safaridriver: '*' + vitest: 2.1.3 + webdriverio: '*' + peerDependenciesMeta: + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true - /@cypress/request@3.0.5: - resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==} - engines: {node: '>= 6'} - dependencies: - aws-sign2: 0.7.0 - aws4: 1.13.2 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 4.0.0 - http-signature: 1.4.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - performance-now: 2.1.0 - qs: 6.13.0 - safe-buffer: 5.2.1 - tough-cookie: 4.1.4 - tunnel-agent: 0.6.0 - uuid: 8.3.2 - dev: true + '@vitest/coverage-istanbul@2.1.3': + resolution: {integrity: sha512-FByj6ni54EzA4SXl5X3ugSeeBSI6MSEQBbvPefF6x6GCajePLeZSNYt7u0NOKUQbWpQpAdHHstrqR9ALEpnAxA==} + peerDependencies: + vitest: 2.1.3 + + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} - /@cypress/webpack-preprocessor@6.0.2(@babel/core@7.25.2)(@babel/preset-env@7.25.4)(babel-loader@9.2.1)(webpack@5.94.0): - resolution: {integrity: sha512-0+1+4iy4W9PE6R5ywBNKAZoFp8Sf//w3UJ+CKTqkcAjA29b+dtsD0iFT70DsYE0BMqUM1PO7HXFGbXllQ+bRAA==} + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} peerDependencies: - '@babel/core': ^7.0.1 - '@babel/preset-env': ^7.0.0 - babel-loader: ^8.3 || ^9 - webpack: ^4 || ^5 - dependencies: - '@babel/core': 7.25.2 - '@babel/preset-env': 7.25.4(@babel/core@7.25.2) - babel-loader: 9.2.1(@babel/core@7.25.2)(webpack@5.94.0) - bluebird: 3.7.1 - debug: 4.3.7(supports-color@8.1.1) - lodash: 4.17.21 - webpack: 5.94.0(esbuild@0.23.1) - transitivePeerDependencies: - - supports-color - dev: true + '@vitest/spy': 2.1.3 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - /@cypress/xvfb@1.2.4(supports-color@8.1.1): - resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} - dependencies: - debug: 3.2.7(supports-color@8.1.1) - lodash.once: 4.1.1 - transitivePeerDependencies: - - supports-color - dev: true + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - /@es-joy/jsdoccomment@0.41.0: - resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} - engines: {node: '>=16'} - dependencies: - comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.0.0 - dev: true + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - /@esbuild/aix-ppc64@0.21.5: - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - /@esbuild/aix-ppc64@0.23.1: - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - /@esbuild/android-arm64@0.21.5: - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@vitest/ui@2.1.3': + resolution: {integrity: sha512-2XwTrHVJw3t9NYES26LQUYy51ZB8W4bRPgqUH2Eyda3kIuOlYw1ZdPNU22qcVlUVx4WKgECFQOSXuopsczuVjQ==} + peerDependencies: + vitest: 2.1.3 - /@esbuild/android-arm64@0.23.1: - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} - /@esbuild/android-arm@0.21.5: - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - /@esbuild/android-arm@0.23.1: - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true - /@esbuild/android-x64@0.21.5: - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - /@esbuild/android-x64@0.23.1: - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} - /@esbuild/darwin-arm64@0.21.5: - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-arm64@0.23.1: - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - /@esbuild/darwin-x64@0.21.5: - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /@esbuild/darwin-x64@0.23.1: - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} - /@esbuild/freebsd-arm64@0.21.5: - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /@esbuild/freebsd-arm64@0.23.1: - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - /@esbuild/freebsd-x64@0.21.5: - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /@esbuild/freebsd-x64@0.23.1: - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /@esbuild/linux-arm64@0.21.5: - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - /@esbuild/linux-arm64@0.23.1: - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - /@esbuild/linux-arm@0.21.5: - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - /@esbuild/linux-arm@0.23.1: - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true - /@esbuild/linux-ia32@0.21.5: - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /@esbuild/linux-ia32@0.23.1: - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} - /@esbuild/linux-loong64@0.21.5: - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - /@esbuild/linux-loong64@0.23.1: - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} - /@esbuild/linux-mips64el@0.21.5: - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-mips64el@0.23.1: - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - /@esbuild/linux-ppc64@0.21.5: - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-ppc64@0.23.1: - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - /@esbuild/linux-riscv64@0.21.5: - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - /@esbuild/linux-riscv64@0.23.1: - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - /@esbuild/linux-s390x@0.21.5: - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} - /@esbuild/linux-s390x@0.23.1: - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /@esbuild/linux-x64@0.21.5: - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /@esbuild/linux-x64@0.23.1: - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} - /@esbuild/netbsd-x64@0.21.5: - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} - /@esbuild/netbsd-x64@0.23.1: - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - /@esbuild/openbsd-arm64@0.23.1: - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} - /@esbuild/openbsd-x64@0.21.5: - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /@esbuild/openbsd-x64@0.23.1: - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - /@esbuild/sunos-x64@0.21.5: - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} - /@esbuild/sunos-x64@0.23.1: - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} - /@esbuild/win32-arm64@0.21.5: - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - /@esbuild/win32-arm64@0.23.1: - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + dts-bundle-generator@9.5.1: + resolution: {integrity: sha512-DxpJOb2FNnEyOzMkG11sxO2dmxPjthoVWxfKqWYJ/bI/rT1rvTMktF5EKjAYrRZu6Z6t3NhOUZ0sZ5ZXevOfbA==} + engines: {node: '>=14.0.0'} + hasBin: true - /@esbuild/win32-ia32@0.21.5: - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - /@esbuild/win32-ia32@0.23.1: - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + electron-to-chromium@1.5.45: + resolution: {integrity: sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==} - /@esbuild/win32-x64@0.21.5: - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + hasBin: true - /@esbuild/win32-x64@0.23.1: - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-jsdoc@46.10.1: + resolution: {integrity: sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-prefer-arrow@1.2.3: + resolution: {integrity: sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==} + peerDependencies: + eslint: '>=2.0.0' + + eslint-plugin-prettier@4.2.1: + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - dev: true + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true - /@eslint-community/regexpp@4.11.1: - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.7(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} - /@eslint/js@8.57.1: - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - /@humanwhocodes/config-array@0.13.0: - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} - /@humanwhocodes/object-schema@2.0.3: - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - dev: true + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + msw@2.5.1: + resolution: {integrity: sha512-V0BmHvFkbWGXqbyrc+XiuQ8DU3qzcb6lb8gB9Vzltp3cgHLHLCDF/KmmFo0xw58StNaRMTebw3/xpWVvU9xq9g==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - dev: true + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - dev: true + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - dev: true + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - /@jridgewell/sourcemap-codec@1.5.0: - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - dev: true + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - dev: true + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - dev: true + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} - /@rollup/rollup-android-arm-eabi@4.22.4: - resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - /@rollup/rollup-android-arm64@4.22.4: - resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} - /@rollup/rollup-darwin-arm64@4.22.4: - resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} - /@rollup/rollup-darwin-x64@4.22.4: - resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - /@rollup/rollup-linux-arm-gnueabihf@4.22.4: - resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - /@rollup/rollup-linux-arm-musleabihf@4.22.4: - resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - /@rollup/rollup-linux-arm64-gnu@4.22.4: - resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - /@rollup/rollup-linux-arm64-musl@4.22.4: - resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} - /@rollup/rollup-linux-powerpc64le-gnu@4.22.4: - resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - /@rollup/rollup-linux-riscv64-gnu@4.22.4: - resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} - /@rollup/rollup-linux-s390x-gnu@4.22.4: - resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - /@rollup/rollup-linux-x64-gnu@4.22.4: - resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} - /@rollup/rollup-linux-x64-musl@4.22.4: - resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} - /@rollup/rollup-win32-arm64-msvc@4.22.4: - resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + playwright-core@1.48.1: + resolution: {integrity: sha512-Yw/t4VAFX/bBr1OzwCuOMZkY1Cnb4z/doAFSwf4huqAGWmf9eMNjmK7NiOljCdLmxeRYcGPPmcDgU0zOlzP0YA==} + engines: {node: '>=18'} + hasBin: true - /@rollup/rollup-win32-ia32-msvc@4.22.4: - resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + playwright@1.48.1: + resolution: {integrity: sha512-j8CiHW/V6HxmbntOfyB4+T/uk08tBy6ph0MpBXwuoofkSnLmlfdYNNkFTYD6ofzzlSqLA1fwH4vwvVFvJgLN0w==} + engines: {node: '>=18'} + hasBin: true - /@rollup/rollup-win32-x64-msvc@4.22.4: - resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} - /@thednp/event-listener@2.0.6: - resolution: {integrity: sha512-6u55ydv4+2VHwHU8EJaJXa40QzZ7XOXVo74MMPnGCSzbl0q3yqHfQh8r0Sw/50rutHxecLVQBM/C9Fr0c+m+ew==} - engines: {node: '>=16', pnpm: '>=8.6.0'} - dev: false + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} - /@thednp/shorty@2.0.3: - resolution: {integrity: sha512-ngKP9/wQxM6JPDFjO6ak8lSz38ZA6cIFQy3gZbZM3xgUqArBr+VG9aoSoLHHEuaObyd9q9Jq/T0Wez7qrck0Gw==} - engines: {node: '>=16', pnpm: '>=8.6.0'} - dev: false + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} - /@types/babel-types@7.0.15: - resolution: {integrity: sha512-JUgfZHUOMbtjopxiOQaaF+Uovk5wpDqpXR+XLWiOivCWSy1FccO30lvNNpCt8geFwq8VmGT2y9OMkOpA0g5O5g==} - dev: true + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - dev: true + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - dev: true + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - /@types/istanbul-lib-instrument@1.7.7: - resolution: {integrity: sha512-xyV3cVIhVuVAT7wyJXT+lliOo4b7BpfsnfCDy0/nuuAX+J7RB2rWNDV/7hkmv62vwqAD2XQ2Fgt6OwWGWEYfvg==} - dependencies: - '@types/babel-types': 7.0.15 - '@types/istanbul-lib-coverage': 2.0.6 - source-map: 0.6.1 - dev: true + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - /@types/node@20.16.5: - resolution: {integrity: sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==} - dependencies: - undici-types: 6.19.8 - dev: true + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - /@types/sinonjs__fake-timers@8.1.1: - resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - dev: true + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - /@types/sizzle@2.3.8: - resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} - dev: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - /@types/yauzl@2.10.3: - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - requiresBuild: true - dependencies: - '@types/node': 20.16.5 - dev: true - optional: true + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.2) - debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare-lite: 1.4.0 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.6.2) - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - dev: true + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} - /@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.2) - debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.1 - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - dev: true + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /@typescript-eslint/scope-manager@5.62.0: - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - dev: true + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.2) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.2) - debug: 4.3.7(supports-color@8.1.1) - eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.6.2) - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - dev: true + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - /@typescript-eslint/types@5.62.0: - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.2): - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.7(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.6.3 - tsutils: 3.21.0(typescript@5.6.2) - typescript: 5.6.2 - transitivePeerDependencies: - - supports-color - dev: true + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.6.2): - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.2) - eslint: 8.57.1 - eslint-scope: 5.1.1 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - typescript - dev: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - - /@webassemblyjs/ast@1.12.1: - resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - - /@webassemblyjs/helper-buffer@1.12.1: - resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} - dev: true - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.12.1: - resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 - dev: true - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} - dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} - dev: true - - /@webassemblyjs/wasm-edit@1.12.1: - resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 - dev: true - - /@webassemblyjs/wasm-gen@1.12.1: - resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wasm-opt@1.12.1: - resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - dev: true - - /@webassemblyjs/wasm-parser@1.12.1: - resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 - dev: true - - /@webassemblyjs/wast-printer@1.12.1: - resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} - dependencies: - '@webassemblyjs/ast': 1.12.1 - '@xtuc/long': 4.2.2 - dev: true - - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true - - /acorn-import-attributes@1.9.5(acorn@8.12.1): - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.12.1 - dev: true + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - /acorn-jsx@5.3.2(acorn@8.12.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.12.1 - dev: true + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - /ajv-formats@2.1.1(ajv@8.17.1): - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - dependencies: - ajv: 8.17.1 - dev: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - /ajv-keywords@5.1.0(ajv@8.17.1): - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - dev: true + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - /ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.1 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - dev: true + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} - /ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - dev: true + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - dev: true - /append-transform@2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - dependencies: - default-require-extensions: 3.0.1 - dev: true - /arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: true + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} - /archy@1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} - dev: true + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} - /are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} - engines: {node: '>=14'} - dev: true + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true + terser@5.33.0: + resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} + engines: {node: '>=10'} + hasBin: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - dependencies: - safer-buffer: 2.1.2 - dev: true + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} - /async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - dev: true + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: true + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - /aws4@1.13.2: - resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} - dev: true + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} - /babel-loader@9.2.1(@babel/core@7.25.2)(webpack@5.94.0): - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - dependencies: - '@babel/core': 7.25.2 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.94.0(esbuild@0.23.1) - dev: true + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.25.4 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.25.2): - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.38.1 - transitivePeerDependencies: - - supports-color - dev: true + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color - dev: true + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: true + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: true + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} - /blob-util@2.0.2: - resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} - dev: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true - /bluebird@3.7.1: - resolution: {integrity: sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==} - dev: true + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: true + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.1.1 - dev: true + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - /browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - dependencies: - caniuse-lite: 1.0.30001660 - electron-to-chromium: 1.5.24 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - dev: true - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: true + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true - /cachedir@2.4.0: - resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} - engines: {node: '>=6'} - dev: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} - /caching-transform@4.0.0: - resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} - dependencies: - hasha: 5.2.2 - make-dir: 3.1.0 - package-hash: 4.0.0 - write-file-atomic: 3.0.3 - dev: true - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: true + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - /caniuse-lite@1.0.30001660: - resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} - dev: true + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - /check-more-types@2.24.0: - resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} - engines: {node: '>= 0.8.0'} - dev: true + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} - /chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - dev: true + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: true + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true +snapshots: - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + '@ampproject/remapping@2.3.0': dependencies: - restore-cursor: 3.1.0 - dev: true + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - /cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} + '@babel/code-frame@7.26.0': dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - dev: true + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - dev: true + '@babel/compat-data@7.26.0': {} - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + '@babel/core@7.26.0': dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.0 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + '@babel/generator@7.26.0': dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true + '@babel/parser': 7.26.0 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + '@babel/helper-compilation-targets@7.25.9': dependencies: - color-name: 1.1.3 - dev: true + '@babel/compat-data': 7.26.0 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + '@babel/helper-module-imports@7.25.9': dependencies: - color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true - - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: - delayed-stream: 1.0.0 - dev: true - - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true - - /comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} - engines: {node: '>= 12.0.0'} - dev: true - - /common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - dev: true - - /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} - dev: true - - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + '@babel/helper-string-parser@7.25.9': {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true + '@babel/helper-validator-identifier@7.25.9': {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + '@babel/helper-validator-option@7.25.9': {} - /core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + '@babel/helpers@7.26.0': dependencies: - browserslist: 4.23.3 - dev: true - - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + '@babel/parser@7.26.0': dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true + '@babel/types': 7.26.0 - /cypress@13.14.2: - resolution: {integrity: sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} - hasBin: true - requiresBuild: true - dependencies: - '@cypress/request': 3.0.5 - '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/sinonjs__fake-timers': 8.1.1 - '@types/sizzle': 2.3.8 - arch: 2.2.0 - blob-util: 2.0.2 - bluebird: 3.7.2 - buffer: 5.7.1 - cachedir: 2.4.0 - chalk: 4.1.2 - check-more-types: 2.24.0 - cli-cursor: 3.1.0 - cli-table3: 0.6.5 - commander: 6.2.1 - common-tags: 1.8.2 - dayjs: 1.11.13 - debug: 4.3.7(supports-color@8.1.1) - enquirer: 2.4.1 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: 4.1.1 - extract-zip: 2.0.1(supports-color@8.1.1) - figures: 3.2.0 - fs-extra: 9.1.0 - getos: 3.2.1 - is-ci: 3.0.1 - is-installed-globally: 0.4.0 - lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.4.1) - lodash: 4.17.21 - log-symbols: 4.1.0 - minimist: 1.2.8 - ospath: 1.2.2 - pretty-bytes: 5.6.0 - process: 0.11.10 - proxy-from-env: 1.0.0 - request-progress: 3.0.0 - semver: 7.6.3 - supports-color: 8.1.1 - tmp: 0.2.3 - untildify: 4.0.0 - yauzl: 2.10.0 - dev: true - - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} + '@babel/runtime@7.26.0': dependencies: - assert-plus: 1.0.0 - dev: true - - /dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - dev: true + regenerator-runtime: 0.14.1 - /debug@3.2.7(supports-color@8.1.1): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + '@babel/template@7.25.9': dependencies: - ms: 2.1.3 - supports-color: 8.1.1 - dev: true + '@babel/code-frame': 7.26.0 + '@babel/parser': 7.26.0 + '@babel/types': 7.26.0 - /debug@4.3.7(supports-color@8.1.1): - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + '@babel/traverse@7.25.9': dependencies: - ms: 2.1.3 - supports-color: 8.1.1 - dev: true - - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.0 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color - /default-require-extensions@3.0.1: - resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} - engines: {node: '>=8'} + '@babel/types@7.26.0': dependencies: - strip-bom: 4.0.0 - dev: true + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + '@bundled-es-modules/cookie@2.0.0': dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true + cookie: 0.5.0 - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + '@bundled-es-modules/statuses@1.0.1': dependencies: - path-type: 4.0.0 - dev: true + statuses: 2.0.1 - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + '@bundled-es-modules/tough-cookie@0.1.6': dependencies: - esutils: 2.0.3 - dev: true + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 - /dts-bundle-generator@9.5.1: - resolution: {integrity: sha512-DxpJOb2FNnEyOzMkG11sxO2dmxPjthoVWxfKqWYJ/bI/rT1rvTMktF5EKjAYrRZu6Z6t3NhOUZ0sZ5ZXevOfbA==} - engines: {node: '>=14.0.0'} - hasBin: true + '@es-joy/jsdoccomment@0.41.0': dependencies: - typescript: 5.6.2 - yargs: 17.7.2 - dev: true + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.0.0 - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true + '@esbuild/aix-ppc64@0.21.5': + optional: true - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true + '@esbuild/android-arm64@0.21.5': + optional: true - /electron-to-chromium@1.5.24: - resolution: {integrity: sha512-0x0wLCmpdKFCi9ulhvYZebgcPmHTkFVUfU2wzDykadkslKwT4oAmDTHEKLnlrDsMGZe4B+ksn8quZfZjYsBetA==} - dev: true + '@esbuild/android-arm@0.21.5': + optional: true - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true + '@esbuild/android-x64@0.21.5': + optional: true - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true + '@esbuild/darwin-arm64@0.21.5': + optional: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true + '@esbuild/darwin-x64@0.21.5': + optional: true - /enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - dev: true + '@esbuild/freebsd-x64@0.21.5': + optional: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: true + '@esbuild/linux-arm64@0.21.5': + optional: true - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true + '@esbuild/linux-arm@0.21.5': + optional: true - /es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - dev: true + '@esbuild/linux-ia32@0.21.5': + optional: true - /es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} - dev: true + '@esbuild/linux-loong64@0.21.5': + optional: true - /esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - dev: true + '@esbuild/linux-mips64el@0.21.5': + optional: true - /esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} - engines: {node: '>=18'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - dev: true - - /escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - dev: true + '@esbuild/linux-ppc64@0.21.5': + optional: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true + '@esbuild/linux-riscv64@0.21.5': + optional: true - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true + '@esbuild/linux-s390x@0.21.5': + optional: true - /eslint-plugin-jsdoc@46.10.1(eslint@8.57.1): - resolution: {integrity: sha512-x8wxIpv00Y50NyweDUpa+58ffgSAI5sqe+zcZh33xphD0AVh+1kqr1ombaTRb7Fhpove1zfUuujlX9DWWBP5ag==} - engines: {node: '>=16'} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - dependencies: - '@es-joy/jsdoccomment': 0.41.0 - are-docs-informative: 0.0.2 - comment-parser: 1.4.1 - debug: 4.3.7(supports-color@8.1.1) - escape-string-regexp: 4.0.0 - eslint: 8.57.1 - esquery: 1.6.0 - is-builtin-module: 3.2.1 - semver: 7.6.3 - spdx-expression-parse: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true + '@esbuild/linux-x64@0.21.5': + optional: true - /eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.1): - resolution: {integrity: sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==} - peerDependencies: - eslint: '>=2.0.0' - dependencies: - eslint: 8.57.1 - dev: true + '@esbuild/netbsd-x64@0.21.5': + optional: true - /eslint-plugin-prettier@4.2.1(eslint@8.57.1)(prettier@2.8.8): - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - dependencies: - eslint: 8.57.1 - prettier: 2.8.8 - prettier-linter-helpers: 1.0.0 - dev: true + '@esbuild/openbsd-x64@0.21.5': + optional: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true + '@esbuild/sunos-x64@0.21.5': + optional: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true + '@esbuild/win32-arm64@0.21.5': + optional: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@esbuild/win32-ia32@0.21.5': + optional: true - /eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.7(supports-color@8.1.1) - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 + import-fresh: 3.3.0 js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 + strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@8.57.1': {} + + '@humanwhocodes/config-array@0.13.0': dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 3.4.3 - dev: true + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true + '@humanwhocodes/object-schema@2.0.3': {} - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + '@inquirer/confirm@5.0.0(@types/node@20.17.1)': dependencies: - estraverse: 5.3.0 - dev: true + '@inquirer/core': 10.0.0(@types/node@20.17.1) + '@inquirer/type': 3.0.0(@types/node@20.17.1) + transitivePeerDependencies: + - '@types/node' - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + '@inquirer/core@10.0.0(@types/node@20.17.1)': + dependencies: + '@inquirer/figures': 1.0.7 + '@inquirer/type': 3.0.0(@types/node@20.17.1) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + transitivePeerDependencies: + - '@types/node' - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + '@inquirer/figures@1.0.7': {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true + '@inquirer/type@3.0.0(@types/node@20.17.1)': + dependencies: + '@types/node': 20.17.1 - /eventemitter2@6.4.7: - resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} - dev: true + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} + '@jridgewell/gen-mapping@0.3.5': dependencies: - pify: 2.3.0 - dev: true + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true + '@jridgewell/resolve-uri@3.1.2': {} - /extract-zip@2.0.1(supports-color@8.1.1): - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': dependencies: - debug: 4.3.7(supports-color@8.1.1) - get-stream: 5.2.0 - yauzl: 2.10.0 - optionalDependencies: - '@types/yauzl': 2.10.3 - transitivePeerDependencies: - - supports-color - dev: true + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + optional: true - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true + '@jridgewell/sourcemap-codec@1.5.0': {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + '@mswjs/interceptors@0.36.6': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + run-parallel: 1.2.0 - /fast-uri@3.0.1: - resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} - dev: true + '@nodelib/fs.stat@2.0.5': {} - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + '@nodelib/fs.walk@1.2.8': dependencies: - reusify: 1.0.4 - dev: true + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - dependencies: - pend: 1.2.0 - dev: true + '@open-draft/deferred-promise@2.2.0': {} - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + '@open-draft/logger@0.3.0': dependencies: - escape-string-regexp: 1.0.5 - dev: true + is-node-process: 1.2.0 + outvariant: 1.4.3 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.2.0 - dev: true + '@open-draft/until@2.1.0': {} - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: true + '@pkgjs/parseargs@0.11.0': + optional: true - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true + '@polka/url@1.0.0-next.28': {} - /find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - dev: true + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true + '@rollup/rollup-android-arm64@4.24.0': + optional: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: true + '@rollup/rollup-darwin-x64@4.24.0': + optional: true - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flatted: 3.3.1 - keyv: 4.5.4 - rimraf: 3.0.2 - dev: true + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 3.0.7 - dev: true + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true - /foreground-child@3.3.0: - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: true + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true - /fromentries@1.3.2: - resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} - dev: true + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - dev: true + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true + '@rollup/rollup-win32-arm64-msvc@4.24.0': optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: true + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.26.0 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true + '@testing-library/dom': 10.4.0 - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + '@thednp/event-listener@2.0.6': {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + '@thednp/shorty@2.0.5': {} + + '@types/aria-query@5.0.4': {} + + '@types/cookie@0.6.0': {} + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@20.17.1': dependencies: - pump: 3.0.2 - dev: true + undici-types: 6.19.8 - /getos@3.2.1: - resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + '@types/semver@7.5.8': {} + + '@types/statuses@2.0.5': {} + + '@types/tough-cookie@4.0.5': {} + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: - async: 3.2.6 - dev: true + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.7 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - assert-plus: 1.0.0 - dev: true + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + debug: 4.3.7 + eslint: 8.57.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + '@typescript-eslint/scope-manager@5.62.0': dependencies: - is-glob: 4.0.3 - dev: true + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - is-glob: 4.0.3 - dev: true + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.7 + eslint: 8.57.1 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true + '@typescript-eslint/types@5.62.0': {} - /glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3)': dependencies: - foreground-child: 3.3.0 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 1.11.1 - dev: true + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.7 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} + '@typescript-eslint/visitor-keys@5.62.0': dependencies: - ini: 2.0.0 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true + '@ungap/structured-clone@1.2.0': {} - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + '@vitest/browser@2.1.3(@types/node@20.17.1)(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0))(vitest@2.1.3)': dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - dev: true + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0)) + '@vitest/utils': 2.1.3 + magic-string: 0.30.12 + msw: 2.5.1(@types/node@20.17.1)(typescript@5.6.3) + sirv: 2.0.4 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0) + ws: 8.18.0 + optionalDependencies: + playwright: 1.48.1 + transitivePeerDependencies: + - '@types/node' + - '@vitest/spy' + - bufferutil + - typescript + - utf-8-validate + - vite - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + '@vitest/coverage-istanbul@2.1.3(vitest@2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0))': dependencies: - get-intrinsic: 1.2.4 - dev: true + '@istanbuljs/schema': 0.1.3 + debug: 4.3.7 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magicast: 0.3.5 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0) + transitivePeerDependencies: + - supports-color - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true + '@vitest/expect@2.1.3': + dependencies: + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + tinyrainbow: 1.2.0 - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0))': + dependencies: + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + msw: 2.5.1(@types/node@20.17.1)(typescript@5.6.3) + vite: 5.4.10(@types/node@20.17.1)(terser@5.33.0) - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true + '@vitest/pretty-format@2.1.3': + dependencies: + tinyrainbow: 1.2.0 - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + '@vitest/runner@2.1.3': + dependencies: + '@vitest/utils': 2.1.3 + pathe: 1.1.2 - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + '@vitest/snapshot@2.1.3': dependencies: - es-define-property: 1.0.0 - dev: true + '@vitest/pretty-format': 2.1.3 + magic-string: 0.30.12 + pathe: 1.1.2 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true + '@vitest/spy@2.1.3': + dependencies: + tinyspy: 3.0.2 - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true + '@vitest/ui@2.1.3(vitest@2.1.3)': + dependencies: + '@vitest/utils': 2.1.3 + fflate: 0.8.2 + flatted: 3.3.1 + pathe: 1.1.2 + sirv: 2.0.4 + tinyglobby: 0.2.10 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0) - /hasha@5.2.2: - resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} - engines: {node: '>=8'} + '@vitest/utils@2.1.3': dependencies: - is-stream: 2.0.1 - type-fest: 0.8.1 - dev: true + '@vitest/pretty-format': 2.1.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + acorn-jsx@5.3.2(acorn@8.13.0): dependencies: - function-bind: 1.1.2 - dev: true + acorn: 8.13.0 - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + acorn@8.13.0: {} - /http-signature@1.4.0: - resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} - engines: {node: '>=0.10'} + ajv@6.12.6: dependencies: - assert-plus: 1.0.0 - jsprim: 2.0.2 - sshpk: 1.18.0 - dev: true + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: true + ansi-regex@5.0.1: {} - /ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - dev: true + ansi-regex@6.1.0: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + ansi-styles@4.3.0: dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true + color-convert: 2.0.1 - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + ansi-styles@5.2.0: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + ansi-styles@6.2.1: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + are-docs-informative@0.0.2: {} + + argparse@2.0.1: {} + + aria-query@5.3.0: dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true + dequal: 2.0.3 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true + array-union@2.1.0: {} - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: true + assertion-error@2.0.1: {} - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} - dependencies: - builtin-modules: 3.3.0 - dev: true + balanced-match@1.0.2: {} - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true + brace-expansion@1.1.11: dependencies: - ci-info: 3.9.0 - dev: true + balanced-match: 1.0.2 + concat-map: 0.0.1 - /is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} - engines: {node: '>= 0.4'} + brace-expansion@2.0.1: dependencies: - hasown: 2.0.2 - dev: true - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true + balanced-match: 1.0.2 - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + braces@3.0.3: dependencies: - is-extglob: 2.1.1 - dev: true + fill-range: 7.1.1 - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} + browserslist@4.24.2: dependencies: - global-dirs: 3.0.1 - is-path-inside: 3.0.3 - dev: true + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.45 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + buffer-from@1.1.2: + optional: true - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + builtin-modules@3.3.0: {} - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true + cac@6.7.14: {} - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true + callsites@3.1.0: {} - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - dev: true + caniuse-lite@1.0.30001669: {} - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true + check-error@2.1.1: {} - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true + cli-width@4.1.0: {} - /istanbul-lib-hook@3.0.0: - resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} - engines: {node: '>=8'} + cliui@8.0.1: dependencies: - append-transform: 2.0.0 - dev: true + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 - /istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} - engines: {node: '>=8'} + color-convert@2.0.1: dependencies: - '@babel/core': 7.25.2 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + color-name: 1.1.4 - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.25.6 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true + color-name@1.1.4: {} - /istanbul-lib-processinfo@2.0.3: - resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} - engines: {node: '>=8'} - dependencies: - archy: 1.0.0 - cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.2.2 - p-map: 3.0.0 - rimraf: 3.0.2 - uuid: 8.3.2 - dev: true + commander@2.20.3: + optional: true - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true + comment-parser@1.4.1: {} - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.7(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true + concat-map@0.0.1: {} - /istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true + convert-source-map@2.0.0: {} - /jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: true + cookie@0.5.0: {} - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + cross-spawn@7.0.3: dependencies: - '@types/node': 20.16.5 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + debug@4.3.7: dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - dev: true + ms: 2.1.3 - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true + deep-eql@5.0.2: {} - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true + deep-is@0.1.4: {} - /jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} - engines: {node: '>=12.0.0'} - dev: true + dequal@2.0.3: {} - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + dom-accessibility-api@0.5.16: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true + dts-bundle-generator@9.5.1: + dependencies: + typescript: 5.6.3 + yargs: 17.7.2 - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + eastasianwidth@0.2.0: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: true + electron-to-chromium@1.5.45: {} - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true + emoji-regex@8.0.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + emoji-regex@9.2.2: {} - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true + escalade@3.2.0: {} - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - dev: true + escape-string-regexp@4.0.0: {} - /jsprim@2.0.2: - resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} - engines: {'0': node >=0.6.0} + eslint-plugin-jsdoc@46.10.1(eslint@8.57.1): dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - dev: true + '@es-joy/jsdoccomment': 0.41.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint: 8.57.1 + esquery: 1.6.0 + is-builtin-module: 3.2.1 + semver: 7.6.3 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + eslint-plugin-prefer-arrow@1.2.3(eslint@8.57.1): dependencies: - json-buffer: 3.0.1 - dev: true + eslint: 8.57.1 - /lazy-ass@1.6.0: - resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} - engines: {node: '> 0.8'} - dev: true + eslint-plugin-prettier@4.2.1(eslint@8.57.1)(prettier@2.8.8): + dependencies: + eslint: 8.57.1 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + eslint-scope@5.1.1: dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true + esrecurse: 4.3.0 + estraverse: 4.3.0 - /listr2@3.14.0(enquirer@2.4.1): - resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} - engines: {node: '>=10.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + eslint-scope@7.2.2: dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - enquirer: 2.4.1 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.4.1 - rxjs: 7.8.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - dev: true + esrecurse: 4.3.0 + estraverse: 5.3.0 - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true + eslint-visitor-keys@3.4.3: {} - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.11.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: dependencies: - p-locate: 4.1.0 - dev: true + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) + eslint-visitor-keys: 3.4.3 - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + esquery@1.6.0: dependencies: - p-locate: 5.0.0 - dev: true + estraverse: 5.3.0 - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + esrecurse@4.3.0: dependencies: - p-locate: 6.0.0 - dev: true + estraverse: 5.3.0 - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true + estraverse@4.3.0: {} - /lodash.flattendeep@4.4.0: - resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} - dev: true + estraverse@5.3.0: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: true + esutils@2.0.3: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true + fast-deep-equal@3.1.3: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + fast-diff@1.3.0: {} + + fast-glob@3.3.2: dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - dev: true + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - dev: true + reusify: 1.0.4 - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - dev: true + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + fflate@0.8.2: {} + + file-entry-cache@6.0.1: dependencies: - yallist: 3.1.1 - dev: true + flat-cache: 3.2.0 - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: - semver: 6.3.1 - dev: true + to-regex-range: 5.0.1 - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: - semver: 7.6.3 - dev: true + locate-path: 6.0.0 + path-exists: 4.0.0 - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + flatted@3.3.1: {} - /micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + foreground-child@3.3.0: dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - dev: true + cross-spawn: 7.0.3 + signal-exit: 4.1.0 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: true + fs.realpath@1.0.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: true + fsevents@2.3.2: + optional: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + fsevents@2.3.3: + optional: true - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + glob-parent@5.1.2: dependencies: - brace-expansion: 1.1.11 - dev: true + is-glob: 4.0.3 - /minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} + glob-parent@6.0.2: dependencies: - brace-expansion: 2.0.1 - dev: true + is-glob: 4.0.3 - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: true + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true + globals@11.12.0: {} - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + globals@13.24.0: + dependencies: + type-fest: 0.20.2 - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + graphemer@1.4.0: {} - /ncp@2.0.0: - resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} - hasBin: true - dev: true + graphql@16.9.0: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true + has-flag@4.0.0: {} - /node-preload@0.2.1: - resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} - engines: {node: '>=8'} - dependencies: - process-on-spawn: 1.0.0 - dev: true + headers-polyfill@4.0.3: {} - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - dev: true + html-escaper@2.0.2: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true + ignore@5.3.2: {} - /nyc@15.1.0: - resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} - engines: {node: '>=8.9'} - hasBin: true + import-fresh@3.3.0: dependencies: - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - caching-transform: 4.0.0 - convert-source-map: 1.9.0 - decamelize: 1.2.0 - find-cache-dir: 3.3.2 - find-up: 4.1.0 - foreground-child: 2.0.0 - get-package-type: 0.1.0 - glob: 7.2.3 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-hook: 3.0.0 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - make-dir: 3.1.0 - node-preload: 0.2.1 - p-map: 3.0.0 - process-on-spawn: 1.0.0 - resolve-from: 5.0.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - spawn-wrap: 2.0.0 - test-exclude: 6.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color - dev: true + parent-module: 1.0.1 + resolve-from: 4.0.0 - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - dev: true + imurmurhash@0.1.4: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + inflight@1.0.6: dependencies: + once: 1.4.0 wrappy: 1.0.2 - dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true + inherits@2.0.4: {} - /optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} + is-builtin-module@3.2.1: dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - dev: true + builtin-modules: 3.3.0 - /ospath@1.2.2: - resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} - dev: true + is-extglob@2.1.1: {} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true + is-fullwidth-code-point@3.0.0: {} - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + is-glob@4.0.3: dependencies: - yocto-queue: 0.1.0 - dev: true + is-extglob: 2.1.1 - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.1.1 - dev: true + is-node-process@1.2.0: {} - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@6.0.3: dependencies: - p-limit: 2.3.0 - dev: true + '@babel/core': 7.26.0 + '@babel/parser': 7.26.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: - p-limit: 3.1.0 - dev: true + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + istanbul-lib-source-maps@5.0.6: dependencies: - p-limit: 4.0.0 - dev: true + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.7 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color - /p-map@3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} + istanbul-reports@3.1.7: dependencies: - aggregate-error: 3.1.0 - dev: true + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + jackspeak@3.4.3: dependencies: - aggregate-error: 3.1.0 - dev: true + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + js-tokens@4.0.0: {} - /package-hash@4.0.0: - resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} - engines: {node: '>=8'} + js-yaml@4.1.0: dependencies: - graceful-fs: 4.2.11 - hasha: 5.2.2 - lodash.flattendeep: 4.4.0 - release-zalgo: 1.0.0 - dev: true + argparse: 2.0.1 - /package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - dev: true + jsdoc-type-pratt-parser@4.0.0: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true + jsesc@3.0.2: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + json-buffer@3.0.1: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + json-schema-traverse@0.4.1: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true + json5@2.2.3: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: true + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + levn@0.4.1: dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - dev: true + prelude-ls: 1.2.1 + type-check: 0.4.0 - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true + lodash.merge@4.6.2: {} - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true + loupe@3.1.2: {} - /picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} - dev: true + lru-cache@10.4.3: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: true + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true + lz-string@1.5.0: {} - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + magic-string@0.30.12: dependencies: - find-up: 4.1.0 - dev: true + '@jridgewell/sourcemap-codec': 1.5.0 - /pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} + magicast@0.3.5: dependencies: - find-up: 6.3.0 - dev: true + '@babel/parser': 7.26.0 + '@babel/types': 7.26.0 + source-map-js: 1.2.1 - /postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} + make-dir@4.0.0: dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 - source-map-js: 1.2.1 - dev: true + semver: 7.6.3 - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + merge2@1.4.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + micromatch@4.0.8: dependencies: - fast-diff: 1.3.0 - dev: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + braces: 3.0.3 + picomatch: 2.3.1 - /pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - dev: true + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 - /process-on-spawn@1.0.0: - resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} - engines: {node: '>=8'} + minimatch@9.0.5: dependencies: - fromentries: 1.3.2 - dev: true + brace-expansion: 2.0.1 - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true + minipass@7.1.2: {} - /proxy-from-env@1.0.0: - resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} - dev: true + mrmime@2.0.0: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + ms@2.1.3: {} - /pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3): dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 5.0.0(@types/node@20.17.1) + '@mswjs/interceptors': 0.36.6 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.9.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + strict-event-emitter: 0.5.1 + type-fest: 4.26.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - '@types/node' - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true + mute-stream@2.0.0: {} - /qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.6 - dev: true + nanoid@3.3.7: {} - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + natural-compare-lite@1.4.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + natural-compare@1.4.0: {} - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true + node-releases@2.0.18: {} - /regenerate-unicode-properties@10.2.0: - resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} - engines: {node: '>=4'} + once@1.4.0: dependencies: - regenerate: 1.4.2 - dev: true + wrappy: 1.0.2 - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: true + outvariant@1.4.3: {} - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + p-limit@3.1.0: dependencies: - '@babel/runtime': 7.25.6 - dev: true + yocto-queue: 0.1.0 - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + p-locate@5.0.0: dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - dev: true + p-limit: 3.1.0 - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true + package-json-from-dist@1.0.1: {} - /release-zalgo@1.0.0: - resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} - engines: {node: '>=4'} + parent-module@1.0.1: dependencies: - es6-error: 4.1.1 - dev: true + callsites: 3.1.0 - /request-progress@3.0.0: - resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} - dependencies: - throttleit: 1.0.1 - dev: true + path-exists@4.0.0: {} - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true + path-is-absolute@1.0.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: true + path-key@3.1.1: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + path-to-regexp@6.3.0: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true + path-type@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + pathe@1.1.2: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true - dependencies: - is-core-module: 2.15.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true + pathval@2.0.0: {} - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true + picocolors@1.1.1: {} - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + picomatch@2.3.1: {} - /rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - dev: true + picomatch@4.0.2: {} - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - dependencies: - glob: 7.2.3 - dev: true + playwright-core@1.48.1: {} - /rimraf@5.0.10: - resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} - hasBin: true + playwright@1.48.1: dependencies: - glob: 10.4.5 - dev: true + playwright-core: 1.48.1 + optionalDependencies: + fsevents: 2.3.2 - /rollup@4.22.4: - resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + postcss@8.4.47: dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.22.4 - '@rollup/rollup-android-arm64': 4.22.4 - '@rollup/rollup-darwin-arm64': 4.22.4 - '@rollup/rollup-darwin-x64': 4.22.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 - '@rollup/rollup-linux-arm-musleabihf': 4.22.4 - '@rollup/rollup-linux-arm64-gnu': 4.22.4 - '@rollup/rollup-linux-arm64-musl': 4.22.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 - '@rollup/rollup-linux-riscv64-gnu': 4.22.4 - '@rollup/rollup-linux-s390x-gnu': 4.22.4 - '@rollup/rollup-linux-x64-gnu': 4.22.4 - '@rollup/rollup-linux-x64-musl': 4.22.4 - '@rollup/rollup-win32-arm64-msvc': 4.22.4 - '@rollup/rollup-win32-ia32-msvc': 4.22.4 - '@rollup/rollup-win32-x64-msvc': 4.22.4 - fsevents: 2.3.3 - dev: true + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: dependencies: - queue-microtask: 1.2.3 - dev: true + fast-diff: 1.3.0 - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + prettier@2.8.8: {} + + pretty-format@27.5.1: dependencies: - tslib: 2.7.0 - dev: true + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true + psl@1.9.0: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + punycode@2.3.1: {} - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true + querystringify@2.2.0: {} - /schema-utils@4.2.0: - resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} - engines: {node: '>= 12.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - dev: true + queue-microtask@1.2.3: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true + react-is@17.0.2: {} - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - dev: true + regenerator-runtime@0.14.1: {} - /serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - dependencies: - randombytes: 2.1.0 - dev: true + require-directory@2.1.1: {} + + requires-port@1.0.0: {} - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true + resolve-from@4.0.0: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + reusify@1.0.4: {} + + rimraf@3.0.2: dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true + glob: 7.2.3 - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + rollup@4.24.0: dependencies: - shebang-regex: 3.0.0 - dev: true + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + semver@6.3.1: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + semver@7.6.3: {} + + shebang-command@2.0.0: dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - dev: true + shebang-regex: 3.0.0 - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true + shebang-regex@3.0.0: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true + siginfo@2.0.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + signal-exit@4.1.0: {} - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} + sirv@2.0.4: dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true + slash@3.0.0: {} - /source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - dev: true + source-map-js@1.2.1: {} - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true + optional: true - /spawn-wrap@2.0.0: - resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} - engines: {node: '>=8'} - dependencies: - foreground-child: 2.0.0 - is-windows: 1.0.2 - make-dir: 3.1.0 - rimraf: 3.0.2 - signal-exit: 3.0.7 - which: 2.0.2 - dev: true + source-map@0.6.1: + optional: true - /spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - dev: true + spdx-exceptions@2.5.0: {} - /spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.20 - dev: true - /spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} - dev: true + spdx-license-ids@3.0.20: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + stackback@0.0.2: {} - /sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 - dev: true - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + statuses@2.0.1: {} + + std-env@3.7.0: {} + + strict-event-emitter@0.5.1: {} + + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - dev: true - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.1.0 - dev: true - - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true + strip-json-comments@3.1.1: {} - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /terser-webpack-plugin@5.3.10(esbuild@0.23.1)(webpack@5.94.0): - resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - esbuild: 0.23.1 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.33.0 - webpack: 5.94.0(esbuild@0.23.1) - dev: true - /terser@5.33.0: - resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} - engines: {node: '>=10'} - hasBin: true + terser@5.33.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.13.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: true + optional: true - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@7.0.1: dependencies: '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true + glob: 10.4.5 + minimatch: 9.0.5 - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /throttleit@1.0.1: - resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} - dev: true + tinybench@2.9.0: {} - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true + tinyexec@0.3.1: {} - /tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - dev: true + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true + tinypool@1.0.1: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + totalist@3.0.1: {} + + tough-cookie@4.1.4: dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - dev: true + tslib@1.14.1: {} - /tsutils@3.21.0(typescript@5.6.2): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + tsutils@3.21.0(typescript@5.6.3): dependencies: tslib: 1.14.1 - typescript: 5.6.2 - dev: true + typescript: 5.6.3 - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true - - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - - /typescript@5.6.2: - resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} - engines: {node: '>=14.17'} - hasBin: true - dev: true - - /undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - dev: true - /unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - dev: true + type-fest@0.20.2: {} - /unicode-match-property-value-ecmascript@2.2.0: - resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} - engines: {node: '>=4'} - dev: true + type-fest@0.21.3: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true + type-fest@4.26.1: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + typescript@5.6.3: {} - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: true + undici-types@6.19.8: {} - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true + universalify@0.2.0: {} - /update-browserslist-db@1.1.0(browserslist@4.23.3): - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: - browserslist: 4.23.3 + browserslist: 4.24.2 escalade: 3.2.0 - picocolors: 1.1.0 - dev: true + picocolors: 1.1.1 - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - dev: true - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - dev: true - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} + vite-node@2.1.3(@types/node@20.17.1)(terser@5.33.0): dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - dev: true + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.10(@types/node@20.17.1)(terser@5.33.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser - /vite@5.3.6(@types/node@20.16.5): - resolution: {integrity: sha512-es78AlrylO8mTVBygC0gTC0FENv0C6T496vvd33ydbjF/mIi9q3XQ9A3NWo5qLGFKywvz10J26813OkLvcQleA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@5.4.10(@types/node@20.17.1)(terser@5.33.0): dependencies: - '@types/node': 20.16.5 esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.22.4 + rollup: 4.24.0 optionalDependencies: + '@types/node': 20.17.1 fsevents: 2.3.3 - dev: true - - /watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: true - - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + terser: 5.33.0 - /webpack@5.94.0(esbuild@0.23.1): - resolution: {integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - dependencies: - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) - browserslist: 4.23.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.4 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.23.1)(webpack@5.94.0) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + vitest@2.1.3(@types/node@20.17.1)(@vitest/browser@2.1.3)(@vitest/ui@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(terser@5.33.0): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.5.1(@types/node@20.17.1)(typescript@5.6.3))(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@20.17.1)(terser@5.33.0) + vite-node: 2.1.3(@types/node@20.17.1)(terser@5.33.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.17.1 + '@vitest/browser': 2.1.3(@types/node@20.17.1)(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.10(@types/node@20.17.1)(terser@5.33.0))(vitest@2.1.3) + '@vitest/ui': 2.1.3(vitest@2.1.3) transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - dev: true - - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: true + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true - - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - dependencies: - imurmurhash: 0.1.4 - is-typedarray: 1.0.0 - signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true + wrappy@1.0.2: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true + ws@8.18.0: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true + y18n@5.0.8: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true + yallist@3.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true + yargs-parser@21.1.1: {} - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.2.0 @@ -5506,21 +3245,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - dev: true + yoctocolors-cjs@2.1.2: {} diff --git a/src/components/alert.ts b/src/components/alert.ts index 01f63d59..f8ef1695 100644 --- a/src/components/alert.ts +++ b/src/components/alert.ts @@ -1,14 +1,14 @@ /* Native JavaScript for Bootstrap 5 | Alert -------------------------------------------- */ import { + createCustomEvent, + dispatchEvent, emulateTransitionEnd, - mouseclickEvent, getInstance, - querySelector, hasClass, + mouseclickEvent, + querySelector, removeClass, - dispatchEvent, - createCustomEvent, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -30,19 +30,18 @@ const alertDismissSelector = `[${dataBsDismiss}="${alertString}"]`; /** * Static method which returns an existing `Alert` instance associated * to a target `Element`. - * */ const getAlertInstance = (element: HTMLElement) => getInstance(element, alertComponent); /** * An `Alert` initialization callback. */ -const alertInitCallback = (element: HTMLElement) => new Alert(element) as T; +const alertInitCallback = (element: HTMLElement) => new Alert(element); // ALERT CUSTOM EVENTS // =================== -const closeAlertEvent = createCustomEvent(`close.bs.${alertString}`); -const closedAlertEvent = createCustomEvent(`closed.bs.${alertString}`); +const closeAlertEvent = createCustomEvent, AlertEvent>(`close.bs.${alertString}`); +const closedAlertEvent = createCustomEvent, AlertEvent>(`closed.bs.${alertString}`); // ALERT EVENT HANDLER // =================== @@ -94,7 +93,7 @@ export default class Alert extends BaseComponent { close = () => { const { element } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (element && hasClass(element, showClass)) { dispatchEvent(element, closeAlertEvent); @@ -115,7 +114,7 @@ export default class Alert extends BaseComponent { _toggleEventListeners = (add?: boolean) => { const action = add ? addListener : removeListener; const { dismiss, close } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (dismiss) action(dismiss, mouseclickEvent, close); }; diff --git a/src/components/base-component.ts b/src/components/base-component.ts index 96e0a3ea..01c2a6e5 100644 --- a/src/components/base-component.ts +++ b/src/components/base-component.ts @@ -1,6 +1,6 @@ /* Native JavaScript for Bootstrap 5 | Base Component ----------------------------------------------------- */ -import { querySelector, normalizeOptions, Data, ObjectKeys, isString } from '@thednp/shorty'; +import { Data, isHTMLElement, isString, normalizeOptions, ObjectKeys, querySelector } from '@thednp/shorty'; import type { BaseOptions } from '../interface/baseComponent'; import Version from '../version'; @@ -15,18 +15,24 @@ export default class BaseComponent { * @param config component instance options */ constructor(target: HTMLElement | string, config?: BaseOptions) { - const element = querySelector(target); + let element: HTMLElement | null; - if (!element) { - if (isString(target)) { - throw Error(`${this.name} Error: "${target}" is not a valid selector.`); + try { + if (isHTMLElement(target)) { + element = target; + } else if (isString(target)) { + element = querySelector(target); + // istanbul ignore else @preserve + if (!element) throw Error(`"${target}" is not a valid selector.`); } else { - throw Error(`${this.name} Error: your target is not an instance of HTMLElement.`); + throw Error(`your target is not an instance of HTMLElement.`); } + } catch (e) { + throw Error(`${this.name} Error: ${(e as Error).message}`); } const prevInstance = Data.get(element, this.name); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (prevInstance) { // remove previously attached event listeners // to avoid memory leaks @@ -37,27 +43,29 @@ export default class BaseComponent { this.options = this.defaults && ObjectKeys(this.defaults).length ? normalizeOptions(element, this.defaults, config || {}, 'bs') - : {}; + : // istanbul ignore next @preserve + {}; Data.set(element, this.name, this); } - /* istanbul ignore next */ + // istanbul ignore next @preserve get version() { return Version; } - /* istanbul ignore next */ + // istanbul ignore next @preserve get name() { return 'BaseComponent'; } - /* istanbul ignore next */ + // istanbul ignore next @preserve get defaults() { return {}; } /** just to have something to extend from */ + // istanbul ignore next @preserve coverage wise this isn't important _toggleEventListeners = () => { // do something to please linters }; diff --git a/src/components/button.ts b/src/components/button.ts index dfcedbbf..775961f7 100644 --- a/src/components/button.ts +++ b/src/components/button.ts @@ -1,14 +1,14 @@ /* Native JavaScript for Bootstrap 5 | Button ---------------------------------------------*/ import { - getInstance, - removeClass, - hasClass, addClass, - setAttribute, - mouseclickEvent, ariaPressed, getAttribute, + getInstance, + hasClass, + mouseclickEvent, + removeClass, + setAttribute, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -74,7 +74,7 @@ export default class Button extends BaseComponent { * * @param e usually `click` Event object */ - toggle = (e: Event) => { + toggle = (e?: Event) => { if (e) e.preventDefault(); const { element, isActive } = this; diff --git a/src/components/carousel.ts b/src/components/carousel.ts index 930f4b5c..7b349708 100644 --- a/src/components/carousel.ts +++ b/src/components/carousel.ts @@ -1,39 +1,39 @@ /* Native JavaScript for Bootstrap 5 | Carousel ----------------------------------------------- */ import { + addClass, + closest, createCustomEvent, - getInstance, dispatchEvent, - ObjectAssign, + dragstartEvent, emulateTransitionEnd, - passiveHandler, - reflow, - Timer, getAttribute, + getDocument, getElementsByClassName, - querySelectorAll, - querySelector, - closest, + getElementTransitionDuration, + getInstance, + hasClass, + isElementInScrollRange, isHTMLElement, isRTL, - isElementInScrollRange, - getElementTransitionDuration, - getDocument, - pointerupEvent, - pointermoveEvent, - pointerdownEvent, - keyArrowRight, keyArrowLeft, + keyArrowRight, keydownEvent, + matches, mouseclickEvent, - mouseleaveEvent, mouseenterEvent, - touchstartEvent, - dragstartEvent, - addClass, - hasClass, + mouseleaveEvent, + ObjectAssign, + passiveHandler, + pointerdownEvent, + pointermoveEvent, + pointerupEvent, + querySelector, + querySelectorAll, + reflow, removeClass, - matches, + Timer, + touchstartEvent, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -46,6 +46,13 @@ import getTargetElement from '../util/getTargetElement'; import BaseComponent from './base-component'; import type { CarouselEvent, CarouselOptions } from '../interface/carousel'; +type CarouselEventProperties = { + relatedTarget: HTMLElement; + from: number; + to: number; + direction: 'left' | 'right'; +}; + // CAROUSEL PRIVATE GC // =================== const carouselSelector = `[data-bs-ride="${carouselString}"]`; @@ -78,8 +85,8 @@ let endX = 0; // CAROUSEL CUSTOM EVENTS // ====================== -const carouselSlideEvent = createCustomEvent(`slide.bs.${carouselString}`); -const carouselSlidEvent = createCustomEvent(`slid.bs.${carouselString}`); +const carouselSlideEvent = createCustomEvent(`slide.bs.${carouselString}`); +const carouselSlidEvent = createCustomEvent(`slid.bs.${carouselString}`); // CAROUSEL EVENT HANDLERS // ======================= @@ -91,7 +98,7 @@ const carouselSlidEvent = createCustomEvent(`slid.bs.${carouselSt const carouselTransitionEndHandler = (self: Carousel) => { const { index, direction, element, slides, options } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self.isAnimating) { const activeItem = getActiveIndex(self); const orientation = direction === 'left' ? 'next' : 'prev'; @@ -119,9 +126,8 @@ const carouselTransitionEndHandler = (self: Carousel) => { * is set to `hover`. */ function carouselPauseHandler(this: HTMLElement) { - // const element = this; const self = getCarouselInstance(this); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self && !self.isPaused && !Timer.get(this, pausedClass)) { addClass(this, pausedClass); } @@ -130,12 +136,10 @@ function carouselPauseHandler(this: HTMLElement) { /** * Handles the `mouseleave` events when *options.pause* * is set to `hover`. - * */ function carouselResumeHandler(this: HTMLElement) { - // const element = this; const self = getCarouselInstance(this); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self && self.isPaused && !Timer.get(this, pausedClass)) { self.cycle(); } @@ -148,13 +152,18 @@ function carouselResumeHandler(this: HTMLElement) { */ function carouselIndicatorHandler(this: HTMLElement, e: MouseEvent) { e.preventDefault(); - // const indicator = this; const element = (closest(this, carouselSelector) || getTargetElement(this)) as HTMLElement; const self = getCarouselInstance(element); + // istanbul ignore else @preserve if (self && !self.isAnimating) { - const newIndex = +(getAttribute(this, dataBsSlideTo) || /* istanbul ignore next */ 0); + const newIndex = +( + getAttribute(this, dataBsSlideTo) || + // istanbul ignore next @preserve + 0 + ); + // istanbul ignore else @preserve if ( this && !hasClass(this, activeClass) && // event target is not active @@ -176,10 +185,11 @@ function carouselControlsHandler(this: HTMLElement, e: MouseEvent) { const element = closest(this, carouselSelector) || (getTargetElement(this) as HTMLElement); const self = getCarouselInstance(element); + // istanbul ignore else @preserve if (self && !self.isAnimating) { const orientation = getAttribute(this, dataBsSlide); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (orientation === 'next') { self.next(); } else if (orientation === 'prev') { @@ -198,13 +208,13 @@ const carouselKeyHandler = ({ code, target }: KeyboardEvent & { target: Node }) const [element] = [...querySelectorAll(carouselSelector, doc)].filter(x => isElementInScrollRange(x)); const self = getCarouselInstance(element); - /* istanbul ignore next */ + // istanbul ignore next @preserve if (self && !self.isAnimating && !/textarea|input/i.test(target.nodeName)) { const RTL = isRTL(element); const arrowKeyNext = !RTL ? keyArrowRight : keyArrowLeft; const arrowKeyPrev = !RTL ? keyArrowLeft : keyArrowRight; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (code === arrowKeyPrev) self.prev(); else if (code === arrowKeyNext) self.next(); } @@ -221,7 +231,7 @@ function carouselDragHandler(this: HTMLElement, e: DragEvent | TouchEvent) { const { target } = e; const self = getCarouselInstance(this); - /* istanbul ignore next */ + // istanbul ignore next @preserve if ( self && self.isTouch && @@ -244,13 +254,15 @@ function carouselPointerDownHandler(this: HTMLElement, e: PointerEvent) { const { target } = e; const self = getCarouselInstance(this); + // istanbul ignore else @preserve if (self && !self.isAnimating && !self.isTouch) { // filter pointer event on controls & indicators const { controls, indicators } = self; + // istanbul ignore else @preserve if (![...controls, ...indicators].every(el => el === target || el.contains(target as Node))) { startX = e.pageX; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (this.contains(target as Node)) { self.isTouch = true; toggleCarouselTouchHandlers(self, true); @@ -281,7 +293,7 @@ const carouselPointerUpHandler = (e: PointerEvent) => { .find(i => i.isTouch) as Carousel; // impossible to satisfy - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { const { element, index } = self; const RTL = isRTL(element); @@ -296,7 +308,7 @@ const carouselPointerUpHandler = (e: PointerEvent) => { Math.abs(startX - endX) > 120 ) { // determine next index to slide to - /* istanbul ignore else */ + // istanbul ignore else @preserve if (currentX < startX) { self.to(index + (RTL ? -1 : 1)); } else if (currentX > startX) { @@ -323,7 +335,7 @@ const activateCarouselIndicator = (self: Carousel, index: number) => { const { indicators } = self; [...indicators].forEach(x => removeClass(x, activeClass)); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self.indicators[index]) addClass(indicators[index], activeClass); }; @@ -407,7 +419,10 @@ export default class Carousel extends BaseComponent { // a LIVE collection is prefferable this.indicators = [ - ...(this.indicator ? querySelectorAll(`[${dataBsSlideTo}]`, this.indicator) : []), + ...(this.indicator + ? querySelectorAll(`[${dataBsSlideTo}]`, this.indicator) + : // istanbul ignore next @preserve + []), ...querySelectorAll(`[${dataBsSlideTo}][${dataBsTarget}="#${element.id}"]`, doc), ].filter((c, i, ar) => i === ar.indexOf(c)); @@ -418,7 +433,7 @@ export default class Carousel extends BaseComponent { this.options.interval = options.interval === true ? carouselDefaults.interval : options.interval; // set first slide active if none - /* istanbul ignore next - impossible to test with cypress */ + // istanbul ignore next @preserve - impossible to test if (transitionItem) { this.index = [...slides].indexOf(transitionItem); } else if (activeIndex < 0) { @@ -427,7 +442,7 @@ export default class Carousel extends BaseComponent { if (this.indicators.length) activateCarouselIndicator(this, 0); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (this.indicators.length) activateCarouselIndicator(this, this.index); // attach event handlers @@ -482,7 +497,7 @@ export default class Carousel extends BaseComponent { () => { // it's very important to check self.element // where instance might have been disposed - /* istanbul ignore else */ + // istanbul ignore else @preserve if (this.element && !this.isPaused && !this.isTouch && isElementInScrollRange(element)) { this.to(index + 1); } @@ -495,7 +510,7 @@ export default class Carousel extends BaseComponent { /** Pause the automatic cycle. */ pause() { const { element, options } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!this.isPaused && options.interval) { addClass(element, pausedClass); Timer.set( @@ -511,7 +526,7 @@ export default class Carousel extends BaseComponent { /** Slide to the next item. */ next() { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!this.isAnimating) { this.to(this.index + 1); } @@ -519,7 +534,7 @@ export default class Carousel extends BaseComponent { /** Slide to the previous item. */ prev() { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!this.isAnimating) { this.to(this.index - 1); } @@ -541,7 +556,7 @@ export default class Carousel extends BaseComponent { // `to()` must be SPAM protected by Timer if (!this.isAnimating && activeItem !== next && !Timer.get(element, dataBsSlide)) { // determine transition direction - /* istanbul ignore else */ + // istanbul ignore else @preserve if (activeItem < next || (activeItem === 0 && next === slides.length - 1)) { this.direction = RTL ? 'right' : 'left'; // next } else if (activeItem > next || (activeItem === slides.length - 1 && next === 0)) { @@ -605,7 +620,7 @@ export default class Carousel extends BaseComponent { () => { Timer.clear(element, dataBsSlide); // check for element, might have been disposed - /* istanbul ignore else */ + // istanbul ignore else @preserve if (element && options.interval && !this.isPaused) { this.cycle(); } @@ -641,22 +656,24 @@ export default class Carousel extends BaseComponent { action(element, dragstartEvent, carouselDragHandler, { passive: false }); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (controls.length) { controls.forEach(arrow => { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (arrow) action(arrow, mouseclickEvent, carouselControlsHandler); }); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (indicators.length) { indicators.forEach(indicator => { action(indicator, mouseclickEvent, carouselIndicatorHandler); }); } - if (keyboard) action(getDocument(element), keydownEvent, carouselKeyHandler); + if (keyboard) { + action(getDocument(element), keydownEvent, carouselKeyHandler); + } }; /** Remove `Carousel` component from target. */ @@ -670,7 +687,7 @@ export default class Carousel extends BaseComponent { this._toggleEventListeners(); super.dispose(); - // istanbul ignore next - impossible to test with cypress + // istanbul ignore next @preserve - impossible to test if (clone.isAnimating) { emulateTransitionEnd(clone.slides[clone.index], () => { carouselTransitionEndHandler(clone); diff --git a/src/components/collapse.ts b/src/components/collapse.ts index 7e8d7109..89fa88ec 100644 --- a/src/components/collapse.ts +++ b/src/components/collapse.ts @@ -1,26 +1,26 @@ /* Native JavaScript for Bootstrap 5 | Collapse ----------------------------------------------- */ import { - getInstance, - setAttribute, - getDocument, - closest, - querySelector, - querySelectorAll, addClass, - hasClass, - removeClass, - mouseclickEvent, ariaExpanded, + closest, + createCustomEvent, + dispatchEvent, emulateTransitionEnd, + getDocument, + getInstance, + hasClass, + isHTMLElement, + isString, + mouseclickEvent, + noop, + querySelector, + querySelectorAll, reflow, - dispatchEvent, + removeClass, + setAttribute, setElementStyle, Timer, - createCustomEvent, - noop, - isHTMLElement, - isString, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -54,10 +54,10 @@ const collapseInitCallback = (element: HTMLElement) => new Collapse(element); // COLLAPSE CUSTOM EVENTS // ====================== -const showCollapseEvent = createCustomEvent(`show.bs.${collapseString}`); -const shownCollapseEvent = createCustomEvent(`shown.bs.${collapseString}`); -const hideCollapseEvent = createCustomEvent(`hide.bs.${collapseString}`); -const hiddenCollapseEvent = createCustomEvent(`hidden.bs.${collapseString}`); +const showCollapseEvent = createCustomEvent, CollapseEvent>(`show.bs.${collapseString}`); +const shownCollapseEvent = createCustomEvent, CollapseEvent>(`shown.bs.${collapseString}`); +const hideCollapseEvent = createCustomEvent, CollapseEvent>(`hide.bs.${collapseString}`); +const hiddenCollapseEvent = createCustomEvent, CollapseEvent>(`hidden.bs.${collapseString}`); // COLLAPSE PRIVATE METHODS // ======================== @@ -121,7 +121,7 @@ const collapseContent = (self: Collapse) => { emulateTransitionEnd(element, () => { Timer.clear(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (parent) Timer.clear(parent); triggers.forEach(btn => setAttribute(btn, ariaExpanded, 'false')); @@ -148,7 +148,7 @@ const collapseClickHandler = (e: MouseEvent) => { const trigger = target && closest(target as HTMLElement, collapseToggleSelector); const element = trigger && getTargetElement(trigger); const self = element && getCollapseInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) self.toggle(); // event target is anchor link #398 @@ -185,7 +185,7 @@ export default class Collapse extends BaseComponent { this.parent = isHTMLElement(options.parent) ? options.parent : isString(options.parent) - ? getTargetElement(element) || querySelector(options.parent as string, doc) + ? getTargetElement(element) || querySelector(options.parent, doc) : null; // add event listeners @@ -210,9 +210,10 @@ export default class Collapse extends BaseComponent { /** Hides the collapse. */ hide() { const { triggers, element } = this; + // istanbul ignore else @preserve if (!Timer.get(element)) { collapseContent(this); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (triggers.length) { triggers.forEach(btn => addClass(btn, `${collapseString}d`)); } @@ -241,7 +242,7 @@ export default class Collapse extends BaseComponent { } expandCollapse(this); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (triggers.length) { triggers.forEach(btn => removeClass(btn, `${collapseString}d`)); } @@ -263,7 +264,7 @@ export default class Collapse extends BaseComponent { const action = add ? addListener : removeListener; const { triggers } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (triggers.length) { triggers.forEach(btn => action(btn, mouseclickEvent, collapseClickHandler)); } diff --git a/src/components/dropdown.ts b/src/components/dropdown.ts index dcbe8f17..27096a53 100644 --- a/src/components/dropdown.ts +++ b/src/components/dropdown.ts @@ -1,39 +1,39 @@ /* Native JavaScript for Bootstrap 5 | Dropdown ----------------------------------------------- */ import { + addClass, ariaExpanded, - focusEvent, - keydownEvent, - setAttribute, - keyEscape, - keyArrowDown, - keyArrowUp, - mouseclickEvent, - resizeEvent, - scrollEvent, - keyupEvent, - dispatchEvent, - setElementStyle, - getInstance, - ObjectAssign, - passiveHandler, - getElementsByClassName, closest, + createCustomEvent, + CSS4Declaration, + dispatchEvent, + focus, + focusEvent, getAttribute, - getDocument, getBoundingClientRect, + getDocument, getDocumentElement, + getElementsByClassName, getElementStyle, - isRTL, - removeClass, - hasClass, - addClass, - createCustomEvent, - focus, + getInstance, getWindow, - CSS4Declaration, + hasClass, isHTMLElement, + isRTL, + keyArrowDown, + keyArrowUp, + keydownEvent, + keyEscape, + keyupEvent, + mouseclickEvent, mousedownEvent, + ObjectAssign, + passiveHandler, + removeClass, + resizeEvent, + scrollEvent, + setAttribute, + setElementStyle, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -77,13 +77,15 @@ const dropdownDefaults = { display: 'dynamic', // [dynamic|static] }; +type DropdownEventProps = { relatedTarget: HTMLElement }; + // DROPDOWN CUSTOM EVENTS // ====================== -const showDropdownEvent = createCustomEvent(`show.bs.${dropdownString}`); -const shownDropdownEvent = createCustomEvent(`shown.bs.${dropdownString}`); -const hideDropdownEvent = createCustomEvent(`hide.bs.${dropdownString}`); -const hiddenDropdownEvent = createCustomEvent(`hidden.bs.${dropdownString}`); -const updatedDropdownEvent = createCustomEvent(`updated.bs.${dropdownString}`); +const showDropdownEvent = createCustomEvent(`show.bs.${dropdownString}`); +const shownDropdownEvent = createCustomEvent(`shown.bs.${dropdownString}`); +const hideDropdownEvent = createCustomEvent(`hide.bs.${dropdownString}`); +const hiddenDropdownEvent = createCustomEvent(`hidden.bs.${dropdownString}`); +const updatedDropdownEvent = createCustomEvent(`updated.bs.${dropdownString}`); // DROPDOWN PRIVATE METHODS // ======================== @@ -98,7 +100,7 @@ const styleDropdown = (self: Dropdown) => { const { offset } = options; // don't apply any style on mobile view - /* istanbul ignore else: this test requires a navbar */ + // istanbul ignore else @preserve: this test requires a navbar if (getElementStyle(menu, 'position') !== 'static') { const RTL = isRTL(element); // const menuStart = hasClass(menu, dropdownMenuStartClass); @@ -118,7 +120,8 @@ const styleDropdown = (self: Dropdown) => { // this requires navbar/btn-group/input-group let positionClass = dropdownClasses.find(c => hasClass(parentElement, c)) || - /* istanbul ignore next: fallback position */ dropdownString; + // istanbul ignore next @preserve: fallback position + dropdownString; const dropdownMargin: { [key: string]: number[] } = { dropdown: [offset, 0, 0], @@ -191,9 +194,18 @@ const styleDropdown = (self: Dropdown) => { // don't realign when menu is wider than window // in both RTL and non-RTL readability is KING let posAjust: { left: 'auto' | number; right: 'auto' | number } | undefined = { left: 'auto', right: 'auto' }; - if (!leftExceed && rightExceed && !RTL) posAjust = { left: 'auto', right: 0 }; - if (leftExceed && !rightExceed && RTL) posAjust = { left: 0, right: 'auto' }; - if (posAjust) ObjectAssign(dropdownPosition[positionClass], posAjust); + // istanbul ignore else @preserve + if (!leftExceed && rightExceed && !RTL) { + posAjust = { left: 'auto', right: 0 }; + } + // istanbul ignore else @preserve + if (leftExceed && !rightExceed && RTL) { + posAjust = { left: 0, right: 'auto' }; + } + // istanbul ignore else @preserve + if (posAjust) { + ObjectAssign(dropdownPosition[positionClass], posAjust); + } } const margins: number[] = dropdownMargin[positionClass]; @@ -204,10 +216,13 @@ const styleDropdown = (self: Dropdown) => { // override dropdown-menu-start | dropdown-menu-end if (verticalClass.includes(positionClass) && menuEnd) { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (menuEnd) { const endAdjust = - (!RTL && leftExceed) || (RTL && rightExceed) ? 'menuStart' : /* istanbul ignore next */ 'menuEnd'; + (!RTL && leftExceed) || (RTL && rightExceed) + ? 'menuStart' + : // istanbul ignore next @preserve + 'menuEnd'; setElementStyle(menu, dropdownPosition[endAdjust]); } } @@ -251,7 +266,7 @@ const toggleDropdownDismiss = (self: Dropdown) => { action(doc, keydownEvent, dropdownPreventScroll); action(doc, keyupEvent, dropdownKeyHandler); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (options.display === 'dynamic') { [scrollEvent, resizeEvent].forEach(ev => { action(getWindow(element), ev, dropdownLayoutHandler, passiveHandler); @@ -288,13 +303,13 @@ const getCurrentOpenDropdown = (element: HTMLElement): HTMLElement | undefined = const dropdownDismissHandler = (e: MouseEvent) => { const { target, type } = e; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (target && isHTMLElement(target)) { // some weird FF bug #409 const element = getCurrentOpenDropdown(target); const self = element && getDropdownInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { const { parentElement, menu } = self; @@ -307,7 +322,7 @@ const dropdownDismissHandler = (e: MouseEvent) => { e.preventDefault(); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!isForm && type !== focusEvent && target !== element && target !== menu) { self.hide(); } @@ -325,11 +340,11 @@ const dropdownClickHandler = (e: MouseEvent) => { const element = target && closest(target as HTMLElement, dropdownSelector); const self = element && getDropdownInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { e.stopPropagation(); self.toggle(); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (element && isEmptyAnchor(element)) e.preventDefault(); } }; @@ -340,7 +355,7 @@ const dropdownClickHandler = (e: MouseEvent) => { * @param e event object */ const dropdownPreventScroll = (e: KeyboardEvent) => { - /* istanbul ignore else */ + // istanbul ignore else @preserve if ([keyArrowDown, keyArrowUp].includes(e.code)) e.preventDefault(); }; @@ -355,7 +370,7 @@ function dropdownKeyHandler(this: HTMLElement, e: KeyboardEvent) { const self = element && getDropdownInstance(element); const { activeElement } = (element && getDocument(element)) as Document; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self && activeElement) { const { menu, open } = self; const menuItems = getMenuItems(menu); @@ -363,7 +378,7 @@ function dropdownKeyHandler(this: HTMLElement, e: KeyboardEvent) { // arrow up & down if (menuItems && menuItems.length && [keyArrowDown, keyArrowUp].includes(code)) { let idx = menuItems.indexOf(activeElement); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (activeElement === element) { idx = 0; } else if (code === keyArrowUp) { @@ -371,7 +386,7 @@ function dropdownKeyHandler(this: HTMLElement, e: KeyboardEvent) { } else if (code === keyArrowDown) { idx = idx < menuItems.length - 1 ? idx + 1 : idx; } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (menuItems[idx]) focus(menuItems[idx] as HTMLElement); } @@ -387,7 +402,7 @@ function dropdownLayoutHandler(this: HTMLElement) { const element = getCurrentOpenDropdown(this); const self = element && getDropdownInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self && self.open) styleDropdown(self); } @@ -450,7 +465,7 @@ export default class Dropdown extends BaseComponent { show() { const { element, open, menu, parentElement } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!open) { const currentElement = getCurrentOpenDropdown(element); const currentInstance = currentElement && getDropdownInstance(currentElement); @@ -483,7 +498,7 @@ export default class Dropdown extends BaseComponent { hide() { const { element, open, menu, parentElement } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (open) { [hideDropdownEvent, hiddenDropdownEvent].forEach(e => { e.relatedTarget = element; diff --git a/src/components/modal.ts b/src/components/modal.ts index ebce5bb2..8bded37a 100644 --- a/src/components/modal.ts +++ b/src/components/modal.ts @@ -1,37 +1,38 @@ /* Native JavaScript for Bootstrap 5 | Modal -------------------------------------------- */ import { - keyEscape, - getElementTransitionDuration, - removeAttribute, - setAttribute, - keydownEvent, - mouseclickEvent, - resizeEvent, - ariaModal, - ariaHidden, - getInstance, - isRTL, - removeClass, - hasClass, addClass, + ariaHidden, + ariaModal, closest, - querySelectorAll, - querySelector, - getDocumentElement, - getDocumentBody, - getDocument, - getWindow, - CSS4Declaration, - setElementStyle, createCustomEvent, - emulateTransitionEnd, - passiveHandler, + CSS4Declaration, dispatchEvent, + emulateTransitionEnd, focus, - Timer, - MouseEvent, + getDocument, + getDocumentBody, + getDocumentElement, + getElementTransitionDuration, + getInstance, + getWindow, + hasClass, + isRTL, KeyboardEvent, + keydownEvent, + keyEscape, + mouseclickEvent, + MouseEvent, + passiveHandler, + querySelector, + querySelectorAll, + removeAttribute, + removeClass, + resizeEvent, + setAttribute, + setElementStyle, + Timer, + toggleFocusTrap, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -43,22 +44,21 @@ import showClass from '../strings/showClass'; import modalString from '../strings/modalString'; import modalComponent from '../strings/modalComponent'; import offcanvasComponent from '../strings/offcanvasComponent'; - import getTargetElement from '../util/getTargetElement'; -import { setScrollbar, measureScrollbar } from '../util/scrollbar'; +import { measureScrollbar, setScrollbar } from '../util/scrollbar'; import { - overlay, - modalActiveSelector, - toggleOverlayType, appendOverlay, - showOverlay, - hideOverlay, getCurrentOpen, + hideOverlay, + modalActiveSelector, + overlay, removeOverlay, + showOverlay, + toggleOverlayType, } from '../util/backdrop'; import isVisible from '../util/isVisible'; import BaseComponent from './base-component'; -import { ModalOptions, ModalEvent } from '../interface/modal'; +import { ModalEvent, ModalOptions } from '../interface/modal'; import { hasPopup } from '../util/popupContainer'; // MODAL PRIVATE GC @@ -73,6 +73,10 @@ const modalDefaults = { keyboard: true, }; +type ModalEventProps = { + relatedTarget: HTMLElement | undefined; +}; + /** * Static method which returns an existing `Modal` instance associated * to a target `Element`. @@ -86,10 +90,10 @@ const modalInitCallback = (element: HTMLElement) => new Modal(element); // MODAL CUSTOM EVENTS // =================== -const showModalEvent = createCustomEvent(`show.bs.${modalString}`); -const shownModalEvent = createCustomEvent(`shown.bs.${modalString}`); -const hideModalEvent = createCustomEvent(`hide.bs.${modalString}`); -const hiddenModalEvent = createCustomEvent(`hidden.bs.${modalString}`); +const showModalEvent = createCustomEvent(`show.bs.${modalString}`); +const shownModalEvent = createCustomEvent(`shown.bs.${modalString}`); +const hideModalEvent = createCustomEvent(`hide.bs.${modalString}`); +const hiddenModalEvent = createCustomEvent(`hidden.bs.${modalString}`); // MODAL PRIVATE METHODS // ===================== @@ -106,11 +110,13 @@ const setModalScrollbar = (self: Modal) => { const { clientHeight: modalHeight, scrollHeight: modalScrollHeight } = element; const modalOverflow = modalHeight !== modalScrollHeight; - /* istanbul ignore else */ + // istanbul ignore next @preserve: impossible to test? if (!modalOverflow && scrollbarWidth) { - const pad = !isRTL(element) ? 'paddingRight' : /* istanbul ignore next */ 'paddingLeft'; - const padStyle = {} as Partial; - padStyle[pad] = `${scrollbarWidth}px`; + const pad = !isRTL(element) + ? 'paddingRight' + : // istanbul ignore next @preserve + 'paddingLeft'; + const padStyle = { [pad]: `${scrollbarWidth}px` } as Partial; setElementStyle(element, padStyle); } setScrollbar(element, modalOverflow || clientHeight !== scrollHeight); @@ -142,11 +148,12 @@ const afterModalHide = (self: Modal) => { toggleModalDismiss(self); const focusElement = showModalEvent.relatedTarget || triggers.find(isVisible); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (focusElement) focus(focusElement as HTMLElement); hiddenModalEvent.relatedTarget = relatedTarget as HTMLElement | undefined; dispatchEvent(element, hiddenModalEvent); + toggleFocusTrap(element); }; /** @@ -161,6 +168,7 @@ const afterModalShow = (self: Modal) => { shownModalEvent.relatedTarget = relatedTarget as HTMLElement | undefined; dispatchEvent(element, shownModalEvent); + toggleFocusTrap(element); }; /** @@ -172,7 +180,7 @@ const beforeModalShow = (self: Modal) => { const { element, hasFade } = self; setElementStyle(element, { display: 'block' }); setModalScrollbar(self); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!getCurrentOpen(element)) { setElementStyle(getDocumentBody(element), { overflow: 'hidden' }); } @@ -218,9 +226,9 @@ const modalClickHandler = (e: MouseEvent) => { const element = trigger && getTargetElement(trigger); const self = element && getModalInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (trigger && trigger.tagName === 'A') e.preventDefault(); self.relatedTarget = trigger; self.toggle(); @@ -237,10 +245,10 @@ const modalKeyHandler = ({ code, target }: KeyboardEvent) => { const element = querySelector(modalActiveSelector, getDocument(target)); const self = element && getModalInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { const { options } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if ( options.keyboard && code === keyEscape && // the keyboard option is enabled and the key is 27 @@ -260,10 +268,10 @@ const modalKeyHandler = ({ code, target }: KeyboardEvent) => { */ const modalDismissHandler = (e: MouseEvent) => { const { currentTarget } = e; - const self = currentTarget ? getModalInstance(currentTarget) : null; + const self = currentTarget && getModalInstance(currentTarget); // this timer is needed - /* istanbul ignore else: must have a filter */ + // istanbul ignore else @preserve if (self && currentTarget && !Timer.get(currentTarget)) { const { options, isStatic, modalDialog } = self; const { backdrop } = options; @@ -273,7 +281,7 @@ const modalDismissHandler = (e: MouseEvent) => { const targetInsideDialog = modalDialog.contains(target); const dismiss = target && closest(target, modalDismissSelector); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isStatic && !targetInsideDialog) { Timer.set( currentTarget, @@ -331,7 +339,7 @@ export default class Modal extends BaseComponent { // the modal-dialog const modalDialog = querySelector(`.${modalString}-dialog`, element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (modalDialog) { this.modalDialog = modalDialog; // modal can have multiple triggering elements @@ -376,6 +384,7 @@ export default class Modal extends BaseComponent { const { backdrop } = options; let overlayDelay = 0; + // istanbul ignore else @preserve if (!hasClass(element, showClass)) { showModalEvent.relatedTarget = relatedTarget || undefined; dispatchEvent(element, showModalEvent); @@ -383,11 +392,13 @@ export default class Modal extends BaseComponent { // we elegantly hide any opened modal/offcanvas const currentOpen = getCurrentOpen(element); + // istanbul ignore else @preserve if (currentOpen && currentOpen !== element) { const that = getModalInstance(currentOpen) || - /* istanbul ignore next */ + // istanbul ignore next @preserve getInstance void }>(currentOpen, offcanvasComponent); + // istanbul ignore else @preserve if (that) that.hide(); } if (backdrop) { @@ -403,7 +414,7 @@ export default class Modal extends BaseComponent { setTimeout(() => beforeModalShow(this), overlayDelay); } else { beforeModalShow(this); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (currentOpen && hasClass(overlay, showClass)) { hideOverlay(); } @@ -416,16 +427,17 @@ export default class Modal extends BaseComponent { hide() { const { element, hasFade, relatedTarget } = this; + // istanbul ignore else @preserve if (hasClass(element, showClass)) { hideModalEvent.relatedTarget = relatedTarget || undefined; dispatchEvent(element, hideModalEvent); + // istanbul ignore else @preserve if (!hideModalEvent.defaultPrevented) { removeClass(element, showClass); setAttribute(element, ariaHidden, 'true'); removeAttribute(element, ariaModal); - /* istanbul ignore else */ if (hasFade) { emulateTransitionEnd(element, () => beforeModalHide(this)); } else { @@ -439,7 +451,7 @@ export default class Modal extends BaseComponent { * Updates the modal layout. */ update = () => { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (hasClass(this.element, showClass)) setModalScrollbar(this); }; @@ -452,7 +464,7 @@ export default class Modal extends BaseComponent { const action = add ? addListener : removeListener; const { triggers } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (triggers.length) { triggers.forEach(btn => action(btn, mouseclickEvent, modalClickHandler)); } @@ -461,15 +473,13 @@ export default class Modal extends BaseComponent { /** Removes the `Modal` component from target element. */ dispose() { const clone = { ...this }; - const { element, modalDialog } = clone; - // const callback = () => setTimeout(() => super.dispose(), 17); - const callback = () => super.dispose(); - this._toggleEventListeners(); + const { modalDialog, hasFade } = clone; + const callback = () => setTimeout(() => super.dispose(), 17); this.hide(); + this._toggleEventListeners(); - /* istanbul ignore else */ - if (hasClass(element, 'fade')) { + if (hasFade) { // use transitionend callback emulateTransitionEnd(modalDialog, callback); } else { diff --git a/src/components/offcanvas.ts b/src/components/offcanvas.ts index 124fe9b0..8f61e61b 100644 --- a/src/components/offcanvas.ts +++ b/src/components/offcanvas.ts @@ -1,29 +1,30 @@ /* Native JavaScript for Bootstrap 5 | OffCanvas ------------------------------------------------ */ import { - ariaHidden, addClass, - hasClass, - closest, - querySelectorAll, - querySelector, - removeAttribute, - setAttribute, - keyEscape, - keydownEvent, - mouseclickEvent, + ariaHidden, ariaModal, - emulateTransitionEnd, + closest, + createCustomEvent, dispatchEvent, - getElementTransitionDuration, + emulateTransitionEnd, + focus, + getDocument, getDocumentBody, getDocumentElement, - getDocument, + getElementTransitionDuration, + getInstance, + hasClass, + keydownEvent, + keyEscape, + mouseclickEvent, + querySelector, + querySelectorAll, + removeAttribute, removeClass, + setAttribute, setElementStyle, - createCustomEvent, - focus, - getInstance, + toggleFocusTrap, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -40,17 +41,17 @@ import isVisible from '../util/isVisible'; import { setScrollbar } from '../util/scrollbar'; import { hasPopup } from '../util/popupContainer'; import { - overlay, - offcanvasActiveSelector, - toggleOverlayType, appendOverlay, - showOverlay, - hideOverlay, getCurrentOpen, + hideOverlay, + offcanvasActiveSelector, + overlay, removeOverlay, + showOverlay, + toggleOverlayType, } from '../util/backdrop'; import BaseComponent from './base-component'; -import { OffcanvasOptions, OffcanvasEvent } from '../interface/offcanvas'; +import { OffcanvasEvent, OffcanvasOptions } from '../interface/offcanvas'; // OFFCANVAS PRIVATE GC // ==================== @@ -65,6 +66,10 @@ const offcanvasDefaults = { scroll: false, // boolean }; +type OffCanvasEventProps = { + relatedTarget: HTMLElement | undefined; +}; + /** * Static method which returns an existing `Offcanvas` instance associated * to a target `Element`. @@ -78,10 +83,10 @@ const offcanvasInitCallback = (element: HTMLElement) => new Offcanvas(element); // OFFCANVAS CUSTOM EVENTS // ======================= -const showOffcanvasEvent = createCustomEvent(`show.bs.${offcanvasString}`); -const shownOffcanvasEvent = createCustomEvent(`shown.bs.${offcanvasString}`); -const hideOffcanvasEvent = createCustomEvent(`hide.bs.${offcanvasString}`); -const hiddenOffcanvasEvent = createCustomEvent(`hidden.bs.${offcanvasString}`); +const showOffcanvasEvent = createCustomEvent(`show.bs.${offcanvasString}`); +const shownOffcanvasEvent = createCustomEvent(`shown.bs.${offcanvasString}`); +const hideOffcanvasEvent = createCustomEvent(`hide.bs.${offcanvasString}`); +const hiddenOffcanvasEvent = createCustomEvent(`hidden.bs.${offcanvasString}`); // OFFCANVAS PRIVATE METHODS // ========================= @@ -118,7 +123,7 @@ const toggleOffCanvasDismiss = (self: Offcanvas, add?: boolean) => { const beforeOffcanvasShow = (self: Offcanvas) => { const { element, options } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!options.scroll) { setOffCanvasScrollbar(self); setElementStyle(getDocumentBody(element), { overflow: 'hidden' }); @@ -160,11 +165,11 @@ const offcanvasTriggerHandler = (e: MouseEvent) => { const element = trigger && getTargetElement(trigger); const self = element && getOffcanvasInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { self.relatedTarget = trigger; self.toggle(); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (trigger && trigger.tagName === 'A') { e.preventDefault(); } @@ -182,21 +187,22 @@ const offcanvasDismissHandler = (e: MouseEvent) => { const offCanvasDismiss = querySelector(offcanvasDismissSelector, element as HTMLElement | undefined); const self = element && getOffcanvasInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { const { options, triggers } = self; const { backdrop } = options; const trigger = closest(target as HTMLElement, offcanvasToggleSelector); const selection = getDocument(element).getSelection(); - /* istanbul ignore else: a filter is required here */ + // istanbul ignore else: a filter is required here @preserve if (!overlay.contains(target as HTMLElement) || backdrop !== 'static') { - /* istanbul ignore else */ + // istanbul ignore else @preserve if ( !(selection && selection.toString().length) && ((!element.contains(target as HTMLElement) && backdrop && - /* istanbul ignore next */ (!trigger || triggers.includes(target as HTMLElement))) || + // istanbul ignore next @preserve + (!trigger || triggers.includes(target as HTMLElement))) || (offCanvasDismiss && offCanvasDismiss.contains(target as HTMLElement))) ) { self.relatedTarget = @@ -204,7 +210,7 @@ const offcanvasDismissHandler = (e: MouseEvent) => { self.hide(); } - /* istanbul ignore next */ + // istanbul ignore next @preserve if (trigger && trigger.tagName === 'A') e.preventDefault(); } } @@ -220,9 +226,9 @@ const offcanvasKeyDismissHandler = ({ code, target }: KeyboardEvent) => { const element = querySelector(offcanvasActiveSelector, getDocument(target as Node)); const self = element && getOffcanvasInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self.options.keyboard && code === keyEscape) { self.relatedTarget = null; self.hide(); @@ -247,6 +253,7 @@ const showOffcanvasComplete = (self: Offcanvas) => { toggleOffCanvasDismiss(self, true); focus(element); + toggleFocusTrap(element); }; /** @@ -263,13 +270,14 @@ const hideOffcanvasComplete = (self: Offcanvas) => { setElementStyle(element, { visibility: '' }); const visibleTrigger = showOffcanvasEvent.relatedTarget || triggers.find(isVisible); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (visibleTrigger) focus(visibleTrigger as HTMLElement); removeOverlay(element); dispatchEvent(element, hiddenOffcanvasEvent); removeClass(element, offcanvasTogglingClass); + toggleFocusTrap(element); // must check for open instances if (!getCurrentOpen(element)) { @@ -347,8 +355,10 @@ export default class Offcanvas extends BaseComponent { if (currentOpen && currentOpen !== element) { const that = getOffcanvasInstance(currentOpen) || - /* istanbul ignore next */ + // istanbul ignore next @preserve getInstance void }>(currentOpen, modalComponent); + + // istanbul ignore else @preserve if (that) that.hide(); } @@ -365,7 +375,7 @@ export default class Offcanvas extends BaseComponent { setTimeout(() => beforeOffcanvasShow(this), overlayDelay); } else { beforeOffcanvasShow(this); - /* istanbul ignore next - this test was done on Modal */ + // istanbul ignore next @preserve - this test was done on Modal if (currentOpen && hasClass(overlay, showClass)) { hideOverlay(); } @@ -377,7 +387,6 @@ export default class Offcanvas extends BaseComponent { /** Hides the offcanvas from the user. */ hide() { const { element, relatedTarget } = this; - // let overlayDelay = 0; if (hasClass(element, showClass)) { hideOffcanvasEvent.relatedTarget = relatedTarget || undefined; @@ -404,16 +413,16 @@ export default class Offcanvas extends BaseComponent { /** Removes the `Offcanvas` from the target element. */ dispose() { - const clone = { ...this }; - const { element, options } = clone; - const delay = options.backdrop ? getElementTransitionDuration(overlay) : /* istanbul ignore next */ 0; - const callback = () => setTimeout(() => super.dispose(), delay + 17); - this._toggleEventListeners(); + const { element } = this; + const isOpen = hasClass(element, showClass); + const callback = () => setTimeout(() => super.dispose(), 1); this.hide(); - if (hasClass(element, showClass)) { + this._toggleEventListeners(); + + if (isOpen) { emulateTransitionEnd(element, callback); - /* istanbul ignore next */ + // istanbul ignore next @preserve } else { callback(); } diff --git a/src/components/popover.ts b/src/components/popover.ts index e676ab15..a1a488df 100644 --- a/src/components/popover.ts +++ b/src/components/popover.ts @@ -1,6 +1,6 @@ /* Native JavaScript for Bootstrap 5 | Popover ---------------------------------------------- */ -import { getInstance, ObjectAssign, focus } from '@thednp/shorty'; +import { focus, getInstance, ObjectAssign } from '@thednp/shorty'; import dataBsToggle from '../strings/dataBsToggle'; import popoverString from '../strings/popoverString'; @@ -27,7 +27,6 @@ const popoverDefaults: PopoverOptions = ObjectAssign({}, tooltipDefaults, { /** * Static method which returns an existing `Popover` instance associated * to a target `Element`. - * */ const getPopoverInstance = (element: HTMLElement) => getInstance(element, popoverComponent); @@ -71,7 +70,7 @@ export default class Popover extends Tooltip { super.show(); // btn only exists within dismissible popover const { options, btn } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (options.dismissible && btn) setTimeout(() => focus(btn), 17); }; } diff --git a/src/components/scrollspy.ts b/src/components/scrollspy.ts index d5de62d8..1a825213 100644 --- a/src/components/scrollspy.ts +++ b/src/components/scrollspy.ts @@ -1,24 +1,24 @@ /* Native JavaScript for Bootstrap 5 | ScrollSpy ------------------------------------------------ */ import { + addClass, + createCustomEvent, + dispatchEvent, + getAttribute, + getBoundingClientRect, + getDocument, getDocumentBody, getDocumentElement, - getDocument, + getElementsByTagName, + getInstance, getWindow, - removeClass, hasClass, - addClass, - getElementsByTagName, - getAttribute, - querySelector, isHTMLElement, isWindow, - createCustomEvent, - getInstance, - scrollEvent, passiveHandler, - dispatchEvent, - getBoundingClientRect, + querySelector, + removeClass, + scrollEvent, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -28,7 +28,7 @@ import scrollspyString from '../strings/scrollspyString'; import scrollspyComponent from '../strings/scrollspyComponent'; import BaseComponent from './base-component'; -import { ScrollSpyOptions, ScrollSpyEvent } from '../interface/scrollspy'; +import { ScrollSpyEvent, ScrollSpyOptions } from '../interface/scrollspy'; // SCROLLSPY PRIVATE GC // ==================== @@ -39,6 +39,10 @@ const scrollspyDefaults: ScrollSpyOptions = { target: null, }; +type ScrollSpyEventProps = { + relatedTarget: HTMLElement; +}; + /** * Static method which returns an existing `ScrollSpy` instance associated * to a target `Element`. @@ -52,7 +56,7 @@ const scrollspyInitCallback = (element: HTMLElement) => new ScrollSpy(element); // SCROLLSPY CUSTOM EVENT // ====================== -const activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`); +const activateScrollSpy = createCustomEvent(`activate.bs.${scrollspyString}`); // SCROLLSPY PRIVATE METHODS // ========================= @@ -67,12 +71,15 @@ const updateSpyTargets = (self: ScrollSpy) => { const isWin = isWindow(scrollTarget as Node | Window); const links = target && getElementsByTagName('A', target); - const scrollHEIGHT = scrollTarget ? getScrollHeight(scrollTarget) : /* istanbul ignore next */ scrollHeight; + const scrollHEIGHT = scrollTarget + ? getScrollHeight(scrollTarget) + : // istanbul ignore next @preserve + scrollHeight; self.scrollTop = isWin ? (scrollTarget as Window).scrollY : (scrollTarget as HTMLElement).scrollTop; // only update items/offsets once or with each mutation - /* istanbul ignore else */ + // istanbul ignore else @preserve if (links && (scrollHEIGHT !== scrollHeight || itemsLength !== links.length)) { let href; let targetItem; @@ -139,7 +146,10 @@ const clear = (target: HTMLElement) => { */ const activate = (self: ScrollSpy, item: HTMLElement) => { const { target, element } = self; + + // istanbul ignore else @preserve if (isHTMLElement(target)) clear(target); + self.activeItem = item; addClass(item, activeClass); @@ -148,13 +158,15 @@ const activate = (self: ScrollSpy, item: HTMLElement) => { let parentItem = item; while (parentItem !== getDocumentBody(element)) { parentItem = parentItem.parentElement as HTMLElement; - if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) parents.push(parentItem); + if (hasClass(parentItem, 'nav') || hasClass(parentItem, 'dropdown-menu')) { + parents.push(parentItem); + } } parents.forEach(menuItem => { const parentLink = menuItem.previousElementSibling as HTMLElement | null; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (parentLink && !hasClass(parentLink, activeClass)) { addClass(parentLink, activeClass); } @@ -231,7 +243,7 @@ export default class ScrollSpy extends BaseComponent { const { target } = this; // check if target is visible and invalidate - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isHTMLElement(target) && target.offsetHeight > 0) { updateSpyTargets(this); @@ -240,7 +252,7 @@ export default class ScrollSpy extends BaseComponent { if (scrollTop >= maxScroll) { const newActiveItem = items[itemsLength - 1]; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (activeItem !== newActiveItem) { activate(this, newActiveItem); } @@ -249,8 +261,10 @@ export default class ScrollSpy extends BaseComponent { const { offsets } = this; + // istanbul ignore else @preserve if (activeItem && scrollTop < offsets[0] && offsets[0] > 0) { this.activeItem = null; + // istanbul ignore else @preserve if (target) clear(target); return; } diff --git a/src/components/tab.ts b/src/components/tab.ts index 95b230a5..e007fb4a 100644 --- a/src/components/tab.ts +++ b/src/components/tab.ts @@ -1,22 +1,22 @@ /* Native JavaScript for Bootstrap 5 | Tab ------------------------------------------ */ import { - emulateTransitionEnd, - dispatchEvent, - removeClass, - hasClass, addClass, - querySelector, - getElementsByClassName, + ariaSelected, closest, - setAttribute, - mouseclickEvent, createCustomEvent, - Timer, + dispatchEvent, + emulateTransitionEnd, + getElementsByClassName, getInstance, - ariaSelected, - reflow, + hasClass, isHTMLElement, + mouseclickEvent, + querySelector, + reflow, + removeClass, + setAttribute, + Timer, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -47,12 +47,16 @@ const getTabInstance = (element: HTMLElement) => getInstance(element, tabCo /** A `Tab` initialization callback. */ const tabInitCallback = (element: HTMLElement) => new Tab(element); +type TabEventProps = { + relatedTarget: HTMLElement | undefined; +}; + // TAB CUSTOM EVENTS // ================= -const showTabEvent = createCustomEvent(`show.bs.${tabString}`); -const shownTabEvent = createCustomEvent(`shown.bs.${tabString}`); -const hideTabEvent = createCustomEvent(`hide.bs.${tabString}`); -const hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`); +const showTabEvent = createCustomEvent(`show.bs.${tabString}`); +const shownTabEvent = createCustomEvent(`shown.bs.${tabString}`); +const hideTabEvent = createCustomEvent(`hide.bs.${tabString}`); +const hiddenTabEvent = createCustomEvent(`hidden.bs.${tabString}`); interface TabPrivate { tab: HTMLElement | null; @@ -77,13 +81,13 @@ const tabPrivate: Map = new Map(); const triggerTabEnd = (self: Tab) => { const { tabContent, nav } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tabContent && hasClass(tabContent, collapsingClass)) { tabContent.style.height = ''; removeClass(tabContent, collapsingClass); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (nav) Timer.clear(nav); }; @@ -94,23 +98,21 @@ const triggerTabEnd = (self: Tab) => { */ const triggerTabShow = (self: Tab) => { const { element, tabContent, content: nextContent, nav } = self; - const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null }; + const { tab } = (isHTMLElement(nav) && tabPrivate.get(nav)) || { tab: null }; // istanbul ignore next @preserve - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tabContent && nextContent && hasClass(nextContent, fadeClass)) { - const { currentHeight, nextHeight } = tabPrivate.get(element) || /* istanbul ignore next */ { - currentHeight: 0, - nextHeight: 0, - }; - if (currentHeight === nextHeight) { - triggerTabEnd(self); - } else { + const { currentHeight, nextHeight } = tabPrivate.get(element) || { currentHeight: 0, nextHeight: 0 }; // istanbul ignore next @preserve + // istanbul ignore else @preserve: vitest won't validate this branch + if (currentHeight !== nextHeight) { // enables height animation setTimeout(() => { tabContent.style.height = `${nextHeight}px`; reflow(tabContent); emulateTransitionEnd(tabContent, () => triggerTabEnd(self)); }, 50); + } else { + triggerTabEnd(self); } } else if (nav) Timer.clear(nav); @@ -126,15 +128,23 @@ const triggerTabShow = (self: Tab) => { */ const triggerTabHide = (self: Tab) => { const { element, content: nextContent, tabContent, nav } = self; - const { tab, content } = (nav && tabPrivate.get(nav)) || /* istanbul ignore next */ { tab: null, content: null }; + const { tab, content } = (nav && tabPrivate.get(nav)) || { + // istanbul ignore next @preserve + tab: null, + content: null, + }; let currentHeight = 0; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tabContent && nextContent && hasClass(nextContent, fadeClass)) { [content, nextContent].forEach(c => { + // istanbul ignore else @preserve if (isHTMLElement(c)) addClass(c, 'overflow-hidden'); }); - currentHeight = isHTMLElement(content) ? content.scrollHeight : /* istanbul ignore next */ 0; + currentHeight = isHTMLElement(content) + ? content.scrollHeight + : // istanbul ignore next @preserve + 0; } // update relatedTarget and dispatch event @@ -142,19 +152,28 @@ const triggerTabHide = (self: Tab) => { hiddenTabEvent.relatedTarget = element; dispatchEvent(element, showTabEvent); + // istanbul ignore else @preserve if (!showTabEvent.defaultPrevented) { + // istanbul ignore else @preserve if (nextContent) addClass(nextContent, activeClass); + // istanbul ignore else @preserve if (content) removeClass(content, activeClass); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tabContent && nextContent && hasClass(nextContent, fadeClass)) { const nextHeight = nextContent.scrollHeight; - tabPrivate.set(element, { currentHeight, nextHeight, tab: null, content: null }); + tabPrivate.set(element, { + currentHeight, + nextHeight, + tab: null, + content: null, + }); addClass(tabContent, collapsingClass); tabContent.style.height = `${currentHeight}px`; reflow(tabContent); [content, nextContent].forEach(c => { + // istanbul ignore else @preserve if (c) removeClass(c, 'overflow-hidden'); }); } @@ -167,10 +186,12 @@ const triggerTabHide = (self: Tab) => { }); }, 1); } else { + // istanbul ignore else @preserve if (nextContent) addClass(nextContent, showClass); triggerTabShow(self); } + // istanbul ignore else @preserve if (tab) dispatchEvent(tab, hiddenTabEvent); } }; @@ -183,12 +204,14 @@ const triggerTabHide = (self: Tab) => { */ const getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElement | null } => { const { nav } = self; - /* istanbul ignore next */ - if (!isHTMLElement(nav as HTMLElement | undefined)) return { tab: null, content: null }; + // istanbul ignore next @preserve + if (!isHTMLElement(nav as HTMLElement | undefined)) { + return { tab: null, content: null }; + } const activeTabs = getElementsByClassName(activeClass, nav as HTMLElement); let tab: HTMLElement | null = null; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (activeTabs.length === 1 && !dropdownClasses.some(c => hasClass(activeTabs[0].parentElement as HTMLElement, c))) { [tab] = activeTabs; } else if (activeTabs.length > 1) { @@ -205,7 +228,7 @@ const getActiveTab = (self: Tab): { tab: HTMLElement | null; content: HTMLElemen * @returns the parent dropdown */ const getParentDropdown = (element?: HTMLElement): HTMLElement | null => { - /* istanbul ignore next */ + // istanbul ignore next @preserve if (!isHTMLElement(element)) return null; const dropdown = closest(element, `.${dropdownClasses.join(',.')}`); return dropdown ? querySelector(`.${dropdownClasses[0]}-toggle`, dropdown) : null; @@ -221,7 +244,7 @@ const getParentDropdown = (element?: HTMLElement): HTMLElement | null => { const tabClickHandler = (e: Event) => { const self = getTabInstance(e.target as HTMLElement); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { e.preventDefault(); self.show(); @@ -250,7 +273,7 @@ export default class Tab extends BaseComponent { const content = getTargetElement(element); // no point initializing a tab without a corresponding content - /* istanbul ignore else */ + // istanbul ignore else @preserve if (content) { const nav = closest(element, '.nav'); const container = closest(content, '.tab-content'); @@ -269,7 +292,7 @@ export default class Tab extends BaseComponent { const firstTab = querySelector(tabSelector, nav); const firstTabContent = firstTab && getTargetElement(firstTab); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (firstTabContent) { addClass(firstTab, activeClass); addClass(firstTabContent, showClass); @@ -296,20 +319,22 @@ export default class Tab extends BaseComponent { show() { const { element, content: nextContent, nav, dropdown } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!(nav && Timer.get(nav)) && !hasClass(element, activeClass)) { const { tab, content } = getActiveTab(this); - /* istanbul ignore else */ - if (nav) tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 }); + // istanbul ignore else @preserve + if (nav) { + tabPrivate.set(nav, { tab, content, currentHeight: 0, nextHeight: 0 }); + } // update relatedTarget and dispatch hideTabEvent.relatedTarget = element; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isHTMLElement(tab)) { dispatchEvent(tab as EventTarget, hideTabEvent); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!hideTabEvent.defaultPrevented) { addClass(element, activeClass); setAttribute(element, ariaSelected, 'true'); @@ -319,14 +344,17 @@ export default class Tab extends BaseComponent { removeClass(activeDropdown, activeClass); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (nav) { const toggleTab = () => { + // istanbul ignore else @preserve if (tab) { removeClass(tab, activeClass); setAttribute(tab, ariaSelected, 'false'); } - if (dropdown && !hasClass(dropdown, activeClass)) addClass(dropdown, activeClass); + if (dropdown && !hasClass(dropdown, activeClass)) { + addClass(dropdown, activeClass); + } }; if (content && (hasClass(content, fadeClass) || (nextContent && hasClass(nextContent, fadeClass)))) { @@ -334,6 +362,7 @@ export default class Tab extends BaseComponent { } else toggleTab(); } + // istanbul ignore else @preserve if (content) { removeClass(content, showClass); if (hasClass(content, fadeClass)) { diff --git a/src/components/toast.ts b/src/components/toast.ts index f6e280ea..4ac557f0 100644 --- a/src/components/toast.ts +++ b/src/components/toast.ts @@ -1,24 +1,24 @@ /* Native JavaScript for Bootstrap 5 | Toast -------------------------------------------- */ import { - mouseclickEvent, - closest, - removeClass, - hasClass, addClass, - focusoutEvent, - focusinEvent, - mouseleaveEvent, - mouseenterEvent, + closest, createCustomEvent, + dispatchEvent, + emulateTransitionEnd, + focusinEvent, + focusoutEvent, getDocument, - Timer, getInstance, - reflow, - emulateTransitionEnd, - dispatchEvent, - querySelectorAll, + hasClass, + mouseclickEvent, + mouseenterEvent, + mouseleaveEvent, querySelector, + querySelectorAll, + reflow, + removeClass, + Timer, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -31,7 +31,7 @@ import toastString from '../strings/toastString'; import toastComponent from '../strings/toastComponent'; import getTargetElement from '../util/getTargetElement'; import BaseComponent from './base-component'; -import { ToastOptions, ToastEvent } from '../interface/toast'; +import { ToastEvent, ToastOptions } from '../interface/toast'; // TOAST PRIVATE GC // ================ @@ -61,10 +61,10 @@ const toastInitCallback = (element: HTMLElement) => new Toast(element); // TOAST CUSTOM EVENTS // =================== -const showToastEvent = createCustomEvent(`show.bs.${toastString}`); -const shownToastEvent = createCustomEvent(`shown.bs.${toastString}`); -const hideToastEvent = createCustomEvent(`hide.bs.${toastString}`); -const hiddenToastEvent = createCustomEvent(`hidden.bs.${toastString}`); +const showToastEvent = createCustomEvent, ToastEvent>(`show.bs.${toastString}`); +const shownToastEvent = createCustomEvent, ToastEvent>(`shown.bs.${toastString}`); +const hideToastEvent = createCustomEvent, ToastEvent>(`hide.bs.${toastString}`); +const hiddenToastEvent = createCustomEvent, ToastEvent>(`hidden.bs.${toastString}`); // TOAST PRIVATE METHODS // ===================== @@ -79,7 +79,7 @@ const showToastComplete = (self: Toast) => { Timer.clear(element, showingClass); dispatchEvent(element, shownToastEvent); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (options.autohide) { Timer.set(element, () => self.hide(), options.delay, toastString); } @@ -144,16 +144,6 @@ const showToast = (self: Toast) => { // TOAST EVENT HANDLERS // ==================== -/** - * Executes after the instance has been disposed. - * - * @param {Toast} self the `Toast` instance - */ -const completeDisposeToast = (self: Toast) => { - Timer.clear(self.element, toastString); - self._toggleEventListeners(); -}; - /** * Handles the `click` event listener for toast. * @@ -166,9 +156,9 @@ const toastClickHandler = (e: Event) => { const element = trigger && getTargetElement(trigger); const self = element && getToastInstance(element); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (self) { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (trigger && trigger.tagName === 'A') e.preventDefault(); self.relatedTarget = trigger; self.show(); @@ -186,7 +176,7 @@ const interactiveToastHandler = (e: MouseEvent) => { const self = getToastInstance(element); const { type, relatedTarget } = e; - /* istanbul ignore else: a solid filter is required */ + // istanbul ignore else @preserve: a solid filter is required if (self && element !== relatedTarget && !element.contains(relatedTarget as Node)) { if ([mouseenterEvent, focusinEvent].includes(type)) { Timer.clear(element, toastString); @@ -217,8 +207,11 @@ export default class Toast extends BaseComponent { const { element, options } = this; // set fadeClass, the options.animation will override the markup - if (options.animation && !hasClass(element, fadeClass)) addClass(element, fadeClass); - else if (!options.animation && hasClass(element, fadeClass)) removeClass(element, fadeClass); + if (options.animation && !hasClass(element, fadeClass)) { + addClass(element, fadeClass); + } else if (!options.animation && hasClass(element, fadeClass)) { + removeClass(element, fadeClass); + } // dismiss button this.dismiss = querySelector(toastDismissSelector, element); @@ -256,7 +249,7 @@ export default class Toast extends BaseComponent { show = () => { const { element, isShown } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (element && !isShown) { dispatchEvent(element, showToastEvent); if (!showToastEvent.defaultPrevented) { @@ -269,7 +262,7 @@ export default class Toast extends BaseComponent { hide = () => { const { element, isShown } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (element && isShown) { dispatchEvent(element, hideToastEvent); if (!hideToastEvent.defaultPrevented) { @@ -287,18 +280,18 @@ export default class Toast extends BaseComponent { const action = add ? addListener : removeListener; const { element, triggers, dismiss, options, hide } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (dismiss) { action(dismiss, mouseclickEvent, hide); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (options.autohide) { [focusinEvent, focusoutEvent, mouseenterEvent, mouseleaveEvent].forEach(e => action(element, e, interactiveToastHandler), ); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (triggers.length) { triggers.forEach(btn => action(btn, mouseclickEvent, toastClickHandler)); } @@ -307,14 +300,12 @@ export default class Toast extends BaseComponent { /** Removes the `Toast` component from the target element. */ dispose() { const { element, isShown } = this; + this._toggleEventListeners(); + Timer.clear(element, toastString); - /* istanbul ignore else */ if (isShown) { removeClass(element, showClass); } - - completeDisposeToast(this); - super.dispose(); } } diff --git a/src/components/tooltip.ts b/src/components/tooltip.ts index 69f8db48..b3c9761c 100644 --- a/src/components/tooltip.ts +++ b/src/components/tooltip.ts @@ -1,40 +1,40 @@ /* Native JavaScript for Bootstrap 5 | Tooltip ---------------------------------------------- */ import { + addClass, ariaDescribedBy, - focusoutEvent, - focusinEvent, - focusEvent, - mouseleaveEvent, - mouseenterEvent, - mousedownEvent, - mouseclickEvent, closest, - getUID, + createCustomEvent, + dispatchEvent, + emulateTransitionEnd, + focus, + focusEvent, + focusinEvent, + focusoutEvent, + getAttribute, getDocument, + getElementStyle, + getInstance, + getUID, getWindow, - removeAttribute, - getAttribute, - setAttribute, hasAttribute, - touchstartEvent, - resizeEvent, - scrollEvent, - mousehoverEvent, - toLowerCase, - focus, - Timer, - emulateTransitionEnd, - passiveHandler, - dispatchEvent, + hasClass, isApple, - getInstance, + mouseclickEvent, + mousedownEvent, + mouseenterEvent, + mousehoverEvent, + mouseleaveEvent, ObjectAssign, - createCustomEvent, + passiveHandler, + removeAttribute, removeClass, - hasClass, - addClass, - getElementStyle, + resizeEvent, + scrollEvent, + setAttribute, + Timer, + toLowerCase, + touchstartEvent, } from '@thednp/shorty'; import { addListener, removeListener } from '@thednp/event-listener'; @@ -51,12 +51,12 @@ import offcanvasString from '../strings/offcanvasString'; import styleTip from '../util/styleTip'; import createTip from '../util/createTip'; -import { appendPopup, removePopup, hasPopup } from '../util/popupContainer'; +import { appendPopup, hasPopup, removePopup } from '../util/popupContainer'; import getElementContainer from '../util/getElementContainer'; import tooltipDefaults from '../util/tooltipDefaults'; import BaseComponent from './base-component'; -import { TooltipOptions, TooltipEvent } from '../interface/tooltip'; -import { PopoverOptions, PopoverEvent } from '../interface/popover'; +import type { TooltipEvent, TooltipOptions } from '../interface/tooltip'; +import type { PopoverEvent, PopoverOptions } from '../interface/popover'; // TOOLTIP PRIVATE GC // ================== @@ -66,7 +66,6 @@ const titleAttr = 'title'; /** * Static method which returns an existing `Tooltip` instance associated * to a target `Element`. - * */ let getTooltipInstance = (element: HTMLElement) => getInstance(element, tooltipComponent); @@ -109,11 +108,11 @@ const disposeTooltipComplete = (self: Tooltip, callback?: () => void) => { const { element } = self; self._toggleEventListeners(); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (hasAttribute(element, dataOriginalTitle) && self.name === tooltipComponent) { toggleTooltipTitle(self); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (callback) callback(); }; @@ -141,7 +140,9 @@ const toggleTooltipAction = (self: Tooltip, add?: boolean) => { */ const tooltipShownAction = (self: Tooltip) => { const { element } = self; - const shownTooltipEvent = createCustomEvent(`shown.bs.${toLowerCase(self.name)}`); + const shownTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>( + `shown.bs.${toLowerCase(self.name)}`, + ); toggleTooltipAction(self, true); dispatchEvent(element, shownTooltipEvent); @@ -155,7 +156,9 @@ const tooltipShownAction = (self: Tooltip) => { */ const tooltipHiddenAction = (self: Tooltip) => { const { element } = self; - const hiddenTooltipEvent = createCustomEvent(`hidden.bs.${toLowerCase(self.name)}`); + const hiddenTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>( + `hidden.bs.${toLowerCase(self.name)}`, + ); toggleTooltipAction(self); removeTooltip(self); @@ -177,7 +180,7 @@ const toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => { const parentModal = closest(element, `.${modalString}`); const parentOffcanvas = closest(element, `.${offcanvasString}`); - /* istanbul ignore else */ + // istanbul ignore else @preserve const win = getWindow(element); const overflow = offsetHeight !== scrollHeight; const scrollTarget = container === offsetParent && overflow ? container : win; @@ -185,8 +188,12 @@ const toggleTooltipOpenHandlers = (self: Tooltip, add?: boolean) => { action(scrollTarget, scrollEvent, self.update, passiveHandler); // dismiss tooltips inside modal / offcanvas - if (parentModal) action(parentModal, `hide.bs.${modalString}`, self.handleHide); - if (parentOffcanvas) action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide); + if (parentModal) { + action(parentModal, `hide.bs.${modalString}`, self.handleHide); + } + if (parentOffcanvas) { + action(parentOffcanvas, `hide.bs.${offcanvasString}`, self.handleHide); + } }; /** @@ -203,7 +210,10 @@ const toggleTooltipTitle = (self: Tooltip, content?: string) => { setAttribute( element, titleAtt[content ? 0 : 1], - content || getAttribute(element, titleAtt[0]) || /* istanbul ignore next */ '', + content || + getAttribute(element, titleAtt[0]) || + // istanbul ignore next @preserve + '', ); removeAttribute(element, titleAtt[content ? 1 : 0]); }; @@ -237,7 +247,7 @@ export default class Tooltip extends BaseComponent { const tipString = isTooltip ? tooltipString : popoverString; const tipComponent = isTooltip ? tooltipComponent : popoverComponent; - /* istanbul ignore next: this is to set Popover too */ + // istanbul ignore next @preserve: this is to set Popover too getTooltipInstance = (elem: HTMLElement) => getInstance(elem, tipComponent); // additional properties @@ -254,7 +264,7 @@ export default class Tooltip extends BaseComponent { ObjectAssign(tooltipDefaults, { titleAttr: '' }); // set title attributes and add event listeners - /* istanbul ignore else */ + // istanbul ignore else @preserve if (hasAttribute(element, titleAttr) && isTooltip && typeof options.title === 'string') { toggleTooltipTitle(this, options.title); } @@ -291,6 +301,7 @@ export default class Tooltip extends BaseComponent { // TOOLTIP PUBLIC METHODS // ====================== /** Handles the focus event on iOS. */ + // istanbul ignore next @preserve - impossible to test without Apple device handleFocus = () => focus(this.element); /** Shows the tooltip. */ handleShow = () => this.show(); @@ -306,8 +317,12 @@ export default class Tooltip extends BaseComponent { Timer.set( element, () => { - const showTooltipEvent = createCustomEvent(`show.bs.${toLowerCase(this.name)}`); + const showTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>( + `show.bs.${toLowerCase(this.name)}`, + ); dispatchEvent(element, showTooltipEvent); + + // istanbul ignore else @preserve if (!showTooltipEvent.defaultPrevented) { // append to container appendPopup(tooltip, tipContainer); @@ -317,11 +332,12 @@ export default class Tooltip extends BaseComponent { this.update(); toggleTooltipOpenHandlers(this, true); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!hasClass(tooltip, showClass)) addClass(tooltip, showClass); - /* istanbul ignore else */ - if (animation) emulateTransitionEnd(tooltip, () => tooltipShownAction(this)); - else tooltipShownAction(this); + // istanbul ignore else @preserve + if (animation) { + emulateTransitionEnd(tooltip, () => tooltipShownAction(this)); + } else tooltipShownAction(this); } }, 17, @@ -338,22 +354,26 @@ export default class Tooltip extends BaseComponent { Timer.clear(element, 'in'); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tooltip && hasTip(this)) { Timer.set( element, () => { - const hideTooltipEvent = createCustomEvent(`hide.bs.${toLowerCase(this.name)}`); + const hideTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>( + `hide.bs.${toLowerCase(this.name)}`, + ); dispatchEvent(element, hideTooltipEvent); + // istanbul ignore else @preserve if (!hideTooltipEvent.defaultPrevented) { this.update(); removeClass(tooltip, showClass); toggleTooltipOpenHandlers(this); - /* istanbul ignore else */ - if (animation) emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this)); - else tooltipHiddenAction(this); + // istanbul ignore else @preserve + if (animation) { + emulateTransitionEnd(tooltip, () => tooltipHiddenAction(this)); + } else tooltipHiddenAction(this); } }, delay + 17, @@ -378,7 +398,7 @@ export default class Tooltip extends BaseComponent { /** Enables the tooltip. */ enable() { const { enabled } = this; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!enabled) { this._toggleEventListeners(true); this.enabled = !enabled; @@ -387,16 +407,11 @@ export default class Tooltip extends BaseComponent { /** Disables the tooltip. */ disable() { - const { tooltip, options, enabled } = this; - const { animation } = options; - /* istanbul ignore else */ + const { tooltip, enabled } = this; + // istanbul ignore else @preserve if (enabled) { - if (tooltip && hasTip(this) && animation) { - this.hide(); - emulateTransitionEnd(tooltip, () => this._toggleEventListeners()); - } else { - this._toggleEventListeners(); - } + if (tooltip && hasTip(this)) this.hide(); + this._toggleEventListeners(); this.enabled = !enabled; } } @@ -416,7 +431,7 @@ export default class Tooltip extends BaseComponent { handleTouch = ({ target }: TouchEvent) => { const { tooltip, element } = this; - /* istanbul ignore else */ + // istanbul ignore if @preserve if ( (tooltip && tooltip.contains(target as HTMLElement)) || target === element || @@ -441,19 +456,19 @@ export default class Tooltip extends BaseComponent { const isPopover = this.name !== tooltipComponent; const dismissible = isPopover && (options as PopoverOptions).dismissible ? true : false; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!trigger.includes('manual')) { this.enabled = !!add; const triggerOptions = trigger.split(' '); triggerOptions.forEach(tr => { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tr === mousehoverEvent) { action(element, mousedownEvent, this.handleShow); action(element, mouseenterEvent, this.handleShow); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!dismissible) { action(element, mouseleaveEvent, this.handleHide); action(getDocument(element), touchstartEvent, this.handleTouch, passiveHandler); @@ -462,14 +477,14 @@ export default class Tooltip extends BaseComponent { action(element, tr, !dismissible ? this.toggle : this.handleShow); } else if (tr === focusEvent) { action(element, focusinEvent, this.handleShow); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!dismissible) action(element, focusoutEvent, this.handleHide); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isApple) { action(element, mouseclickEvent, this.handleFocus); } } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (dismissible && btn) { action(btn, mouseclickEvent, this.handleHide); } diff --git a/src/index.ts b/src/index.ts index fd3570e5..7b264e83 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,15 +19,15 @@ export { Carousel, Collapse, Dropdown, + initCallback, Modal, Offcanvas, Popover, + removeDataAPI, ScrollSpy, Tab, Toast, Tooltip, - initCallback, - removeDataAPI, }; export {}; diff --git a/src/interface/collapse.ts b/src/interface/collapse.ts index 3fd78dc4..5c6fd1d4 100644 --- a/src/interface/collapse.ts +++ b/src/interface/collapse.ts @@ -2,7 +2,7 @@ import { OriginalEvent } from '@thednp/shorty'; import { BaseOptions } from './baseComponent'; export interface CollapseOptions extends BaseOptions { - parent: HTMLElement | null; + parent: string | HTMLElement | null; } export interface CollapseEvent extends OriginalEvent { diff --git a/src/util/backdrop.ts b/src/util/backdrop.ts index cd91c4b9..5f14d42b 100644 --- a/src/util/backdrop.ts +++ b/src/util/backdrop.ts @@ -1,12 +1,12 @@ import { + addClass, createElement, getDocument, - reflow, - removeClass, + getDocumentBody, hasClass, - addClass, querySelector, - getDocumentBody, + reflow, + removeClass, } from '@thednp/shorty'; import fadeClass from '../strings/fadeClass'; @@ -92,15 +92,15 @@ const removeOverlay = (element?: HTMLElement): void => { }; export { - overlay, - offcanvasBackdropClass, - modalBackdropClass, - modalActiveSelector, - offcanvasActiveSelector, - toggleOverlayType, appendOverlay, - showOverlay, - hideOverlay, getCurrentOpen, + hideOverlay, + modalActiveSelector, + modalBackdropClass, + offcanvasActiveSelector, + offcanvasBackdropClass, + overlay, removeOverlay, + showOverlay, + toggleOverlayType, }; diff --git a/src/util/createTip.ts b/src/util/createTip.ts index c35fc628..7817999e 100644 --- a/src/util/createTip.ts +++ b/src/util/createTip.ts @@ -1,4 +1,4 @@ -import { createElement, addClass, hasClass, setAttribute, querySelector, isRTL, isHTMLElement } from '@thednp/shorty'; +import { addClass, createElement, hasClass, isHTMLElement, isRTL, querySelector, setAttribute } from '@thednp/shorty'; import tooltipComponent from '../strings/tooltipComponent'; import tooltipString from '../strings/tooltipString'; @@ -45,10 +45,11 @@ const createTip = (self: Tooltip | Popover) => { // set popover markup self.tooltip = isHTMLElement(tooltipTemplate) ? (tooltipTemplate.cloneNode(true) as HTMLElement) - : /* istanbul ignore next */ undefined; + : // istanbul ignore next @preserve + undefined; const { tooltip } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tooltip) { // set id and role attributes setAttribute(tooltip, 'id', id); @@ -79,17 +80,19 @@ const createTip = (self: Tooltip | Popover) => { // set dismissible button if (dismissible) { if (title) { - if (isHTMLElement(btnClose)) titleParts = [...titleParts, btnClose.cloneNode(true)]; - else { + if (isHTMLElement(btnClose)) { + titleParts = [...titleParts, btnClose.cloneNode(true)]; + } else { const tempBtn = createElement('div') as HTMLElement; setHtml(tempBtn, btnClose, sanitizeFn); titleParts = [...titleParts, tempBtn.firstChild as Node]; } } else { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tooltipHeader) tooltipHeader.remove(); - if (isHTMLElement(btnClose)) contentParts = [...contentParts, btnClose.cloneNode(true)]; - else { + if (isHTMLElement(btnClose)) { + contentParts = [...contentParts, btnClose.cloneNode(true)]; + } else { const tempBtn = createElement('div') as HTMLElement; setHtml(tempBtn, btnClose, sanitizeFn); contentParts = [...contentParts, tempBtn.firstChild as Node]; @@ -99,12 +102,16 @@ const createTip = (self: Tooltip | Popover) => { // fill the template with content from options / data attributes // also sanitize title && content - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!isTooltip) { - /* istanbul ignore else */ - if (title && tooltipHeader) setHtml(tooltipHeader, titleParts, sanitizeFn); - /* istanbul ignore else */ - if (content && tooltipBody) setHtml(tooltipBody, contentParts, sanitizeFn); + // istanbul ignore else @preserve + if (title && tooltipHeader) { + setHtml(tooltipHeader, titleParts, sanitizeFn); + } + // istanbul ignore else @preserve + if (content && tooltipBody) { + setHtml(tooltipBody, contentParts, sanitizeFn); + } // set btn self.btn = querySelector('.btn-close', tooltip) || undefined; } else if (title && tooltipBody) setHtml(tooltipBody, title, sanitizeFn); @@ -115,15 +122,17 @@ const createTip = (self: Tooltip | Popover) => { addClass(arrow, 'position-absolute'); // set popover animation and placement - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!hasClass(tooltip, tipString)) addClass(tooltip, tipString); - /* istanbul ignore else */ - if (animation && !hasClass(tooltip, fadeClass)) addClass(tooltip, fadeClass); - /* istanbul ignore else */ + // istanbul ignore else @preserve + if (animation && !hasClass(tooltip, fadeClass)) { + addClass(tooltip, fadeClass); + } + // istanbul ignore else @preserve if (customClass && !hasClass(tooltip, customClass)) { addClass(tooltip, customClass); } - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!hasClass(tooltip, placementClass)) addClass(tooltip, placementClass); } }; diff --git a/src/util/getElementContainer.ts b/src/util/getElementContainer.ts index 7a202ef0..5475e351 100644 --- a/src/util/getElementContainer.ts +++ b/src/util/getElementContainer.ts @@ -1,4 +1,4 @@ -import { getDocument, isShadowRoot, isTableElement, getParentNode, getElementStyle } from '@thednp/shorty'; +import { getDocument, getElementStyle, getParentNode, isShadowRoot, isTableElement } from '@thednp/shorty'; /** * Returns an `HTMLElement` to be used as default value for *options.container* @@ -16,7 +16,7 @@ const getElementContainer = (element: HTMLElement): ParentNode => { while (parentNode && !majorBlockTags.includes(parentNode.nodeName)) { parentNode = getParentNode(parentNode) as ParentNode; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (!(isShadowRoot(parentNode) || isTableElement(parentNode))) { containers.push(parentNode); } @@ -31,7 +31,9 @@ const getElementContainer = (element: HTMLElement): ParentNode => { return c; } return null; - }) || /* istanbul ignore next: optional guard */ getDocument(element).body + }) || + // istanbul ignore next: optional guard + getDocument(element).body ); }; diff --git a/src/util/getTargetElement.ts b/src/util/getTargetElement.ts index 320813d1..e1d8d220 100644 --- a/src/util/getTargetElement.ts +++ b/src/util/getTargetElement.ts @@ -1,4 +1,4 @@ -import { getDocument, getAttribute, closest, querySelector } from '@thednp/shorty'; +import { closest, getAttribute, getDocument, querySelector } from '@thednp/shorty'; import dataBsTarget from '../strings/dataBsTarget'; import dataBsParent from '../strings/dataBsParent'; diff --git a/src/util/init.ts b/src/util/init.ts index 844c4aed..13479173 100644 --- a/src/util/init.ts +++ b/src/util/init.ts @@ -31,6 +31,20 @@ const componentsList = new Map< | typeof Tooltip >(); +type Component = + | Alert + | Button + | Carousel + | Collapse + | Dropdown + | Modal + | Offcanvas + | Popover + | ScrollSpy + | Tab + | Toast + | Tooltip; + [Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip].forEach(c => componentsList.set(c.prototype.name, c), ); @@ -41,8 +55,8 @@ const componentsList = new Map< * @param callback * @param collection */ -const initComponentDataAPI = ( - callback: (el: HTMLElement, ops?: Record) => T, +const initComponentDataAPI = ( + callback: (el: HTMLElement) => Component, collection: HTMLCollectionOf | HTMLElement[], ) => { [...collection].forEach(x => callback(x)); @@ -59,7 +73,9 @@ const removeComponentDataAPI = (component: string, context: ParentNode) => { if (compData) { [...compData].forEach(([element, instance]) => { - if (context.contains(element)) (instance as T & { dispose: () => void }).dispose(); + if (context.contains(element)) { + (instance as T & { dispose: () => void }).dispose(); + } }); } }; @@ -98,5 +114,7 @@ export const removeDataAPI = (context?: ParentNode) => { // Bulk initialize all components if (document.body) initCallback(); else { - addListener(document, 'DOMContentLoaded', () => initCallback(), { once: true }); + addListener(document, 'DOMContentLoaded', () => initCallback(), { + once: true, + }); } diff --git a/src/util/isEmptyAnchor.ts b/src/util/isEmptyAnchor.ts index 4aab07b4..42af6f35 100644 --- a/src/util/isEmptyAnchor.ts +++ b/src/util/isEmptyAnchor.ts @@ -1,4 +1,4 @@ -import { hasAttribute, closest, getAttribute } from '@thednp/shorty'; +import { closest, getAttribute, hasAttribute } from '@thednp/shorty'; /** * Checks if an *event.target* or its parent has an `href="#"` value. diff --git a/src/util/isVisible.ts b/src/util/isVisible.ts index 35db10c7..c3cb5aad 100644 --- a/src/util/isVisible.ts +++ b/src/util/isVisible.ts @@ -1,4 +1,4 @@ -import { isHTMLElement, getElementStyle } from '@thednp/shorty'; +import { getElementStyle, isHTMLElement } from '@thednp/shorty'; /** * @param element target diff --git a/src/util/popupContainer.ts b/src/util/popupContainer.ts index 45d37140..4f14099a 100644 --- a/src/util/popupContainer.ts +++ b/src/util/popupContainer.ts @@ -1,13 +1,17 @@ -import { getDocumentBody, isNode, createElement } from '@thednp/shorty'; +import { createElement, getDocumentBody, isNode } from '@thednp/shorty'; // the default container for Modal, Offcanvas, Popover and Tooltip -const popupContainer = createElement({ tagName: 'div', className: 'popup-container' }) as HTMLElement; +const popupContainer = createElement({ + tagName: 'div', + className: 'popup-container', +}) as HTMLElement; const appendPopup = (target: HTMLElement, customContainer?: ParentNode) => { const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY'; const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer; const BODY = containerIsBody ? customContainer : getDocumentBody(target); + // istanbul ignore else @preserve if (isNode(target)) { if (lookup === popupContainer) { BODY.append(popupContainer); @@ -20,6 +24,7 @@ const removePopup = (target: HTMLElement, customContainer?: ParentNode) => { const containerIsBody = isNode(customContainer) && customContainer.nodeName === 'BODY'; const lookup = isNode(customContainer) && !containerIsBody ? customContainer : popupContainer; + // istanbul ignore else @preserve if (isNode(target)) { target.remove(); @@ -34,4 +39,4 @@ const hasPopup = (target: HTMLElement, customContainer?: ParentNode) => { return isNode(target) && lookup.contains(target); }; -export { popupContainer, appendPopup, removePopup, hasPopup }; +export { appendPopup, hasPopup, popupContainer, removePopup }; diff --git a/src/util/scrollbar.ts b/src/util/scrollbar.ts index 06a7aacf..b0d60c51 100644 --- a/src/util/scrollbar.ts +++ b/src/util/scrollbar.ts @@ -1,11 +1,11 @@ import { - getWindow, + getDocumentBody, getDocumentElement, + getElementsByClassName, getElementStyle, - getDocumentBody, + getWindow, hasClass, setElementStyle, - getElementsByClassName, } from '@thednp/shorty'; import fixedTopClass from '../strings/fixedTopClass'; @@ -36,6 +36,7 @@ export const resetScrollbar = (element?: HTMLElement) => { const fixedItems = getFixedItems(bd); + // istanbul ignore else @preserve if (fixedItems.length) { fixedItems.forEach(fixed => { setElementStyle(fixed, { @@ -73,19 +74,19 @@ export const setScrollbar = (element: HTMLElement, overflow?: boolean) => { const sbWidth = isOpen && bodyPad ? 0 : measureScrollbar(element); const fixedItems = getFixedItems(bd); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (overflow) { setElementStyle(bd, { overflow: 'hidden', paddingRight: `${bodyPad + sbWidth}px`, }); - /* istanbul ignore else */ + // istanbul ignore else @preserve if (fixedItems.length) { fixedItems.forEach(fixed => { const itemPadValue = getElementStyle(fixed, 'paddingRight'); fixed.style.paddingRight = `${parseInt(itemPadValue, 10) + sbWidth}px`; - /* istanbul ignore else */ + // istanbul ignore else @preserve if ([stickyTopClass, positionStickyClass].some(c => hasClass(fixed, c))) { const itemMValue = getElementStyle(fixed, 'marginRight'); fixed.style.marginRight = `${parseInt(itemMValue, 10) - sbWidth}px`; diff --git a/src/util/setHtml.ts b/src/util/setHtml.ts index 6d70ada1..c399e0d8 100644 --- a/src/util/setHtml.ts +++ b/src/util/setHtml.ts @@ -1,4 +1,4 @@ -import { isNode, isArray, isFunction, isString, isNodeList, isHTMLElement } from '@thednp/shorty'; +import { isArray, isFunction, isHTMLElement, isNode, isNodeList, isString } from '@thednp/shorty'; /** * Append an existing `Element` to Popover / Tooltip component or HTML @@ -9,7 +9,7 @@ import { isNode, isArray, isFunction, isString, isNodeList, isHTMLElement } from * @param sanitizeFn a function to sanitize string content */ const setHtml = (element: HTMLElement, content: Node[] | Node | string, sanitizeFn?: (s: string) => string) => { - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isString(content) && content.length) { let dirty = content.trim(); // fixing #233 if (isFunction(sanitizeFn)) dirty = sanitizeFn(dirty); diff --git a/src/util/styleTip.ts b/src/util/styleTip.ts index 71162f8e..b7650f60 100644 --- a/src/util/styleTip.ts +++ b/src/util/styleTip.ts @@ -1,13 +1,13 @@ import { - isHTMLElement, - setElementStyle, - getDocumentElement, + createCustomEvent, + dispatchEvent, getBoundingClientRect, + getDocumentElement, getElementStyle, + isHTMLElement, isRTL, + setElementStyle, toLowerCase, - createCustomEvent, - dispatchEvent, } from '@thednp/shorty'; import popoverComponent from '../strings/popoverComponent'; @@ -25,7 +25,7 @@ const styleTip = (self: T) => { const tipClasses = /\b(top|bottom|start|end)+/; const { element, tooltip, container, options, arrow } = self; - /* istanbul ignore else */ + // istanbul ignore else @preserve if (tooltip) { const tipPositions = { ...tipClassPositions }; const RTL = isRTL(element); @@ -46,7 +46,11 @@ const styleTip = (self: T) => { const parentPosition = getElementStyle(container as HTMLElement, 'position'); const fixedParent = parentPosition === 'fixed'; const scrollbarWidth = fixedParent ? Math.abs(parentCWidth - parentOWidth) : Math.abs(htmlcw - htmlow); - const leftBoundry = RTL && fixedParent ? /* istanbul ignore next */ scrollbarWidth : 0; + const leftBoundry = + RTL && fixedParent + ? // istanbul ignore next @preserve + scrollbarWidth + : 0; const rightBoundry = htmlcw - (!RTL ? scrollbarWidth : 0) - 1; const { width: elemWidth, @@ -105,7 +109,11 @@ const styleTip = (self: T) => { placement = placement === 'top' && topExceed ? 'bottom' : placement; placement = placement === 'bottom' && bottomExceed ? 'top' : placement; placement = placement === 'left' && leftExceed ? 'right' : placement; - placement = placement === 'right' && rightExceed ? /* istanbul ignore next */ 'left' : placement; + placement = + placement === 'right' && rightExceed + ? 'left' + : // istanbul ignore next @preserve + placement; // update tooltip/popover class if (!tooltip.className.includes(placement)) { @@ -113,7 +121,7 @@ const styleTip = (self: T) => { } // compute tooltip / popover coordinates - /* istanbul ignore else */ + // istanbul ignore else @preserve if (horizontals.includes(placement)) { // secondary|side positions if (placement === 'left') { @@ -172,7 +180,7 @@ const styleTip = (self: T) => { }); // update arrow placement - /* istanbul ignore else */ + // istanbul ignore else @preserve if (isHTMLElement(arrow)) { if (arrowTop !== '') { arrow.style.top = `${arrowTop}px`; @@ -183,7 +191,9 @@ const styleTip = (self: T) => { arrow.style.right = `${arrowRight}px`; } } - const updatedTooltipEvent = createCustomEvent(`updated.bs.${toLowerCase(self.name)}`); + const updatedTooltipEvent = createCustomEvent, TooltipEvent | PopoverEvent>( + `updated.bs.${toLowerCase(self.name)}`, + ); dispatchEvent(element, updatedTooltipEvent); } }; diff --git a/test/alert.test.ts b/test/alert.test.ts new file mode 100644 index 00000000..84923393 --- /dev/null +++ b/test/alert.test.ts @@ -0,0 +1,127 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import getMarkup from "./fixtures/getMarkup"; +import Alert from "../src/components/alert"; + +import "./assets/bootstrap.min.css"; + +describe("Alert Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Alert(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + "Alert Error: your target is not an instance of HTMLElement.", + ); + } + }); + + it("Init with wrong selector - throws error", () => { + const selector = "wombat"; + try { + new Alert(selector); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Alert Error: "${selector}" is not a valid selector.`, + ); + } + }); + + it("Init with target element", async () => { + const container = getMarkup("alert"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="alert"]'), { + timeout: 200, + }); + + const element = container.querySelector( + '[data-test="alert"]', + )!; + const instance = new Alert(element); + expect(instance.element).to.equal(element); + expect(instance.name).to.eq("Alert"); + expect(instance.options).to.be.empty; + expect(instance.defaults).to.be.empty; + expect(instance.version).to.be.string; + expect(Alert.getInstance(element)).to.be.instanceOf(Alert); + }); + + it("Can do close() - removes target from DOM", async () => { + const container = getMarkup("alert"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="alert"]'), 100); + + const element = container.querySelector( + '[data-test="alert"]', + )!; + const instance = Alert.init(element); + instance.close(); + await vi.waitFor( + () => expect(container.querySelector('[data-test="alert"]')).to.be.null, + 351, + ); + }); + + it("Can do dispose() - keeps target in DOM", async () => { + const container = getMarkup("alert"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="alert"]'), 351); + const element = container.querySelector( + '[data-test="alert"]', + )!; + const instance = Alert.init(element); + instance.dispose(); + await vi.waitFor(() => { + expect(container.querySelector('[data-test="alert"]')).to.exist; + expect(instance.element).to.be.undefined; + }, 351); + }); + + it("Can be dismissed via click", async () => { + const container = getMarkup("alert"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="alert"]'), 351); + const element = container.querySelector( + '[data-test="alert"]', + )!; + + element.classList.remove("fade"); + const instance = Alert.init(element); + instance.dismiss?.click(); + + await vi.waitFor(() => { + expect(container.querySelector('[data-test="alert"]')).to.not.exist; + }, { timeout: 150 }); + }); + + it("CustomEvent can be prevented", async () => { + const container = getMarkup("alert"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="alert"]'), 351); + const element = container.querySelector( + '[data-test="alert"]', + )!; + const instance = new Alert(element); + element.addEventListener("close.bs.alert", function (e) { + if (element.innerText.includes("Holy")) { + e.preventDefault(); + } + }); + instance.close(); + await vi.waitFor(() => { + expect(container.querySelector('[data-test="alert"]')).to.exist; + }, 351); + }); +}); diff --git a/test/assets/bootstrap.min.css b/test/assets/bootstrap.min.css new file mode 100644 index 00000000..11aee309 --- /dev/null +++ b/test/assets/bootstrap.min.css @@ -0,0 +1,11491 @@ +@charset "UTF-8"; /*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, [data-bs-theme="light"] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13,110,253; + --bs-secondary-rgb: 108,117,125; + --bs-success-rgb: 25,135,84; + --bs-info-rgb: 13,202,240; + --bs-warning-rgb: 255,193,7; + --bs-danger-rgb: 220,53,69; + --bs-light-rgb: 248,249,250; + --bs-dark-rgb: 33,37,41; + --bs-primary-text-emphasis: #052c65; + --bs-secondary-text-emphasis: #2b2f32; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #e2e3e5; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #c4c8cb; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255,255,255; + --bs-black-rgb: 0,0,0; + --bs-font-sans-serif: + system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; + --bs-font-monospace: + SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace; + --bs-gradient: linear-gradient( + 180deg, + rgba(255, 255, 255, 0.15), + rgba(255, 255, 255, 0) + ); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33,37,41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255,255,255; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0,0,0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33,37,41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233,236,239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33,37,41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248,249,250; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13,110,253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10,88,202; + --bs-code-color: #d63384; + --bs-highlight-color: #212529; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(13, 110, 253, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; +} +[data-bs-theme="dark"] { + color-scheme: dark; + --bs-body-color: #dee2e6; + --bs-body-color-rgb: 222,226,230; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33,37,41; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255,255,255; + --bs-secondary-color: rgba(222, 226, 230, 0.75); + --bs-secondary-color-rgb: 222,226,230; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52,58,64; + --bs-tertiary-color: rgba(222, 226, 230, 0.5); + --bs-tertiary-color-rgb: 222,226,230; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43,48,53; + --bs-primary-text-emphasis: #6ea8fe; + --bs-secondary-text-emphasis: #a7acb1; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #161719; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #41464b; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: inherit; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #8bb9fe; + --bs-link-color-rgb: 110,168,254; + --bs-link-hover-color-rgb: 139,185,254; + --bs-code-color: #e685b5; + --bs-highlight-color: #dee2e6; + --bs-highlight-bg: #664d03; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; +} +*, ::after, ::before { + box-sizing: border-box; +} +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; +} +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} +.h1, .h2, .h3, .h4, .h5, .h6, h1, h2, h3, h4, h5, h6 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); +} +.h1, h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + .h1, h1 { + font-size: 2.5rem; + } +} +.h2, h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + .h2, h2 { + font-size: 2rem; + } +} +.h3, h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + .h3, h3 { + font-size: 1.75rem; + } +} +.h4, h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + .h4, h4 { + font-size: 1.5rem; + } +} +.h5, h5 { + font-size: 1.25rem; +} +.h6, h6 { + font-size: 1rem; +} +p { + margin-top: 0; + margin-bottom: 1rem; +} +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} +ol, ul { + padding-left: 2rem; +} +dl, ol, ul { + margin-top: 0; + margin-bottom: 1rem; +} +ol ol, ol ul, ul ol, ul ul { + margin-bottom: 0; +} +dt { + font-weight: 700; +} +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} +blockquote { + margin: 0 0 1rem; +} +b, strong { + font-weight: bolder; +} +.small, small { + font-size: 0.875em; +} +.mark, mark { + padding: 0.1875em; + color: var(--bs-highlight-color); + background-color: var(--bs-highlight-bg); +} +sub, sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} +code, kbd, pre, samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} +figure { + margin: 0 0 1rem; +} +img, svg { + vertical-align: middle; +} +table { + caption-side: bottom; + border-collapse: collapse; +} +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} +th { + text-align: inherit; + text-align: -webkit-match-parent; +} +tbody, td, tfoot, th, thead, tr { + border-color: inherit; + border-style: solid; + border-width: 0; +} +label { + display: inline-block; +} +button { + border-radius: 0; +} +button:focus:not(:focus-visible) { + outline: 0; +} +button, input, optgroup, select, textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +button, select { + text-transform: none; +} +[role="button"] { + cursor: pointer; +} +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} +[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not( + [type="week"] +):not([type="time"])::-webkit-calendar-picker-indicator { + display: none !important; +} +[type="button"], [type="reset"], [type="submit"], button { + -webkit-appearance: button; +} +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled), +button:not(:disabled) { + cursor: pointer; +} +::-moz-focus-inner { + padding: 0; + border-style: none; +} +textarea { + resize: vertical; +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-year-field { + padding: 0; +} +::-webkit-inner-spin-button { + height: auto; +} +[type="search"] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-color-swatch-wrapper { + padding: 0; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +iframe { + border: 0; +} +summary { + display: list-item; + cursor: pointer; +} +progress { + vertical-align: baseline; +} +[hidden] { + display: none !important; +} +.lead { + font-size: 1.25rem; + font-weight: 300; +} +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; +} +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} +.img-fluid { + max-width: 100%; + height: auto; +} +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + max-width: 100%; + height: auto; +} +.figure { + display: inline-block; +} +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} +.figure-caption { + font-size: 0.875em; + color: var(--bs-secondary-color); +} +.container, +.container-fluid, +.container-lg, +.container-md, +.container-sm, +.container-xl, +.container-xxl { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 576px) { + .container, .container-sm { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container, .container-md, .container-sm { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container, .container-lg, .container-md, .container-sm { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container, .container-lg, .container-md, .container-sm, .container-xl { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl, + .container-xxl { + max-width: 1320px; + } +} +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} +.col { + flex: 1 0 0%; +} +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.33333333%; +} +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.66666667%; +} +.col-auto { + flex: 0 0 auto; + width: auto; +} +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} +.col-3 { + flex: 0 0 auto; + width: 25%; +} +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} +.col-6 { + flex: 0 0 auto; + width: 50%; +} +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} +.col-9 { + flex: 0 0 auto; + width: 75%; +} +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} +.col-12 { + flex: 0 0 auto; + width: 100%; +} +.offset-1 { + margin-left: 8.33333333%; +} +.offset-2 { + margin-left: 16.66666667%; +} +.offset-3 { + margin-left: 25%; +} +.offset-4 { + margin-left: 33.33333333%; +} +.offset-5 { + margin-left: 41.66666667%; +} +.offset-6 { + margin-left: 50%; +} +.offset-7 { + margin-left: 58.33333333%; +} +.offset-8 { + margin-left: 66.66666667%; +} +.offset-9 { + margin-left: 75%; +} +.offset-10 { + margin-left: 83.33333333%; +} +.offset-11 { + margin-left: 91.66666667%; +} +.g-0, .gx-0 { + --bs-gutter-x: 0; +} +.g-0, .gy-0 { + --bs-gutter-y: 0; +} +.g-1, .gx-1 { + --bs-gutter-x: 0.25rem; +} +.g-1, .gy-1 { + --bs-gutter-y: 0.25rem; +} +.g-2, .gx-2 { + --bs-gutter-x: 0.5rem; +} +.g-2, .gy-2 { + --bs-gutter-y: 0.5rem; +} +.g-3, .gx-3 { + --bs-gutter-x: 1rem; +} +.g-3, .gy-3 { + --bs-gutter-y: 1rem; +} +.g-4, .gx-4 { + --bs-gutter-x: 1.5rem; +} +.g-4, .gy-4 { + --bs-gutter-y: 1.5rem; +} +.g-5, .gx-5 { + --bs-gutter-x: 3rem; +} +.g-5, .gy-5 { + --bs-gutter-y: 3rem; +} +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: var(--bs-emphasis-color); + --bs-table-bg: var(--bs-body-bg); + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-emphasis-color); + --bs-table-striped-bg: rgba(var(--bs-emphasis-color-rgb), 0.05); + --bs-table-active-color: var(--bs-emphasis-color); + --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); + --bs-table-hover-color: var(--bs-emphasis-color); + --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + color: var( + --bs-table-color-state, + var(--bs-table-color-type, var(--bs-table-color)) + ); + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + box-shadow: inset 0 0 0 9999px + var( + --bs-table-bg-state, + var(--bs-table-bg-type, var(--bs-table-accent-bg)) + ); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} +.table-group-divider { + border-top: calc(var(--bs-border-width) * 2) solid currentcolor; +} +.caption-top { + caption-side: top; +} +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} +.table-bordered > :not(caption) > * { + border-width: var(--bs-border-width) 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--bs-border-width); +} +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} +.table-striped-columns > :not(caption) > tr > :nth-child(2n) { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} +.table-active { + --bs-table-color-state: var(--bs-table-active-color); + --bs-table-bg-state: var(--bs-table-active-bg); +} +.table-hover > tbody > tr:hover > * { + --bs-table-color-state: var(--bs-table-hover-color); + --bs-table-bg-state: var(--bs-table-hover-bg); +} +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #cfe2ff; + --bs-table-border-color: #a6b5cc; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #b5b6b7; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #a7b9b1; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #a6c3ca; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff3cd; + --bs-table-border-color: #ccc2a4; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #c6acae; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #c6c7c8; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #4d5154; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; +} +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; +} +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-secondary-color); +} +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type="file"] { + overflow: hidden; +} +.form-control[type="file"]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:disabled { + background-color: var(--bs-secondary-bg); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); +} +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: var(--bs-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--bs-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-lg, +.form-control-plaintext.form-control-sm { + padding-right: 0; + padding-left: 0; +} +.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +textarea.form-control { + min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-image: + var(--bs-form-select-bg-img), + var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--bs-secondary-bg); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--bs-body-color); +} +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +[data-bs-theme="dark"] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} +.form-check-input { + --bs-form-check-bg: var(--bs-body-bg); + flex-shrink: 0; + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--bs-border-width) solid var(--bs-border-color); + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type="checkbox"] { + border-radius: 0.25em; +} +.form-check-input[type="radio"] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; +} +.form-check-input:checked[type="checkbox"] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type="radio"] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type="checkbox"]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input:disabled ~ .form-check-label, +.form-check-input[disabled] ~ .form-check-label { + cursor: default; + opacity: 0.5; +} +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check:disabled + .btn, .btn-check[disabled] + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} +[data-bs-theme="dark"] + .form-switch + .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: transparent; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + -webkit-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + -moz-appearance: none; + appearance: none; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-secondary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-secondary-color); +} +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--bs-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, .form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control-plaintext::-moz-placeholder, +.form-floating > .form-control::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext::placeholder, +.form-floating > .form-control::placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext:not(:-moz-placeholder-shown), +.form-floating > .form-control:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown), +.form-floating > .form-control:focus, +.form-floating > .form-control:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control-plaintext:-webkit-autofill, +.form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--bs-border-width) 0; +} +.form-floating > .form-control:disabled ~ label, +.form-floating > :disabled ~ label { + color: #6c757d; +} +.form-floating > .form-control:disabled ~ label::after, +.form-floating > :disabled ~ label::after { + background-color: var(--bs-secondary-bg); +} +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-floating, +.input-group > .form-select { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-floating:focus-within, +.input-group > .form-select:focus { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-tertiary-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); +} +.input-group-lg > .btn, +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.input-group-sm > .btn, +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.input-group-lg > .form-select, .input-group-sm > .form-select { + padding-right: 3rem; +} +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) + > .form-floating:not(:last-child) + > .form-control, +.input-group:not(.has-validation) + > .form-floating:not(:last-child) + > .form-select, +.input-group:not(.has-validation) + > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not( + .form-floating + ) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation + > .form-floating:nth-last-child(n+3) + > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select, +.input-group.has-validation + > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not( + .form-floating + ) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group + > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not( + .valid-feedback + ):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--bs-border-width) * -1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-valid-color); +} +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); +} +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip, +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip { + display: block; +} +.form-control.is-valid, .was-validated .form-control:valid { + border-color: var(--bs-form-valid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.form-control.is-valid:focus, .was-validated .form-control:valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right + calc(0.375em + 0.1875rem); +} +.form-select.is-valid, .was-validated .form-select:valid { + border-color: var(--bs-form-valid-border-color); +} +.form-select.is-valid:not([multiple]):not([size]), +.form-select.is-valid:not([multiple])[size="1"], +.was-validated .form-select:valid:not([multiple]):not([size]), +.was-validated .form-select:valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.form-select.is-valid:focus, .was-validated .form-select:valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.form-control-color.is-valid, .was-validated .form-control-color:valid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} +.form-check-input.is-valid, .was-validated .form-check-input:valid { + border-color: var(--bs-form-valid-border-color); +} +.form-check-input.is-valid:checked, +.was-validated .form-check-input:valid:checked { + background-color: var(--bs-form-valid-color); +} +.form-check-input.is-valid:focus, .was-validated .form-check-input:valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.form-check-input.is-valid ~ .form-check-label, +.was-validated .form-check-input:valid ~ .form-check-label { + color: var(--bs-form-valid-color); +} +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} +.input-group > .form-control:not(:focus).is-valid, +.input-group > .form-floating:not(:focus-within).is-valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-control:not(:focus):valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.was-validated .input-group > .form-select:not(:focus):valid { + z-index: 3; +} +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-invalid-color); +} +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); +} +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip, +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip { + display: block; +} +.form-control.is-invalid, .was-validated .form-control:invalid { + border-color: var(--bs-form-invalid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.form-control.is-invalid:focus, .was-validated .form-control:invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right + calc(0.375em + 0.1875rem); +} +.form-select.is-invalid, .was-validated .form-select:invalid { + border-color: var(--bs-form-invalid-border-color); +} +.form-select.is-invalid:not([multiple]):not([size]), +.form-select.is-invalid:not([multiple])[size="1"], +.was-validated .form-select:invalid:not([multiple]):not([size]), +.was-validated .form-select:invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.form-select.is-invalid:focus, .was-validated .form-select:invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.form-control-color.is-invalid, .was-validated .form-control-color:invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} +.form-check-input.is-invalid, .was-validated .form-check-input:invalid { + border-color: var(--bs-form-invalid-border-color); +} +.form-check-input.is-invalid:checked, +.was-validated .form-check-input:invalid:checked { + background-color: var(--bs-form-invalid-color); +} +.form-check-input.is-invalid:focus, +.was-validated .form-check-input:invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.form-check-input.is-invalid ~ .form-check-label, +.was-validated .form-check-input:invalid ~ .form-check-label { + color: var(--bs-form-invalid-color); +} +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} +.input-group > .form-control:not(:focus).is-invalid, +.input-group > .form-floating:not(:focus-within).is-invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-control:not(:focus):invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.was-validated .input-group > .form-select:not(:focus):invalid { + z-index: 4; +} +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: var(--bs-body-color); + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: var(--bs-border-radius); + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba( + var(--bs-btn-focus-shadow-rgb), + 0.5 + ); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, +.btn.active, +.btn.show, +.btn:first-child:active, +:not(.btn-check) + .btn:active { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn-check:checked + .btn:focus-visible, +.btn.active:focus-visible, +.btn.show:focus-visible, +.btn:first-child:active:focus-visible, +:not(.btn-check) + .btn:active:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked:focus-visible + .btn { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn.disabled, .btn:disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49,132,253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; +} +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130,138,145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; +} +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60,153,110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; +} +.btn-info { + --bs-btn-color: #000; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #31d2f2; + --bs-btn-hover-border-color: #25cff2; + --bs-btn-focus-shadow-rgb: 11,172,204; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #3dd5f3; + --bs-btn-active-border-color: #25cff2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; +} +.btn-warning { + --bs-btn-color: #000; + --bs-btn-bg: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffca2c; + --bs-btn-hover-border-color: #ffc720; + --bs-btn-focus-shadow-rgb: 217,164,6; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffcd39; + --bs-btn-active-border-color: #ffc720; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ffc107; + --bs-btn-disabled-border-color: #ffc107; +} +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225,83,97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; +} +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211,212,213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; +} +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66,70,73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; +} +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13,110,253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; + --bs-gradient: none; +} +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108,117,125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; +} +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25,135,84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; +} +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13,202,240; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; +} +.btn-outline-warning { + --bs-btn-color: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffc107; + --bs-btn-hover-border-color: #ffc107; + --bs-btn-focus-shadow-rgb: 255,193,7; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffc107; + --bs-btn-active-border-color: #ffc107; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc107; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc107; + --bs-gradient: none; +} +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220,53,69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; +} +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248,249,250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; +} +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33,37,41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; +} +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: 0 0 0 #000; + --bs-btn-focus-shadow-rgb: 49,132,253; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} +.btn-group-lg > .btn, .btn-lg { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} +.btn-group-sm > .btn, .btn-sm { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} +.collapse:not(.show) { + display: none; +} +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} +.dropdown, .dropdown-center, .dropend, .dropstart, .dropup, .dropup-center { + position: relative; +} +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc( + var(--bs-border-radius) - var(--bs-border-width) + ); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: var(--bs-box-shadow); + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); +} +.dropdown-item:focus, .dropdown-item:hover { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} +.dropdown-menu.show { + display: block; +} +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) + var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; +} +.btn-group, .btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group-vertical > .btn, .btn-group > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn.active, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:hover, +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn.active, +.btn-group > .btn:active, +.btn-group > .btn:focus, +.btn-group > .btn:hover { + z-index: 1; +} +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} +.btn-group { + border-radius: var(--bs-border-radius); +} +.btn-group > .btn-group:not(:first-child), +.btn-group > :not(.btn-check:first-child) + .btn { + margin-left: calc(var(--bs-border-width) * -1); +} +.btn-group > .btn-group:not(:last-child) > .btn, +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:not(:first-child) > .btn, +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, +.dropend .dropdown-toggle-split::after, +.dropup .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} +.btn-group-sm > .btn + .dropdown-toggle-split, +.btn-sm + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} +.btn-group-lg > .btn + .dropdown-toggle-split, +.btn-lg + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, .btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn-group:not(:first-child), +.btn-group-vertical > .btn:not(:first-child) { + margin-top: calc(var(--bs-border-width) * -1); +} +.btn-group-vertical > .btn-group:not(:last-child) > .btn, +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child) > .btn, +.btn-group-vertical > .btn ~ .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + background: 0 0; + border: 0; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:focus, .nav-link:hover { + color: var(--bs-nav-link-hover-color); +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.nav-link.disabled, .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var( + --bs-secondary-bg + ) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var( + --bs-border-color + ) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid + var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:focus, .nav-tabs .nav-link:hover { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-item.show .nav-link, .nav-tabs .nav-link.active { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.nav-pills { + --bs-nav-pills-border-radius: var(--bs-border-radius); + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0d6efd; +} +.nav-pills .nav-link { + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link.active, .nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} +.nav-underline { + --bs-nav-underline-gap: 1rem; + --bs-nav-underline-border-width: 0.125rem; + --bs-nav-underline-link-active-color: var(--bs-emphasis-color); + gap: var(--bs-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--bs-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:focus, .nav-underline .nav-link:hover { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, .nav-underline .show > .nav-link { + font-weight: 700; + color: var(--bs-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} +.nav-fill .nav-item, .nav-fill > .nav-link { + flex: 1 1 auto; + text-align: center; +} +.nav-justified .nav-item, .nav-justified > .nav-link { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} +.nav-fill .nav-item .nav-link, .nav-justified .nav-item .nav-link { + width: 100%; +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); + --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: var(--bs-border-radius); + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-lg, +.navbar > .container-md, +.navbar > .container-sm, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} +.navbar-brand:focus, .navbar-brand:hover { + color: var(--bs-navbar-brand-hover-color); +} +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, .navbar-text a:focus, .navbar-text a:hover { + color: var(--bs-navbar-active-color); +} +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) + var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} +.navbar-dark, .navbar[data-bs-theme="dark"] { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +[data-bs-theme="dark"] .navbar-toggler-icon { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-subtitle-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: var(--bs-border-radius); + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc( + var(--bs-border-radius) - var(--bs-border-width) + ); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + color: var(--bs-body-color); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, .card > .list-group + .card-footer { + border-top: 0; +} +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; + color: var(--bs-card-subtitle-color); +} +.card-text:last-child { + margin-bottom: 0; +} +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) + var(--bs-card-inner-border-radius) 0 0; +} +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) + var(--bs-card-inner-border-radius); +} +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} +.card-img, .card-img-bottom, .card-img-top { + width: 100%; +} +.card-img, .card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card-img, .card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-header, + .card-group > .card:not(:last-child) .card-img-top { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-footer, + .card-group > .card:not(:last-child) .card-img-bottom { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-header, + .card-group > .card:not(:first-child) .card-img-top { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-footer, + .card-group > .card:not(:first-child) .card-img-bottom { + border-bottom-left-radius: 0; + } +} +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: + color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color + 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: var(--bs-border-radius); + --bs-accordion-inner-border-radius: calc( + var(--bs-border-radius) - var(--bs-border-width) + ); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23212529' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23052c65' stroke-linecap='round' stroke-linejoin='round'%3e%3cpath d='M2 5L8 11L14 5'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: var(--bs-primary-text-emphasis); + --bs-accordion-active-bg: var(--bs-primary-bg-subtle); +} +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 + var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} +.accordion-header { + margin-bottom: 0; +} +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid + var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type > .accordion-header .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type > .accordion-header .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type > .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-body { + padding: var(--bs-accordion-body-padding-y) + var(--bs-accordion-body-padding-x); +} +.accordion-flush > .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush > .accordion-item:first-child { + border-top: 0; +} +.accordion-flush > .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush > .accordion-item > .accordion-header .accordion-button, +.accordion-flush + > .accordion-item + > .accordion-header + .accordion-button.collapsed { + border-radius: 0; +} +.accordion-flush > .accordion-item > .accordion-collapse { + border-radius: 0; +} +[data-bs-theme="dark"] .accordion-button::after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-secondary-color); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/"); +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: flex; + padding-left: 0; + list-style: none; +} +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid + var(--bs-pagination-border-color); + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.active > .page-link, .page-link.active { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.disabled > .page-link, .page-link.disabled { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: var(--bs-border-radius-lg); +} +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: var(--bs-border-radius-sm); +} +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: var(--bs-border-radius); + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: var(--bs-border-radius); + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} +.alert-heading { + color: inherit; +} +.alert-link { + font-weight: 700; + color: var(--bs-alert-link-color); +} +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} +.alert-primary { + --bs-alert-color: var(--bs-primary-text-emphasis); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text-emphasis); +} +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text-emphasis); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text-emphasis); +} +.alert-success { + --bs-alert-color: var(--bs-success-text-emphasis); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text-emphasis); +} +.alert-info { + --bs-alert-color: var(--bs-info-text-emphasis); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text-emphasis); +} +.alert-warning { + --bs-alert-color: var(--bs-warning-text-emphasis); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text-emphasis); +} +.alert-danger { + --bs-alert-color: var(--bs-danger-text-emphasis); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text-emphasis); +} +.alert-light { + --bs-alert-color: var(--bs-light-text-emphasis); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text-emphasis); +} +.alert-dark { + --bs-alert-color: var(--bs-dark-text-emphasis); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text-emphasis); +} +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, .progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: var(--bs-secondary-bg); + --bs-progress-border-radius: var(--bs-border-radius); + --bs-progress-box-shadow: var(--bs-box-shadow-inset); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0d6efd; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} +.progress-bar-striped { + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} +.progress-stacked > .progress { + overflow: visible; +} +.progress-stacked > .progress > .progress-bar { + width: 100%; +} +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-secondary-color); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-secondary-bg); + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:focus, .list-group-item-action:hover { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) + var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid + var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text-emphasis); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); + --bs-list-group-active-color: var(--bs-primary-bg-subtle); + --bs-list-group-active-bg: var(--bs-primary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); +} +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text-emphasis); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); + --bs-list-group-active-color: var(--bs-secondary-bg-subtle); + --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); +} +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text-emphasis); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-success-border-subtle); + --bs-list-group-active-color: var(--bs-success-bg-subtle); + --bs-list-group-active-bg: var(--bs-success-text-emphasis); + --bs-list-group-active-border-color: var(--bs-success-text-emphasis); +} +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text-emphasis); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-info-border-subtle); + --bs-list-group-active-color: var(--bs-info-bg-subtle); + --bs-list-group-active-bg: var(--bs-info-text-emphasis); + --bs-list-group-active-border-color: var(--bs-info-text-emphasis); +} +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text-emphasis); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); + --bs-list-group-active-color: var(--bs-warning-bg-subtle); + --bs-list-group-active-bg: var(--bs-warning-text-emphasis); + --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); +} +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text-emphasis); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); + --bs-list-group-active-color: var(--bs-danger-bg-subtle); + --bs-list-group-active-bg: var(--bs-danger-text-emphasis); + --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); +} +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text-emphasis); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-light-border-subtle); + --bs-list-group-active-color: var(--bs-light-bg-subtle); + --bs-list-group-active-bg: var(--bs-light-text-emphasis); + --bs-list-group-active-border-color: var(--bs-light-text-emphasis); +} +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text-emphasis); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); + --bs-list-group-active-color: var(--bs-dark-bg-subtle); + --bs-list-group-active-bg: var(--bs-dark-text-emphasis); + --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); +} +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close.disabled, .btn-close:disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} +.btn-close-white { + filter: var(--bs-btn-close-white-filter); +} +[data-bs-theme="dark"] .btn-close { + filter: var(--bs-btn-close-white-filter); +} +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid + var(--bs-toast-header-border-color); + border-top-left-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); + border-top-right-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: var(--bs-border-width); + --bs-modal-border-radius: var(--bs-border-radius-lg); + --bs-modal-box-shadow: var(--bs-box-shadow-sm); + --bs-modal-inner-border-radius: calc( + var(--bs-border-radius-lg) - var(--bs-border-width) + ); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: var(--bs-border-width); + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: var(--bs-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid + var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) + calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) + calc(-0.5 * var(--bs-modal-header-padding-x)) + calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid + var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: var(--bs-box-shadow); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-footer, .modal-fullscreen .modal-header { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-footer, + .modal-fullscreen-sm-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-footer, + .modal-fullscreen-md-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-footer, + .modal-fullscreen-lg-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-footer, + .modal-fullscreen-xl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-footer, + .modal-fullscreen-xxl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} +.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow, +.bs-tooltip-top .tooltip-arrow { + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before, +.bs-tooltip-top .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) + calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow, +.bs-tooltip-end .tooltip-arrow { + left: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before, +.bs-tooltip-end .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow, +.bs-tooltip-bottom .tooltip-arrow { + top: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before, +.bs-tooltip-bottom .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow, +.bs-tooltip-start .tooltip-arrow { + right: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before, +.bs-tooltip-start .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 + calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: var(--bs-body-bg); + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: var(--bs-border-radius-lg); + --bs-popover-inner-border-radius: calc( + var(--bs-border-radius-lg) - var(--bs-border-width) + ); + --bs-popover-box-shadow: var(--bs-box-shadow); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: inherit; + --bs-popover-header-bg: var(--bs-secondary-bg); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: var(--bs-body-color); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::after, .popover .popover-arrow::before { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow, +.bs-popover-top > .popover-arrow { + bottom: calc( + -1 * var(--bs-popover-arrow-height) - var(--bs-popover-border-width) + ); +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after, +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before, +.bs-popover-top > .popover-arrow::after, +.bs-popover-top > .popover-arrow::before { + border-width: var(--bs-popover-arrow-height) + calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::before, +.bs-popover-top > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow::after, +.bs-popover-top > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow, +.bs-popover-end > .popover-arrow { + left: calc( + -1 * var(--bs-popover-arrow-height) - var(--bs-popover-border-width) + ); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after, +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before, +.bs-popover-end > .popover-arrow::after, +.bs-popover-end > .popover-arrow::before { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) + var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::before, +.bs-popover-end > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow::after, +.bs-popover-end > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow, +.bs-popover-bottom > .popover-arrow { + top: calc( + -1 * var(--bs-popover-arrow-height) - var(--bs-popover-border-width) + ); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after, +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before, +.bs-popover-bottom > .popover-arrow::after, +.bs-popover-bottom > .popover-arrow::before { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) + var(--bs-popover-arrow-height); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::before, +.bs-popover-bottom > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow::after, +.bs-popover-bottom > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="bottom"] .popover-header::before, +.bs-popover-bottom .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid + var(--bs-popover-header-bg); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow, +.bs-popover-start > .popover-arrow { + right: calc( + -1 * var(--bs-popover-arrow-height) - var(--bs-popover-border-width) + ); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after, +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before, +.bs-popover-start > .popover-arrow::after, +.bs-popover-start > .popover-arrow::before { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 + calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::before, +.bs-popover-start > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow::after, +.bs-popover-start > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} +.popover-header { + padding: var(--bs-popover-header-padding-y) + var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid + var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} +.carousel { + position: relative; +} +.carousel.pointer-event { + touch-action: pan-y; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} +.carousel-item-next, .carousel-item-prev, .carousel-item.active { + display: block; +} +.active.carousel-item-end, .carousel-item-next:not(.carousel-item-start) { + transform: translateX(100%); +} +.active.carousel-item-start, .carousel-item-prev:not(.carousel-item-end) { + transform: translateX(-100%); +} +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end, +.carousel-fade .carousel-item.active { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-end, +.carousel-fade .active.carousel-item-start { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-end, + .carousel-fade .active.carousel-item-start { + transition: none; + } +} +.carousel-control-next, .carousel-control-prev { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: 0 0; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-next, .carousel-control-prev { + transition: none; + } +} +.carousel-control-next:focus, +.carousel-control-next:hover, +.carousel-control-prev:focus, +.carousel-control-prev:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} +.carousel-control-prev { + left: 0; +} +.carousel-control-next { + right: 0; +} +.carousel-control-next-icon, .carousel-control-prev-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} +.carousel-dark .carousel-control-next-icon, +.carousel-dark .carousel-control-prev-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} +[data-bs-theme="dark"] .carousel .carousel-control-next-icon, +[data-bs-theme="dark"] .carousel .carousel-control-prev-icon, +[data-bs-theme="dark"].carousel .carousel-control-next-icon, +[data-bs-theme="dark"].carousel .carousel-control-prev-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target], +[data-bs-theme="dark"].carousel .carousel-indicators [data-bs-target] { + background-color: #000; +} +[data-bs-theme="dark"] .carousel .carousel-caption, +[data-bs-theme="dark"].carousel .carousel-caption { + color: #000; +} +.spinner-border, .spinner-grow { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite + var(--bs-spinner-animation-name); +} +@keyframes spinner-border { + to { + transform: rotate(360deg); + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} +@media (prefers-reduced-motion: reduce) { + .spinner-border, .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, +.offcanvas-lg, +.offcanvas-md, +.offcanvas-sm, +.offcanvas-xl, +.offcanvas-xxl { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: var(--bs-border-width); + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: var(--bs-box-shadow-sm); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.show:not(.hiding), .offcanvas-sm.showing { + transform: none; + } + .offcanvas-sm.hiding, .offcanvas-sm.show, .offcanvas-sm.showing { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.show:not(.hiding), .offcanvas-md.showing { + transform: none; + } + .offcanvas-md.hiding, .offcanvas-md.show, .offcanvas-md.showing { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.show:not(.hiding), .offcanvas-lg.showing { + transform: none; + } + .offcanvas-lg.hiding, .offcanvas-lg.show, .offcanvas-lg.showing { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.show:not(.hiding), .offcanvas-xl.showing { + transform: none; + } + .offcanvas-xl.hiding, .offcanvas-xl.show, .offcanvas-xl.showing { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.show:not(.hiding), .offcanvas-xxl.showing { + transform: none; + } + .offcanvas-xxl.hiding, .offcanvas-xxl.show, .offcanvas-xxl.showing { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.show:not(.hiding), .offcanvas.showing { + transform: none; +} +.offcanvas.hiding, .offcanvas.show, .offcanvas.showing { + visibility: visible; +} +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} +.offcanvas-header { + display: flex; + align-items: center; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) + calc(var(--bs-offcanvas-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) + calc(-0.5 * var(--bs-offcanvas-padding-x)) + calc(-0.5 * var(--bs-offcanvas-padding-y)) auto; +} +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} +.placeholder-xs { + min-height: 0.6em; +} +.placeholder-sm { + min-height: 0.8em; +} +.placeholder-lg { + min-height: 1.2em; +} +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient( + 130deg, + #000 55%, + rgba(0, 0, 0, 0.8) 75%, + #000 95% + ); + mask-image: linear-gradient( + 130deg, + #000 55%, + rgba(0, 0, 0, 0.8) 75%, + #000 95% + ); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} +.text-bg-primary { + color: #fff !important; + background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-success { + color: #fff !important; + background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-info { + color: #000 !important; + background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-warning { + color: #000 !important; + background-color: RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-danger { + color: #fff !important; + background-color: RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-light { + color: #000 !important; + background-color: RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.text-bg-dark { + color: #fff !important; + background-color: RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) + !important; +} +.link-primary { + color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-primary-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-primary-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-primary:focus, .link-primary:hover { + color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 10, + 88, + 202, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-secondary { + color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-secondary-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-secondary-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-secondary:focus, .link-secondary:hover { + color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 86, + 94, + 100, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-success { + color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-success-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-success-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-success:focus, .link-success:hover { + color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 20, + 108, + 67, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-info { + color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-info-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-info-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-info:focus, .link-info:hover { + color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 61, + 213, + 243, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-warning { + color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-warning-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-warning-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-warning:focus, .link-warning:hover { + color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 255, + 205, + 57, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-danger { + color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-danger-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-danger-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-danger:focus, .link-danger:hover { + color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 176, + 42, + 55, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-light { + color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-light-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-light-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-light:focus, .link-light:hover { + color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 249, + 250, + 251, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + 249, + 250, + 251, + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-dark { + color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + var(--bs-dark-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-dark-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-dark:focus, .link-dark:hover { + color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA( + 26, + 30, + 33, + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) + !important; +} +.link-body-emphasis { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) + !important; + -webkit-text-decoration-color: RGBA( + var(--bs-emphasis-color-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: RGBA( + var(--bs-emphasis-color-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-body-emphasis:focus, .link-body-emphasis:hover { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) + !important; + -webkit-text-decoration-color: RGBA( + var(--bs-emphasis-color-rgb), + var(--bs-link-underline-opacity, 0.75) + ) !important; + text-decoration-color: RGBA( + var(--bs-emphasis-color-rgb), + var(--bs-link-underline-opacity, 0.75) + ) !important; +} +.focus-ring:focus { + outline: 0; + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) + var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) + var(--bs-focus-ring-color); +} +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-opacity, 0.5) + ); + text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-opacity, 0.5) + ); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} +.icon-link-hover:focus-visible > .bi, .icon-link-hover:hover > .bi { + transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); +} +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} +.visually-hidden, .visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption), +.visually-hidden:not(caption) { + position: absolute !important; +} +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.vr { + display: inline-block; + align-self: stretch; + width: var(--bs-border-width); + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} +.align-baseline { + vertical-align: baseline !important; +} +.align-top { + vertical-align: top !important; +} +.align-middle { + vertical-align: middle !important; +} +.align-bottom { + vertical-align: bottom !important; +} +.align-text-bottom { + vertical-align: text-bottom !important; +} +.align-text-top { + vertical-align: text-top !important; +} +.float-start { + float: left !important; +} +.float-end { + float: right !important; +} +.float-none { + float: none !important; +} +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} +.opacity-0 { + opacity: 0 !important; +} +.opacity-25 { + opacity: 0.25 !important; +} +.opacity-50 { + opacity: 0.5 !important; +} +.opacity-75 { + opacity: 0.75 !important; +} +.opacity-100 { + opacity: 1 !important; +} +.overflow-auto { + overflow: auto !important; +} +.overflow-hidden { + overflow: hidden !important; +} +.overflow-visible { + overflow: visible !important; +} +.overflow-scroll { + overflow: scroll !important; +} +.overflow-x-auto { + overflow-x: auto !important; +} +.overflow-x-hidden { + overflow-x: hidden !important; +} +.overflow-x-visible { + overflow-x: visible !important; +} +.overflow-x-scroll { + overflow-x: scroll !important; +} +.overflow-y-auto { + overflow-y: auto !important; +} +.overflow-y-hidden { + overflow-y: hidden !important; +} +.overflow-y-visible { + overflow-y: visible !important; +} +.overflow-y-scroll { + overflow-y: scroll !important; +} +.d-inline { + display: inline !important; +} +.d-inline-block { + display: inline-block !important; +} +.d-block { + display: block !important; +} +.d-grid { + display: grid !important; +} +.d-inline-grid { + display: inline-grid !important; +} +.d-table { + display: table !important; +} +.d-table-row { + display: table-row !important; +} +.d-table-cell { + display: table-cell !important; +} +.d-flex { + display: flex !important; +} +.d-inline-flex { + display: inline-flex !important; +} +.d-none { + display: none !important; +} +.shadow { + box-shadow: var(--bs-box-shadow) !important; +} +.shadow-sm { + box-shadow: var(--bs-box-shadow-sm) !important; +} +.shadow-lg { + box-shadow: var(--bs-box-shadow-lg) !important; +} +.shadow-none { + box-shadow: none !important; +} +.focus-ring-primary { + --bs-focus-ring-color: rgba( + var(--bs-primary-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-secondary { + --bs-focus-ring-color: rgba( + var(--bs-secondary-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-success { + --bs-focus-ring-color: rgba( + var(--bs-success-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-info { + --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); +} +.focus-ring-warning { + --bs-focus-ring-color: rgba( + var(--bs-warning-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-danger { + --bs-focus-ring-color: rgba( + var(--bs-danger-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-light { + --bs-focus-ring-color: rgba( + var(--bs-light-rgb), + var(--bs-focus-ring-opacity) + ); +} +.focus-ring-dark { + --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); +} +.position-static { + position: static !important; +} +.position-relative { + position: relative !important; +} +.position-absolute { + position: absolute !important; +} +.position-fixed { + position: fixed !important; +} +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} +.top-0 { + top: 0 !important; +} +.top-50 { + top: 50% !important; +} +.top-100 { + top: 100% !important; +} +.bottom-0 { + bottom: 0 !important; +} +.bottom-50 { + bottom: 50% !important; +} +.bottom-100 { + bottom: 100% !important; +} +.start-0 { + left: 0 !important; +} +.start-50 { + left: 50% !important; +} +.start-100 { + left: 100% !important; +} +.end-0 { + right: 0 !important; +} +.end-50 { + right: 50% !important; +} +.end-100 { + right: 100% !important; +} +.translate-middle { + transform: translate(-50%, -50%) !important; +} +.translate-middle-x { + transform: translateX(-50%) !important; +} +.translate-middle-y { + transform: translateY(-50%) !important; +} +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) + !important; +} +.border-0 { + border: 0 !important; +} +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-top-0 { + border-top: 0 !important; +} +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-end-0 { + border-right: 0 !important; +} +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-bottom-0 { + border-bottom: 0 !important; +} +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-start-0 { + border-left: 0 !important; +} +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) + !important; +} +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) + !important; +} +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) + !important; +} +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) + !important; +} +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} +.border-1 { + border-width: 1px !important; +} +.border-2 { + border-width: 2px !important; +} +.border-3 { + border-width: 3px !important; +} +.border-4 { + border-width: 4px !important; +} +.border-5 { + border-width: 5px !important; +} +.border-opacity-10 { + --bs-border-opacity: 0.1; +} +.border-opacity-25 { + --bs-border-opacity: 0.25; +} +.border-opacity-50 { + --bs-border-opacity: 0.5; +} +.border-opacity-75 { + --bs-border-opacity: 0.75; +} +.border-opacity-100 { + --bs-border-opacity: 1; +} +.w-25 { + width: 25% !important; +} +.w-50 { + width: 50% !important; +} +.w-75 { + width: 75% !important; +} +.w-100 { + width: 100% !important; +} +.w-auto { + width: auto !important; +} +.mw-100 { + max-width: 100% !important; +} +.vw-100 { + width: 100vw !important; +} +.min-vw-100 { + min-width: 100vw !important; +} +.h-25 { + height: 25% !important; +} +.h-50 { + height: 50% !important; +} +.h-75 { + height: 75% !important; +} +.h-100 { + height: 100% !important; +} +.h-auto { + height: auto !important; +} +.mh-100 { + max-height: 100% !important; +} +.vh-100 { + height: 100vh !important; +} +.min-vh-100 { + min-height: 100vh !important; +} +.flex-fill { + flex: 1 1 auto !important; +} +.flex-row { + flex-direction: row !important; +} +.flex-column { + flex-direction: column !important; +} +.flex-row-reverse { + flex-direction: row-reverse !important; +} +.flex-column-reverse { + flex-direction: column-reverse !important; +} +.flex-grow-0 { + flex-grow: 0 !important; +} +.flex-grow-1 { + flex-grow: 1 !important; +} +.flex-shrink-0 { + flex-shrink: 0 !important; +} +.flex-shrink-1 { + flex-shrink: 1 !important; +} +.flex-wrap { + flex-wrap: wrap !important; +} +.flex-nowrap { + flex-wrap: nowrap !important; +} +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} +.justify-content-start { + justify-content: flex-start !important; +} +.justify-content-end { + justify-content: flex-end !important; +} +.justify-content-center { + justify-content: center !important; +} +.justify-content-between { + justify-content: space-between !important; +} +.justify-content-around { + justify-content: space-around !important; +} +.justify-content-evenly { + justify-content: space-evenly !important; +} +.align-items-start { + align-items: flex-start !important; +} +.align-items-end { + align-items: flex-end !important; +} +.align-items-center { + align-items: center !important; +} +.align-items-baseline { + align-items: baseline !important; +} +.align-items-stretch { + align-items: stretch !important; +} +.align-content-start { + align-content: flex-start !important; +} +.align-content-end { + align-content: flex-end !important; +} +.align-content-center { + align-content: center !important; +} +.align-content-between { + align-content: space-between !important; +} +.align-content-around { + align-content: space-around !important; +} +.align-content-stretch { + align-content: stretch !important; +} +.align-self-auto { + align-self: auto !important; +} +.align-self-start { + align-self: flex-start !important; +} +.align-self-end { + align-self: flex-end !important; +} +.align-self-center { + align-self: center !important; +} +.align-self-baseline { + align-self: baseline !important; +} +.align-self-stretch { + align-self: stretch !important; +} +.order-first { + order: -1 !important; +} +.order-0 { + order: 0 !important; +} +.order-1 { + order: 1 !important; +} +.order-2 { + order: 2 !important; +} +.order-3 { + order: 3 !important; +} +.order-4 { + order: 4 !important; +} +.order-5 { + order: 5 !important; +} +.order-last { + order: 6 !important; +} +.m-0 { + margin: 0 !important; +} +.m-1 { + margin: 0.25rem !important; +} +.m-2 { + margin: 0.5rem !important; +} +.m-3 { + margin: 1rem !important; +} +.m-4 { + margin: 1.5rem !important; +} +.m-5 { + margin: 3rem !important; +} +.m-auto { + margin: auto !important; +} +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} +.mt-0 { + margin-top: 0 !important; +} +.mt-1 { + margin-top: 0.25rem !important; +} +.mt-2 { + margin-top: 0.5rem !important; +} +.mt-3 { + margin-top: 1rem !important; +} +.mt-4 { + margin-top: 1.5rem !important; +} +.mt-5 { + margin-top: 3rem !important; +} +.mt-auto { + margin-top: auto !important; +} +.me-0 { + margin-right: 0 !important; +} +.me-1 { + margin-right: 0.25rem !important; +} +.me-2 { + margin-right: 0.5rem !important; +} +.me-3 { + margin-right: 1rem !important; +} +.me-4 { + margin-right: 1.5rem !important; +} +.me-5 { + margin-right: 3rem !important; +} +.me-auto { + margin-right: auto !important; +} +.mb-0 { + margin-bottom: 0 !important; +} +.mb-1 { + margin-bottom: 0.25rem !important; +} +.mb-2 { + margin-bottom: 0.5rem !important; +} +.mb-3 { + margin-bottom: 1rem !important; +} +.mb-4 { + margin-bottom: 1.5rem !important; +} +.mb-5 { + margin-bottom: 3rem !important; +} +.mb-auto { + margin-bottom: auto !important; +} +.ms-0 { + margin-left: 0 !important; +} +.ms-1 { + margin-left: 0.25rem !important; +} +.ms-2 { + margin-left: 0.5rem !important; +} +.ms-3 { + margin-left: 1rem !important; +} +.ms-4 { + margin-left: 1.5rem !important; +} +.ms-5 { + margin-left: 3rem !important; +} +.ms-auto { + margin-left: auto !important; +} +.p-0 { + padding: 0 !important; +} +.p-1 { + padding: 0.25rem !important; +} +.p-2 { + padding: 0.5rem !important; +} +.p-3 { + padding: 1rem !important; +} +.p-4 { + padding: 1.5rem !important; +} +.p-5 { + padding: 3rem !important; +} +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} +.pt-0 { + padding-top: 0 !important; +} +.pt-1 { + padding-top: 0.25rem !important; +} +.pt-2 { + padding-top: 0.5rem !important; +} +.pt-3 { + padding-top: 1rem !important; +} +.pt-4 { + padding-top: 1.5rem !important; +} +.pt-5 { + padding-top: 3rem !important; +} +.pe-0 { + padding-right: 0 !important; +} +.pe-1 { + padding-right: 0.25rem !important; +} +.pe-2 { + padding-right: 0.5rem !important; +} +.pe-3 { + padding-right: 1rem !important; +} +.pe-4 { + padding-right: 1.5rem !important; +} +.pe-5 { + padding-right: 3rem !important; +} +.pb-0 { + padding-bottom: 0 !important; +} +.pb-1 { + padding-bottom: 0.25rem !important; +} +.pb-2 { + padding-bottom: 0.5rem !important; +} +.pb-3 { + padding-bottom: 1rem !important; +} +.pb-4 { + padding-bottom: 1.5rem !important; +} +.pb-5 { + padding-bottom: 3rem !important; +} +.ps-0 { + padding-left: 0 !important; +} +.ps-1 { + padding-left: 0.25rem !important; +} +.ps-2 { + padding-left: 0.5rem !important; +} +.ps-3 { + padding-left: 1rem !important; +} +.ps-4 { + padding-left: 1.5rem !important; +} +.ps-5 { + padding-left: 3rem !important; +} +.gap-0 { + gap: 0 !important; +} +.gap-1 { + gap: 0.25rem !important; +} +.gap-2 { + gap: 0.5rem !important; +} +.gap-3 { + gap: 1rem !important; +} +.gap-4 { + gap: 1.5rem !important; +} +.gap-5 { + gap: 3rem !important; +} +.row-gap-0 { + row-gap: 0 !important; +} +.row-gap-1 { + row-gap: 0.25rem !important; +} +.row-gap-2 { + row-gap: 0.5rem !important; +} +.row-gap-3 { + row-gap: 1rem !important; +} +.row-gap-4 { + row-gap: 1.5rem !important; +} +.row-gap-5 { + row-gap: 3rem !important; +} +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} +.column-gap-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} +.fs-5 { + font-size: 1.25rem !important; +} +.fs-6 { + font-size: 1rem !important; +} +.fst-italic { + font-style: italic !important; +} +.fst-normal { + font-style: normal !important; +} +.fw-lighter { + font-weight: lighter !important; +} +.fw-light { + font-weight: 300 !important; +} +.fw-normal { + font-weight: 400 !important; +} +.fw-medium { + font-weight: 500 !important; +} +.fw-semibold { + font-weight: 600 !important; +} +.fw-bold { + font-weight: 700 !important; +} +.fw-bolder { + font-weight: bolder !important; +} +.lh-1 { + line-height: 1 !important; +} +.lh-sm { + line-height: 1.25 !important; +} +.lh-base { + line-height: 1.5 !important; +} +.lh-lg { + line-height: 2 !important; +} +.text-start { + text-align: left !important; +} +.text-end { + text-align: right !important; +} +.text-center { + text-align: center !important; +} +.text-decoration-none { + text-decoration: none !important; +} +.text-decoration-underline { + text-decoration: underline !important; +} +.text-decoration-line-through { + text-decoration: line-through !important; +} +.text-lowercase { + text-transform: lowercase !important; +} +.text-uppercase { + text-transform: uppercase !important; +} +.text-capitalize { + text-transform: capitalize !important; +} +.text-wrap { + white-space: normal !important; +} +.text-nowrap { + white-space: nowrap !important; +} +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} +.text-muted { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} +.text-opacity-25 { + --bs-text-opacity: 0.25; +} +.text-opacity-50 { + --bs-text-opacity: 0.5; +} +.text-opacity-75 { + --bs-text-opacity: 0.75; +} +.text-opacity-100 { + --bs-text-opacity: 1; +} +.text-primary-emphasis { + color: var(--bs-primary-text-emphasis) !important; +} +.text-secondary-emphasis { + color: var(--bs-secondary-text-emphasis) !important; +} +.text-success-emphasis { + color: var(--bs-success-text-emphasis) !important; +} +.text-info-emphasis { + color: var(--bs-info-text-emphasis) !important; +} +.text-warning-emphasis { + color: var(--bs-warning-text-emphasis) !important; +} +.text-danger-emphasis { + color: var(--bs-danger-text-emphasis) !important; +} +.text-light-emphasis { + color: var(--bs-light-text-emphasis) !important; +} +.text-dark-emphasis { + color: var(--bs-dark-text-emphasis) !important; +} +.link-opacity-10 { + --bs-link-opacity: 0.1; +} +.link-opacity-10-hover:hover { + --bs-link-opacity: 0.1; +} +.link-opacity-25 { + --bs-link-opacity: 0.25; +} +.link-opacity-25-hover:hover { + --bs-link-opacity: 0.25; +} +.link-opacity-50 { + --bs-link-opacity: 0.5; +} +.link-opacity-50-hover:hover { + --bs-link-opacity: 0.5; +} +.link-opacity-75 { + --bs-link-opacity: 0.75; +} +.link-opacity-75-hover:hover { + --bs-link-opacity: 0.75; +} +.link-opacity-100 { + --bs-link-opacity: 1; +} +.link-opacity-100-hover:hover { + --bs-link-opacity: 1; +} +.link-offset-1 { + text-underline-offset: 0.125em !important; +} +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} +.link-offset-2 { + text-underline-offset: 0.25em !important; +} +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} +.link-offset-3 { + text-underline-offset: 0.375em !important; +} +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} +.link-underline-primary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-primary-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-primary-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-secondary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-secondary-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-secondary-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-success { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-success-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-success-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-info { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-info-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-info-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-warning { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-warning-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-warning-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-danger { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-danger-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-danger-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-light { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-light-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-light-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline-dark { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-dark-rgb), + var(--bs-link-underline-opacity) + ) !important; + text-decoration-color: rgba( + var(--bs-dark-rgb), + var(--bs-link-underline-opacity) + ) !important; +} +.link-underline { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; + text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-underline-opacity, 1) + ) !important; +} +.link-underline-opacity-0 { + --bs-link-underline-opacity: 0; +} +.link-underline-opacity-0-hover:hover { + --bs-link-underline-opacity: 0; +} +.link-underline-opacity-10 { + --bs-link-underline-opacity: 0.1; +} +.link-underline-opacity-10-hover:hover { + --bs-link-underline-opacity: 0.1; +} +.link-underline-opacity-25 { + --bs-link-underline-opacity: 0.25; +} +.link-underline-opacity-25-hover:hover { + --bs-link-underline-opacity: 0.25; +} +.link-underline-opacity-50 { + --bs-link-underline-opacity: 0.5; +} +.link-underline-opacity-50-hover:hover { + --bs-link-underline-opacity: 0.5; +} +.link-underline-opacity-75 { + --bs-link-underline-opacity: 0.75; +} +.link-underline-opacity-75-hover:hover { + --bs-link-underline-opacity: 0.75; +} +.link-underline-opacity-100 { + --bs-link-underline-opacity: 1; +} +.link-underline-opacity-100-hover:hover { + --bs-link-underline-opacity: 1; +} +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) + !important; +} +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} +.bg-opacity-100 { + --bs-bg-opacity: 1; +} +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} +.bg-gradient { + background-image: var(--bs-gradient) !important; +} +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} +.pe-none { + pointer-events: none !important; +} +.pe-auto { + pointer-events: auto !important; +} +.rounded { + border-radius: var(--bs-border-radius) !important; +} +.rounded-0 { + border-radius: 0 !important; +} +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} +.rounded-5 { + border-radius: var(--bs-border-radius-xxl) !important; +} +.rounded-circle { + border-radius: 50% !important; +} +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-xxl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; +} +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; +} +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; +} +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; +} +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} +.visible { + visibility: visible !important; +} +.invisible { + visibility: hidden !important; +} +.z-n1 { + z-index: -1 !important; +} +.z-0 { + z-index: 0 !important; +} +.z-1 { + z-index: 1 !important; +} +.z-2 { + z-index: 2 !important; +} +.z-3 { + z-index: 3 !important; +} +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + .fs-2 { + font-size: 2rem !important; + } + .fs-3 { + font-size: 1.75rem !important; + } + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} + +.fade, +.collapsing, +.carousel-item { + transition-duration: 100ms; +} + +.modal, .offcanvas, .tooltip, .popover { transition-duration: 0.05s } +.modal.fade .modal-dialog { transition-duration: 0.1s } +.offcanvas-backdrop, +.modal-backdrop { transition-duration: 0.05s } \ No newline at end of file diff --git a/test/button.test.ts b/test/button.test.ts new file mode 100644 index 00000000..bb60c30a --- /dev/null +++ b/test/button.test.ts @@ -0,0 +1,152 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import getMarkup from "./fixtures/getMarkup"; +import Button from "../src/components/button"; + +import "./assets/bootstrap.min.css"; + +describe("Button Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Button(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Button Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init with incorrect selector - throws error", () => { + try { + new Button('wombat'); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Button Error: "wombat" is not a valid selector.`, + ); + } + try { + // @ts-expect-error + new Button({}); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Button Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Can do toggle()", async () => { + const container = getMarkup("button"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="button"]'), 200); + + const element = container.querySelector( + '[data-test="button"]', + )!; + const win = element.ownerDocument.defaultView || window; + const instance = Button.init(element); + + expect(instance.element, "element").to.be.instanceOf(win.HTMLButtonElement); + expect(instance.element, "element").to.equal(element); + expect(instance.element.className, "element.className").to.not.include( + "active", + ); + expect(instance.name, "name").to.eq("Button"); + expect(instance.isActive, "isActive").to.be.false; + expect(instance.options, "options").to.be.empty; + expect(instance.defaults, "defaults").to.be.empty; + expect(instance.version, "version").to.be.string; + expect(Button.getInstance(element)).to.be.instanceOf(Button); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.isActive).to.be.true; + expect(instance.element.className).to.contain("active"); + }, 351); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.isActive).to.be.false; + expect(instance.element.className).to.not.contain("active"); + }, 351); + }); + + it("Can handle click()", async () => { + const container = getMarkup("button"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="button"]'), { + timeout: 200, + }); + + const element = container.querySelector( + '[data-test="button"]', + )!; + const instance = Button.init(element); + + element.click(); + await vi.waitFor(() => { + expect(instance.isActive).to.be.true; + expect(instance.element.className).to.contain("active"); + }, 351); + }); + + it("Can handle disabled elements", async () => { + const container = getMarkup("button"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="button"]'), { + timeout: 200, + }); + + const element = container.querySelector( + '[data-test="button"]', + )!; + element.setAttribute("disabled", "true"); + element.classList.add("disabled"); + const instance = Button.init(element); + + element.click(); + await vi.waitFor(() => { + expect(instance.isActive).to.be.false; + expect(instance.element.className).to.not.contain("active"); + }, 351); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.isActive).to.be.false; + expect(instance.element.className).to.not.contain("active"); + }, 351); + }); + + it("Can dispose()", async () => { + const container = getMarkup("button"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="button"]'), { + timeout: 200, + }); + + const element = container.querySelector( + '[data-test="button"]', + )!; + const instance = new Button(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.isActive).to.undefined; + expect(instance.toggle).to.undefined; + }, 351); + }); +}); diff --git a/test/carousel.test.ts b/test/carousel.test.ts new file mode 100644 index 00000000..70cdecc2 --- /dev/null +++ b/test/carousel.test.ts @@ -0,0 +1,751 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import Carousel from "../src/components/carousel"; +import getMarkup from "./fixtures/getMarkup"; +import { changeDirection, removeDirection } from "./fixtures/changeDirection"; +import selectText from "./fixtures/selectText"; + +import "./assets/bootstrap.min.css"; +import swipe from "./fixtures/swipe"; + +describe("Carousel Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Carousel(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Carousel Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Can initialize with default options", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const win = element.ownerDocument.defaultView!; + // init only with 2 slides + [...element.getElementsByClassName("carousel-item")].slice(-1)[0].remove(); + [...element.querySelectorAll("[data-bs-slide-to]")].slice(-1)[0].remove(); + element.classList.remove("slide"); + Object.keys({ ...element.dataset }).forEach((key) => { + if (key.includes("bs")) { + const K = key.replace("bs", "").toLowerCase(); + element.removeAttribute(`data-bs-${K}`); + } + }); + const instance = Carousel.init(element); + await vi.waitFor(() => { + expect(instance.element).to.be.instanceOf(win.HTMLElement); + expect(instance.name).to.equal("Carousel"); + expect(instance.slides.length).to.equal(2); + expect(instance.options).to.not.be.empty; + expect(instance.options).to.deep.equal({ + touch: true, + interval: 5000, + pause: "hover", + keyboard: false, + }); + expect(instance.defaults).to.deep.equal({ + touch: true, + interval: 5000, + pause: "hover", + keyboard: false, + }); + expect(instance.version.length).to.be.above(0); + }, { timeout: 350 }); + }); + + it("Can invalidate with only 1 item or less", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const win = element.ownerDocument.defaultView!; + + // init only with 1 slides + [...element.getElementsByClassName("carousel-item")].slice(-2).map((s) => + s.remove() + ); + [...element.querySelectorAll("[data-bs-slide-to]")].slice(-2).map((u) => + u.remove() + ); + + const instance = Carousel.init(element); + await vi.waitFor(() => { + expect(instance.element).to.be.instanceOf(win.HTMLElement); + expect(instance.name).to.equal("Carousel"); + expect(instance.slides.length).to.equal(1); + expect(instance.controls).to.be.undefined; + expect(instance.indicators).to.be.undefined; + }, { timeout: 350 }); + }); + + it("Can initialize via DATA API", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + element.setAttribute("data-bs-interval", "200"); + + const instance = Carousel.init(element); + await vi.waitFor(() => { + expect(instance.options).to.deep.equal({ + touch: true, + interval: 200, + pause: "hover", + keyboard: true, + }); + expect(instance.slides.length).to.equal(3); + expect(instance.defaults).to.not.be.undefined; + expect(instance.slides[0].className).to.include("active"); + }, 350); + }); + + it("Can initialize via JavaScript API", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: 200, + }); + + await vi.waitFor(() => { + expect(instance.options).to.deep.equal({ + touch: false, + interval: 200, + pause: false, + keyboard: false, + }); + expect(instance.slides.length).to.equal(3); + expect(instance.defaults).to.not.be.undefined; + }, 17); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it("Can work without transition", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + element.classList.remove("slide"); + + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: 200, + }); + + await vi.waitFor(() => { + expect(instance.options).to.deep.equal({ + touch: false, + interval: 200, + pause: false, + keyboard: false, + }); + expect(instance.slides.length).to.equal(3); + expect(instance.defaults).to.not.be.undefined; + }, 17); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 321); + + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + instance.pause(); + }, 321); + }); + + it("Can do to(), cycle(), next(), prev()", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: false, + }); + + await vi.waitFor(() => { + expect(instance.options).to.deep.equal({ + touch: false, + interval: false, + pause: false, + keyboard: false, + }); + expect(instance.slides.length).to.equal(3); + expect(instance.defaults).to.not.be.undefined; + }, 17); + + instance.to(1); + instance.to(1); // should be SPAM protected + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 321); + + instance.cycle(); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 321); + + instance.next(); + instance.next(); // should be SPAM protected + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 321); + + instance.prev(); + instance.prev(); // should be SPAM protected + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 321); + }); + + it("Can do pause(), cycle()", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: 200, + }); + + await vi.waitFor(() => { + expect(instance.slides.length).to.equal(3); + expect(instance.defaults).to.not.be.undefined; + }, 17); + + instance.pause(); + instance.pause(); // should be protected from SPAM + await vi.waitFor(() => { + expect(instance.isPaused).to.be.true; + }, 17); + + instance.cycle(); + instance.cycle(); // should be protected from SPAM + await vi.waitFor(() => { + expect(instance.isPaused).to.be.false; + }, 17); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it("Can do page navigation", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: false, + }); + const pages = element.querySelectorAll( + "[data-bs-slide-to]", + ); + + pages[0].click(); + pages[0].click(); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 51); + + pages[2].click(); + pages[2].click(); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + pages[1].click(); + pages[2].click(); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it("Can do arrow navigation", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const arrows = element.querySelectorAll( + "[data-bs-slide]", + ); + const instance = new Carousel(element, { + touch: false, + keyboard: false, + pause: false, + interval: false, + }); + + arrows[0].click(); + arrows[0].click(); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + arrows[1].click(); + arrows[0].click(); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + }); + + it("Can do pointer navigation", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const pages = element.querySelectorAll( + "[data-bs-slide-to]", + ); + const arrows = element.querySelectorAll( + "[data-bs-slide]", + ); + const doc = element.ownerDocument; + + const instance = new Carousel(element, { + touch: true, + keyboard: false, + pause: false, + interval: false, + }); + + swipe(element, [[230, 50], [150, 50], [100, 50]]); + swipe(element, [[230, 50]]); // test SPAM protection + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + swipe(element, [[100, 50], [200, 50], [300, 50]]); + swipe(element, [[430, 50]]); // test SPAM protection + await vi.waitFor(() => { + arrows[1].dispatchEvent(new Event("pointerdown", { bubbles: true })); // test SPAM protection + pages[2].dispatchEvent(new Event("pointerdown", { bubbles: true })); // test SPAM protection + expect(instance.slides[0].className).to.include("active"); + }, 351); + + // transition can be prevented when text is **selected** + selectText(instance.slides[0]); + swipe(element, [[100, 50], [200, 50], [300, 50]]); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + expect(instance.slides[2].className).to.not.include("active"); + doc.getSelection()?.removeAllRanges(); + }, 351); + + // transition can be prevented when **event.target** is out of context + swipe(element, [[100, 50], [550, 50], [650, 850]]); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + }); + + it("Can do keyboard navigation", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const doc = element.ownerDocument; + const instance = new Carousel(element, { + touch: false, + keyboard: true, + pause: false, + interval: false, + }); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { code: "ArrowRight", bubbles: true }), + ); + doc.dispatchEvent( + new KeyboardEvent("keydown", { code: "ArrowRight", bubbles: true }), + ); // SPAM + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { code: "ArrowRight", bubbles: true }), + ); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { code: "ArrowLeft", bubbles: true }), + ); + doc.dispatchEvent( + new KeyboardEvent("keydown", { code: "ArrowLeft", bubbles: true }), + ); // SPAM + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it('Can be paused via "hover"', async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { + pause: "hover", + interval: 200, + }); + + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 17); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + element.dispatchEvent(new MouseEvent("mouseenter", { bubbles: true })); + await vi.waitFor(() => { + expect(element.className).to.include("paused"); + expect(instance.slides[1].className).to.include("active"); + expect(instance.isPaused).to.be.true; + }, 351); + + element.dispatchEvent(new MouseEvent("mouseleave", { bubbles: true })); + await vi.waitFor(() => { + expect(element.className).to.not.include("paused"); + expect(instance.slides[2].className).to.include("active"); + expect(instance.isPaused).to.be.false; + instance.pause(); + }, 351); + }); + + it("Can prevent transition when out of viewport", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const win = element.ownerDocument.defaultView!; + const body = element.ownerDocument.body; + Object.assign(body.style, { paddingBottom: "110vh" }); + const instance = new Carousel(element, { interval: 200 }); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + instance.pause(); + win.scrollTo({ left: 0, top: 10, behavior: "smooth" }); + win.dispatchEvent(new Event("scroll")); + await new Promise((res) => setTimeout(res, 500)); + instance.cycle(); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it("Can work with controls outside element context", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const buttonArrows = [ + ...container.querySelectorAll("[data-bs-slide]"), // arrows + ]; + const buttonPages = [ + ...container.querySelectorAll("[data-bs-slide-to]"), // pages + ]; + + const instance = new Carousel(element, { interval: false }); + await vi.waitFor(() => { + expect(instance.controls.length).to.equal(4); + expect(instance.indicators.length).to.equal(6); + }, 350); + + buttonArrows[2].click(); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + buttonArrows[3].click(); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + + buttonPages[5].click(); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + buttonPages[4].click(); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + buttonPages[3].click(); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + }); + + it("Can work in RTL mode", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + changeDirection(container, "rtl"); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const doc = element.ownerDocument; + const buttonArrows = [ + ...container.querySelectorAll("[data-bs-slide]"), // arrows + ]; + + const instance = new Carousel(element, { interval: false, touch: true }); + + buttonArrows[1].click(); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + buttonArrows[0].click(); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { bubbles: true, code: "ArrowRight" }), + ); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { bubbles: true, code: "ArrowRight" }), + ); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + + doc.dispatchEvent( + new KeyboardEvent("keydown", { bubbles: true, code: "ArrowLeft" }), + ); + await vi.waitFor(() => { + expect(instance.slides[2].className).to.include("active"); + }, 351); + + swipe(element, [[100, 50], [200, 50], [300, 50]]); + await vi.waitFor(() => { + expect(instance.slides[0].className).to.include("active"); + }, 351); + swipe(element, [[100, 50], [200, 50], [300, 50]]); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + swipe(element, [[300, 150], [150, 150], [150, 150]]); + await vi.waitFor(() => { + console.log(instance.index); + expect(instance.slides[0].className).to.include("active"); + }, 351); + + removeDirection(container); + }); + + it("Can prevent drag and touch events", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const doc = element.ownerDocument; + const buttonArrows = [ + ...container.querySelectorAll("[data-bs-slide]"), // arrows + ]; + const buttonPages = [ + ...container.querySelectorAll("[data-bs-slide-to]"), // pages + ]; + + const instance = new Carousel(element, { interval: false }); + element.addEventListener("dragstart", function handle(e) { + console.log("dragstart " + e.target + " is prevented"); + }); + element.addEventListener("touchstart", function handle(e) { + console.log("touchstart " + e.target + " is prevented"); + }); + + element.dispatchEvent( + new PointerEvent("pointerdown", { bubbles: true, pointerType: "touch" }), + ); + await vi.waitFor(() => { + expect(element.className).to.not.include("paused"); + }, 351); + + element.dispatchEvent(new DragEvent("dragstart", { bubbles: true })); + await vi.waitFor(() => { + expect(element.className).to.not.include("paused"); + }, 351); + }); + + it("Can do original event", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + + element.addEventListener("slide.bs.carousel", function handle(e) { + // @ts-ignore + if (e.from === 0) { + // @ts-expect-error + console.log("slide from 0 to " + e.to + " is allowed"); + } else { + // @ts-expect-error + console.log("slide from " + e.from + " to " + e.to + " is prevented"); + e.preventDefault(); + } + }); + element.addEventListener("slid.bs.carousel", function handle(e) { + // @ts-expect-error + console.log("slid from 0 to " + e.to + " is triggered"); + }); + const instance = new Carousel(element, { interval: false }); + + instance.next(); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + instance.next(); + await vi.waitFor(() => { + expect(instance.slides[1].className).to.include("active"); + }, 351); + }); + + it("Can dispose()", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { interval: true }); + instance.next(); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.slides).to.be.undefined; + expect(instance.controls).to.be.undefined; + }, 351); + }); + + it("Can re-init while animating", async () => { + const container = getMarkup("carousel"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="carousel"]'), { + timeout: 200, + }); + const element = container.querySelector( + '[data-test="carousel"]', + )!; + const instance = new Carousel(element, { interval: false }); + instance.next(); + const newInstance = new Carousel(element); + expect(newInstance.element).not.to.be.undefined; + expect(newInstance.element).to.be.eq(instance.element); + }); +}); diff --git a/test/collapse.test.ts b/test/collapse.test.ts new file mode 100644 index 00000000..6dfd5de6 --- /dev/null +++ b/test/collapse.test.ts @@ -0,0 +1,188 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import getMarkup from "./fixtures/getMarkup"; +import Collapse from "../src/components/collapse"; + +import "./assets/bootstrap.min.css"; + +describe("Collapse Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Collapse(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Collapse Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Can initialize all instances in the page and toggle()", async () => { + const container = getMarkup("collapse"); + wrapper.append(container); + await vi.waitFor( + () => container.getElementsByClassName("collapse").length === 4, + 200, + ); + + const elements = container.getElementsByClassName( + "collapse", + ) as HTMLCollectionOf; + const accordion = container.querySelector(".accordion") as HTMLElement; + const instances: Collapse[] = []; + + [...elements].forEach((element, i) => { + if (i === 2) element.removeAttribute('data-bs-parent'); // code coverage + const instance = i === 1 + ? new Collapse(element, { parent: accordion }) // code coverage + : i === 2 ? new Collapse(element, { parent: '.accordion' }) // code coverage + : new Collapse(element); + instances.push(instance); + expect(instance.element, "element").to.exist; + expect(instance.element, "element").to.equal(element); + expect(instance.name, "name").to.eq("Collapse"); + if (!i) { + expect(instance.triggers, "triggers").to.have.length(2); + expect(instance.options, "options").to.deep.equal({ parent: null }); + expect(instance.parent, "parent").to.be.null; + } else { + expect(instance.triggers, "triggers").to.have.length(1); + expect(instance.options, "options").to.deep.equal({ + parent: i === 1 ? accordion : ".accordion", + }); + expect(instance.parent?.nodeType, "parent").to.equal(1); + } + expect(instance.defaults, "defaults").to.deep.equal({ parent: null }); + expect(instance.version, "version").to.be.string; + }); + + instances[0].toggle(); + instances[0].toggle(); // must be SPAM protected + await vi.waitFor(() => { + expect(instances[0].element.className).to.contain("show"); + }, 351); + + instances[0].toggle(); + await vi.waitFor(() => { + expect(instances[0].element.className).to.not.contain("show"); + }, 351); + + instances[1].toggle(); + instances[2].toggle(); + await vi.waitFor(() => { + expect(instances[1].element.className).to.contain("show"); + }, 351); + + instances[3].toggle(); + await vi.waitFor(() => { + expect(instances[1].element.className).to.not.contain("show"); + expect(instances[3].element.className).to.contain("show"); + }, 351); + + instances[3].hide(); + await vi.waitFor(() => { + expect(instances[3].element.className).to.not.contain("show"); + }, 351); + }); + + it("Can handle click", async () => { + const container = getMarkup("collapse"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector(".collapse"), 200); + + const element = container.querySelector(".collapse") as HTMLElement; + const hrefTrigger = document.querySelector( + '[href="#collapseExample"]', + ) as HTMLAnchorElement; + const btnTrigger = document.querySelector( + '[data-bs-target="#collapseExample"]', + ) as HTMLButtonElement; + const instance = Collapse.init(element); + + hrefTrigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 351); + + btnTrigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 351); + }); + + it("Can do original events", async () => { + const container = getMarkup("collapse"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector(".collapse"), 200); + + const element = container.querySelector(".collapse") as HTMLElement; + const doc = element.ownerDocument; + const hrefTrigger = document.querySelector( + '[href="#collapseExample"]', + ) as HTMLAnchorElement; + const btnTrigger = document.querySelector( + '[data-bs-target="#collapseExample"]', + ) as HTMLButtonElement; + const instance = Collapse.init(element); + + element.addEventListener("show.bs.collapse", function handle(e) { + if (instance.triggers[0] === doc.activeElement) { + console.log("show fired for and is allowed"); + } else { + console.log("show fired for and is prevented"); + e.preventDefault(); + } + }); + element.addEventListener("shown.bs.collapse", function handle(e) { + console.log("shown was triggered"); + }); + element.addEventListener("hide.bs.collapse", function handle(e) { + if (instance.triggers[1] === doc.activeElement) { + console.log("hide fired for and is allowed"); + } else { + console.log( + "hidden fired for and is prevented", + ); + e.preventDefault(); + } + }); + element.addEventListener("hidden.bs.collapse", function handle(e) { + console.log("hidden was triggered"); + }); + + btnTrigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 351); + + instance.show(); + hrefTrigger.click(); + instance.hide(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 351); + }); + + it("Can dispose()", async () => { + const container = getMarkup("collapse"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector(".collapse"), 200); + + const element = container.querySelector(".collapse") as HTMLElement; + const instance = Collapse.init(element); + instance.dispose(); + expect(instance.element, "element").to.be.undefined; + expect(instance.triggers, "triggers").to.be.undefined; + expect(instance.options, "options").to.be.undefined; + expect(instance.parent, "parent").to.be.undefined; + }); +}); diff --git a/test/dropdown.test.ts b/test/dropdown.test.ts new file mode 100644 index 00000000..5e1e375e --- /dev/null +++ b/test/dropdown.test.ts @@ -0,0 +1,717 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; +import Dropdown from "../src/components/dropdown"; + +import "./assets/bootstrap.min.css"; + +import { changeDirection, removeDirection } from "./fixtures/changeDirection"; + +const bodyPads = { + top: { paddingTop: "35vh", paddingBottom: "70vh" }, + bottom: { paddingTop: "70vh", paddingBottom: "35vh" }, + left: { paddingLeft: "22vw", paddingRight: "90vw" }, + right: { paddingLeft: "90vw", paddingRight: "22vw" }, + reset: { paddingLeft: '', paddingTop: '', paddingRight: '', paddingBottom: '' }, +}; +const toolbarPositions = { + start: "btn-toolbar", + middle: "btn-toolbar justify-content-center", + end: "btn-toolbar justify-content-end", + default: "btn-toolbar", +}; + +describe("Dropdown Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Dropdown(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Dropdown Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it('Can discontinue when no menu is provided', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const [element] = [...container.querySelectorAll('[data-bs-toggle="dropdown"]')] + .slice(-1) as HTMLElement[]; + element.parentElement?.querySelector('.dropdown-menu')?.remove(); + const instance = Dropdown.init(element); + expect(instance.element, 'element').to.equal(element); + expect(instance.menu, 'menu').to.not.exist; + }); + + it('Can do toggle()', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const elements = [...container.querySelectorAll('[data-bs-toggle="dropdown"]')] as HTMLElement[]; + const instances: Dropdown[] = []; + + elements.forEach((element, i) => { + const instance = Dropdown.init(element); + instances.push(instance); + expect(instance.element, 'element').to.equal(element); + expect(instance.menu, 'menu').to.exist; + expect(instance.parentElement, 'parentElement').to.exist; + + expect(instance.name, 'name').to.eq('Dropdown'); + expect(instance.options, 'options').to.deep.equal({ display: 'dynamic', offset: 5 }) + expect(instance.defaults, 'defaults').to.deep.equal({ display: 'dynamic', offset: 5 }); + expect(instance.version, 'version').to.be.string; + }); + + instances[0].toggle(); + await vi.waitFor(() => { + expect(instances[0].menu.className).to.contain("show"); + }, 351); + + instances[1].toggle(); + await vi.waitFor(() => { + expect(instances[1].menu.className).to.contain("show"); + expect(instances[0].menu.className).to.not.contain("show"); + }, 351); + }); + + it('Can handle keyboard navigation', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const elements = container.querySelectorAll('[data-bs-toggle="dropdown"]') as NodeListOf; + const instance = Dropdown.init(elements[1]); + const dropdownItems = instance.menu.getElementsByClassName('dropdown-item') as HTMLCollectionOf; + const doc = elements[1].ownerDocument; + + elements[1].click(); + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowUp'})); // additional code covered + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowUp'})); // additional code covered + + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + }, 351); + + dropdownItems[0].focus(); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[0]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowUp' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowUp' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[0]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[1]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[2]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[3]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[4]); + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems[4]); // still here + }, 50); + + const instance3 = Dropdown.init(elements[3]); + const dropdownItems3 = instance3.menu.getElementsByClassName('dropdown-item') as HTMLCollectionOf; + + elements[3].click(); + await vi.waitFor(() => { + expect(instance3.menu.className).to.contain("show"); + }, 351); + + dropdownItems3[0].focus(); + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowUp' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowUp' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems3[0]); // still here + }, 50); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems3[1]); + }, 50); + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems3[2]); + }, 50); + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'ArrowDown' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'ArrowDown' })); + await vi.waitFor(() => { + expect(doc.activeElement).to.equal(dropdownItems3[2]); + }, 50); + }); + + it('Can be dismissed by keyboard', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const elements = container.querySelectorAll('[data-bs-toggle="dropdown"]') as NodeListOf; + const instances: Dropdown[] = []; + const doc = elements[0].ownerDocument; + + [...elements].forEach(element => instances.push(Dropdown.init(element))); + elements[0].click(); + elements[0].focus(); // additional code to be covered + instances[0].menu.querySelector('.dropdown-item,input')?.focus(); + + await vi.waitFor(() => { + expect(instances[0].menu.className).to.contain("show"); + }, 351); + + doc.dispatchEvent(new KeyboardEvent('keydown', { code: 'Escape' })); + doc.dispatchEvent(new KeyboardEvent('keyup', { code: 'Escape' })); + await vi.waitFor(() => { + expect(instances[0].menu.className).to.not.contain("show"); + }, 351); + }); + + it('Can do automatic position on resize', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + const win = element.ownerDocument.defaultView!; + const body = element.ownerDocument.body!; + [...container.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { + if (i !== 1) d.parentElement?.classList.add('d-none'); + }); + const h3 = container.querySelector('h3')!; + const toolbar = container.querySelector('.btn-toolbar')!; + h3.classList.add('d-none'); + toolbar.className = toolbarPositions.middle; + Object.assign(body.style, bodyPads.top); + element.parentElement?.classList.remove('dropup'); + element.parentElement?.classList.add('dropstart'); + await page.viewport(800, 600); + + const dropdstart = Dropdown.init(element); + + element.click(); + await vi.waitFor(() => { + expect(dropdstart.menu.className).to.contain("show"); + expect(dropdstart.menu.style.cssText).to.contain("left: auto"); + }, 351); + + await page.viewport(200, 660); + win.dispatchEvent(new Event('resize')); + await vi.waitFor(() => { + expect(dropdstart.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + await page.viewport(800, 660); + win.dispatchEvent(new Event('resize')); + await vi.waitFor(() => { + expect(dropdstart.menu.style.cssText).to.contain("left: auto"); + }, 351); + dropdstart.dispose(); + + element.parentElement?.classList.remove('dropstart'); + element.parentElement?.classList.add('dropend'); + + const dropend = Dropdown.init(element); + dropend.show(); + await vi.waitFor(() => { + expect(dropend.menu.className).to.contain("show"); + expect(dropend.menu.style.cssText).to.contain("right: auto"); + }, 351); + + await page.viewport(200, 660); + win.dispatchEvent(new Event('resize')); + await vi.waitFor(() => { + expect(dropend.menu.className).to.contain("show"); + expect(dropend.menu.style.cssText).to.contain("top: 100%"); + }, 351); + dropend.dispose(); + Object.assign(body.style, bodyPads.reset); + await page.viewport(800, 660); + }); + + it('Can do automatic position on scroll', async () => { + await page.viewport(800, 660); + + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + const win = element.ownerDocument.defaultView!; + const body = element.ownerDocument.body!; + [...container.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { + if (i !== 1) d.parentElement?.classList.add('d-none'); + }); + const h3 = container.querySelector('h3')!; + const toolbar = container.querySelector('.btn-toolbar')!; + h3.classList.add('d-none'); + toolbar.className = toolbarPositions.middle; + // container.classList.remove('py-5'); + + // dropdup top left + Object.assign(body.style, bodyPads.top); + const dropupTopLeft = Dropdown.init(element); + dropupTopLeft.show(); + await vi.waitFor(() => { + expect(dropupTopLeft.menu.className).to.contain("show"); + expect(dropupTopLeft.menu.style.cssText).to.contain("top: auto"); + }, 351); + + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropupTopLeft.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + dropupTopLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropdown bottom left + Object.assign(body.style, bodyPads.bottom); + element.parentElement?.classList.remove('dropup'); + element.parentElement?.classList.add('dropdown'); + const dropdownBottomLeft = Dropdown.init(element); + dropdownBottomLeft.show(); + await vi.waitFor(() => { + expect(dropdownBottomLeft.menu.className).to.contain("show"); + expect(dropdownBottomLeft.menu.style.cssText).to.contain("top: auto"); + }, 351); + + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropdownBottomLeft.menu.className).to.contain("show"); + expect(dropdownBottomLeft.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + dropdownBottomLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropdown top right + Object.assign(body.style, { + paddingTop: '3rem', paddingBottom: '', + paddingLeft: '95%', paddingRight: '10%', + }); + toolbar.className = toolbarPositions.end; + const dropdownTopRight = Dropdown.init(element); + win.scrollTo({ left: 500, top: 800, behavior: "instant" }); + dropdownTopRight.show(); + await vi.waitFor(() => { + expect(dropdownTopRight.menu.className).to.contain("show"); + expect(dropdownTopRight.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropdownTopRight.menu.className).to.contain("show"); + expect(dropdownTopRight.menu.style.cssText).to.contain("right: 0px"); + }, 351); + + dropdownTopRight.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropstart top left + Object.assign(body.style, { + paddingLeft: '80vw', paddingRight: '80vw', + paddingTop: '20vh', paddingBottom: '80vh' + }); + element.parentElement?.classList.remove('dropdown'); + element.parentElement?.classList.add('dropstart'); + toolbar.className = toolbarPositions.end; + const dropstartTopLeft = Dropdown.init(element); + + dropstartTopLeft.show(); + await vi.waitFor(() => { + expect(dropstartTopLeft.menu.className).to.contain("show"); + expect(dropstartTopLeft.menu.style.cssText).to.contain("left: auto"); + }, 351); + + win.scrollTo({ left: 500, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropstartTopLeft.menu.className).to.contain("show"); + expect(dropstartTopLeft.menu.style.cssText).to.contain("left: 100%"); + }, 351); + + dropstartTopLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropend top right + Object.assign(body.style, {...bodyPads.right, paddingRight: '80vw', paddingTop: '40vh', paddingBottom: '80vh'}); + element.parentElement?.classList.remove('dropstart'); + element.parentElement?.classList.add('dropend'); + toolbar.className = toolbarPositions.end; + const dropendTopRight = Dropdown.init(element); + dropendTopRight.show(); + await vi.waitFor(() => { + expect(dropendTopRight.menu.className).to.contain("show"); + expect(dropendTopRight.menu.style.cssText).to.contain("left: auto"); + }, 351); + + win.scrollTo({ left: 500, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropendTopRight.menu.className).to.contain("show"); + expect(dropendTopRight.menu.style.cssText).to.contain("left: 100%"); + }, 351); + + dropendTopRight.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropend bottom left + Object.assign(body.style, { + paddingLeft: '40vw', paddingRight: '40vw', + paddingTop: '80vh', paddingBottom: '40vh', + }); + + toolbar.className = toolbarPositions.start; + const dropendBottomLeft = Dropdown.init(element); + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + + dropendBottomLeft.show(); + await vi.waitFor(() => { + expect(dropendBottomLeft.menu.className).to.contain("show"); + expect(dropendBottomLeft.menu.style.cssText).to.not.contain("bottom: 0px"); + }, 351); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropendBottomLeft.menu.className).to.contain("show"); + expect(dropendBottomLeft.menu.style.cssText).to.contain("inset: auto auto 0px 100%"); + }, 351); + + dropendBottomLeft.dispose(); + }); + + it('Can do automatic position on scroll RTL', async() => { + await page.viewport(800, 660); + + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + changeDirection(element, 'rtl'); + const win = element.ownerDocument.defaultView!; + const body = element.ownerDocument.body!; + [...container.querySelectorAll('[data-bs-toggle="dropdown"]')].forEach((d, i) => { + if (i !== 1) d.parentElement?.classList.add('d-none'); + }); + const h3 = container.querySelector('h3')!; + const toolbar = container.querySelector('.btn-toolbar')!; + h3.classList.add('d-none'); + + // dropdup top left + Object.assign(body.style, bodyPads.top); + const dropupTopLeft = Dropdown.init(element); + dropupTopLeft.show(); + await vi.waitFor(() => { + expect(dropupTopLeft.menu.className).to.contain("show"); + expect(dropupTopLeft.menu.style.cssText).to.contain("top: auto"); + }, 351); + + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropupTopLeft.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + dropupTopLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropdown bottom left + Object.assign(body.style, bodyPads.bottom); + element.parentElement?.classList.remove('dropup'); + element.parentElement?.classList.add('dropdown'); + const dropdownBottomLeft = Dropdown.init(element); + dropdownBottomLeft.show(); + await vi.waitFor(() => { + expect(dropdownBottomLeft.menu.className).to.contain("show"); + expect(dropdownBottomLeft.menu.style.cssText).to.contain("top: auto"); + }, 351); + + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropdownBottomLeft.menu.className).to.contain("show"); + expect(dropdownBottomLeft.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + dropdownBottomLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropdown top left + Object.assign(body.style, { + paddingTop: '3rem', paddingBottom: '', + paddingRight: '95%', paddingLeft: '10%' + }); + toolbar.className = toolbarPositions.end; + const dropdownTopRight = Dropdown.init(element); + win.scrollTo({ left: 500, top: 800, behavior: "instant" }); + dropdownTopRight.show(); + await vi.waitFor(() => { + expect(dropdownTopRight.menu.className).to.contain("show"); + expect(dropdownTopRight.menu.style.cssText).to.contain("top: 100%"); + }, 351); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropdownTopRight.menu.className).to.contain("show"); + expect(dropdownTopRight.menu.style.cssText).to.contain("left: 0px"); + }, 351); + + dropdownTopRight.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropstart top left + Object.assign(body.style, { + paddingLeft: '80vw', paddingRight: '80vw', + paddingTop: '20vh', paddingBottom: '80vh' + }); + element.parentElement?.classList.remove('dropdown'); + element.parentElement?.classList.add('dropstart'); + toolbar.className = toolbarPositions.start; + const dropstartTopLeft = Dropdown.init(element); + + dropstartTopLeft.show(); + await vi.waitFor(() => { + expect(dropstartTopLeft.menu.className).to.contain("show"); + expect(dropstartTopLeft.menu.style.cssText).to.contain("left: 100%"); + }, 351); + + dropstartTopLeft.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropend top left + Object.assign(body.style, {...bodyPads.left, paddingTop: '3rem', paddingBottom: ''}); + element.parentElement?.classList.remove('dropstart'); + element.parentElement?.classList.add('dropend'); + toolbar.className = toolbarPositions.end; + const dropendTopRight = Dropdown.init(element); + dropendTopRight.show(); + await vi.waitFor(() => { + expect(dropendTopRight.menu.className).to.contain("show"); + expect(dropendTopRight.menu.style.cssText).to.contain("left: 100%"); + }, 351); + + dropendTopRight.dispose(); + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + + // dropend bottom right + Object.assign(body.style, { + paddingLeft: '5rem', paddingRight: '40vw', + paddingTop: '85vh', paddingBottom: '45vh' + }); + + toolbar.className = toolbarPositions.start; + const dropendBottomLeft = Dropdown.init(element); + win.scrollTo({ left: 0, top: 800, behavior: "instant" }); + + dropendBottomLeft.show(); + await vi.waitFor(() => { + expect(dropendBottomLeft.menu.className).to.contain("show"); + expect(dropendBottomLeft.menu.style.cssText).to.not.contain("bottom: 0px"); + }, 351); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + win.dispatchEvent(new Event('scroll')); + await vi.waitFor(() => { + expect(dropendBottomLeft.menu.className).to.contain("show"); + expect(dropendBottomLeft.menu.style.cssText).to.contain("inset: auto 100% 0px auto"); + }, 351); + + dropendBottomLeft.dispose(); + Object.assign(body.style, bodyPads.reset); + await page.viewport(414,896); + removeDirection(element); + }); + + it('Can handle click()', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + const instance = Dropdown.init(element); + const submenus = instance.menu.getElementsByClassName('dropdown-item') as HTMLCollectionOf; + const doc = element.ownerDocument; + element.click(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + }, 351); + + submenus[0].click(); + await vi.waitFor(() => { + expect(instance.menu.className).to.not.contain("show"); + }, 351); + + element.click(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + }, 351); + + doc.body.dispatchEvent(new MouseEvent('click', { bubbles: true, clientX: 5, clientY: 5 })); + await vi.waitFor(() => { + expect(instance.menu.className).to.not.contain("show"); + }, 351); + }); + + it('Can handle dropdown-menu-end', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[0] as HTMLButtonElement; + const instance = Dropdown.init(element); + instance.menu.classList.add('dropdown-menu-end'); + + element.click(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + expect(instance.menu.style.cssText).to.contain("left: 0px"); + }, 351); + }); + + it('Can handle dropdown-menu-end RTL', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[0] as HTMLButtonElement; + changeDirection(element, 'rtl'); + const instance = Dropdown.init(element); + instance.menu.classList.add('dropdown-menu-end'); + + instance.show(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + expect(instance.menu.style.cssText).to.contain("right: 0px"); + }, 351); + removeDirection(element); + }); + + it('Can do original events - hide/hidden', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + const parentElement = element.parentElement!; + const instance = Dropdown.init(element); + + parentElement?.addEventListener('hide.bs.dropdown', function handleHide(e) { + if (!element.innerText.includes('wombat')) { + console.log(e.type + ' was prevented'); + e.preventDefault(); + } else { + console.log(e.type + ' was fired') + } + }) + + instance.show(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + }, 351); + + instance.hide(); + await vi.waitFor(() => { + expect(instance.menu.className).to.contain("show"); + }, 351); + }); + + + it('Can dispose()', async () => { + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[0] as HTMLButtonElement; + const instance = Dropdown.init(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + }, 351); + + const instance1 = Dropdown.init(element); + + instance1.show(); + await vi.waitFor(() => { + console.log(instance1.menu.className); + expect(instance1.menu.className).to.contain("show"); + }, 350); + + instance1.dispose(); + await vi.waitFor(() => { + expect(container.querySelector('.dropdown-menu.open')).to.be.null; + expect(instance1.element).to.be.undefined; + }, 351); + }); + + it('Can do original events - show/shown', async () => { + // this test must be last because of the custom event + const container = getMarkup("dropdown"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="dropdown"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="dropdown"]')[1] as HTMLButtonElement; + const parentElement = element.parentElement!; + const instance = Dropdown.init(element); + function handleShow(e: Event) { + if (!element.innerText.includes('wombat')) { + console.log(e.type + ' was prevented'); + e.preventDefault(); + } else { + console.log(e.type + ' was fired') + } + } + parentElement?.addEventListener('show.bs.dropdown', handleShow); + + instance.show(); + await vi.waitFor(() => { + expect(instance.menu.className).to.not.contain("show"); + parentElement?.removeEventListener('show.bs.dropdown', handleShow) + }, 351); + }); +}); diff --git a/test/fixtures/changeDirection.js b/test/fixtures/changeDirection.js new file mode 100644 index 00000000..a818af03 --- /dev/null +++ b/test/fixtures/changeDirection.js @@ -0,0 +1,34 @@ +/** + * Sets the `dir` attribute for `` element. + * @param {HTMLElement} element target + * @param {string=} requestedDir requested language direction + */ +export function changeDirection(element, requestedDir) { + const doc = element.ownerDocument; + const dir = requestedDir === "rtl" ? "rtl" : ""; + const HTML = doc.documentElement; + const STYLE = doc.querySelector("link"); + let HREF = + "https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css"; + // set RTL mode + if (dir) { + HTML.setAttribute("dir", "rtl"); + STYLE.setAttribute("href", HREF.replace(".min", ".rtl.min")); + } else { + HTML.removeAttribute("dir"); + STYLE.setAttribute("href", HREF); + } +} + +/** + * Sets the `dir` attribute for `` element. + * @param {HTMLElement} element target + */ +export function removeDirection(element) { + const doc = element.ownerDocument; + const HTML = doc.documentElement; + const STYLE = doc.querySelector("link"); + + HTML.removeAttribute("dir"); + STYLE.remove(); +} diff --git a/test/fixtures/getMarkup.ts b/test/fixtures/getMarkup.ts new file mode 100644 index 00000000..ddb59fa0 --- /dev/null +++ b/test/fixtures/getMarkup.ts @@ -0,0 +1,577 @@ +// import { changeDirection } from "./changeDirection"; + +const markup = { + alert: `
+

Alert Examples

+ +
`, + button: `
+

Button Example

+ +
`, + carousel: `
+

Carousel Example

+ + + + + + + +
+`, + collapse: `
+

Collapse Example

+

+ + + HREF + + + +

+
+
+ Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim + keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. +
+
+

Accordion Example

+
+
+

+ +

+
+
+ This is the first item's accordion body. It is hidden by default, until the collapse plugin adds + the appropriate classes that we use to style each element. These classes control the overall appearance, as well + as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. + It's also worth noting that just about any HTML can go within the .accordion-body, though the transition does limit overflow. +
+
+
+
+

+ +

+
+
+ This is the second item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate + classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS + transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about + any HTML can go within the .accordion-body, though the transition does limit overflow. +
+
+
+
+

+ +

+
+
+ This is the third item's accordion body. It is hidden by default, until the collapse plugin adds the appropriate + classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS + transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about + any HTML can go within the .accordion-body, though the transition does limit overflow. +
+
+
+
+
`, + dropdown: `
+

Dropdown Examples

+
+ + +
+ + +
+
+ + +
+
+
`, + modal: `
+ +
+

Modal Examples

+ + Launch simple modal + + + +
+
`, + offcanvas: `
+

Offcanvas Examples

+
+ + Link with href + + +
+ + + + +
`, + popover: `
+

Popover Example

+
+ +
+
`, + scrollspy: `
+

ScrollSpy Examples

+
+
+ +
+

Tumblr farm

+

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr + farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 + wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of + them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony + biodiesel keffiyeh artisan ullamco consequat.

+ +

Carles aesthetic

+

Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat + mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, + mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis + gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

+ +
one
+

Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh + mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park + consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. + Cred ex in, sustainable delectus consectetur fanny pack iphone.

+ +
two
+

In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. + Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure + four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party + fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. + Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn + nesciunt.

+ +
three
+

Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr + farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan.

+
+
+
+

Navbar

+
+
+
+
+
+
+ +
+
+
+

Item 1

+

Ex consequat commodo adipisicing exercitation aute excepteur occaecat ullamco duis aliqua id magna ullamco eu. + Do aute ipsum ipsum ullamco cillum consectetur ut et aute consectetur labore. Fugiat laborum incididunt tempor + eu consequat enim dolore proident. Qui laborum do non excepteur nulla magna eiusmod consectetur in. Aliqua + et aliqua officia quis et incididunt voluptate non anim reprehenderit adipisicing dolore ut consequat deserunt + mollit dolore. Aliquip nulla enim veniam non fugiat id cupidatat nulla elit cupidatat commodo velit ut + eiusmod cupidatat elit dolore.

+
Item 1-1
+

Amet tempor mollit aliquip pariatur excepteur commodo do ea cillum commodo Lorem et occaecat elit qui et. + Aliquip labore ex ex esse voluptate occaecat Lorem ullamco deserunt. Aliqua cillum excepteur irure consequat + id quis ea. Sit proident ullamco aute magna pariatur nostrud labore. Reprehenderit aliqua commodo eiusmod + aliquip est do duis amet proident magna consectetur consequat eu commodo fugiat non quis. Enim aliquip + exercitation ullamco adipisicing voluptate excepteur minim exercitation minim minim commodo adipisicing + exercitation officia nisi adipisicing. Anim id duis qui consequat labore adipisicing sint dolor elit + cillum anim et fugiat.

+
Item 1-2
+

Cillum nisi deserunt magna eiusmod qui eiusmod velit voluptate pariatur laborum sunt enim. Irure laboris mollit + consequat incididunt sint et culpa culpa incididunt adipisicing magna magna occaecat. Nulla ipsum cillum eiusmod + sint elit excepteur ea labore enim consectetur in labore anim. Proident ullamco ipsum esse elit ut Lorem eiusmod + dolor et eiusmod. Anim occaecat nulla in non consequat eiusmod velit incididunt.

+

Item 2

+

Quis magna Lorem anim amet ipsum do mollit sit cillum voluptate ex nulla tempor. Laborum consequat non elit enim + exercitation cillum aliqua consequat id aliqua. Esse ex consectetur mollit voluptate est in duis laboris ad sit + ipsum anim Lorem. Incididunt veniam velit elit elit veniam Lorem aliqua quis ullamco deserunt sit enim elit + aliqua esse irure. Laborum nisi sit est tempor laborum mollit labore officia laborum excepteur commodo non + commodo dolor excepteur commodo. Ipsum fugiat ex est consectetur ipsum commodo tempor sunt in proident.

+

Item 3

+

Quis anim sit do amet fugiat dolor velit sit ea ea do reprehenderit culpa duis. Nostrud aliqua ipsum fugiat minim + proident occaecat excepteur aliquip culpa aute tempor reprehenderit. Deserunt tempor mollit elit ex pariatur dolore + velit fugiat mollit culpa irure ullamco est ex ullamco excepteur.

+
+
+
+
+
+

Regular Nav

+
+
+
`, + tab: `
+
+
+

Tab Examples

+ + +
+
+

These tabs have no active tab on initialization. Nesciunt tofu stumptown aliqua, retro synth + master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Messenger bag gentrify pitchfork tattooed + craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings + gentrify squid 8-bit cred pitchfork.

+
+ + +
+ + +
+
+

Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth + master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica.

+
+
+

Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 + labore velit, blog sartorial PBR leggings next level wes anderson artisan four.

+
+
+
+
+
`, + toast: `
+

Toast Example

+
+ + Show Toast 2 +
+
+ + +
+
`, + tooltip: `
+

Tooltip Example

+
+ + Events + + + + + + +
+ +
+ + + SVG + + Demo Tooltip for IMG +
+
`, +}; + +export default (component: keyof typeof markup) => { + const domParser = new DOMParser(); + let tempDocument = domParser.parseFromString(markup[component], "text/html"); + const container = tempDocument.querySelector("div")!; + + return container; +}; diff --git a/cypress/fixtures/selectText.js b/test/fixtures/selectText.js similarity index 81% rename from cypress/fixtures/selectText.js rename to test/fixtures/selectText.js index da402f2b..b5ac7230 100644 --- a/cypress/fixtures/selectText.js +++ b/test/fixtures/selectText.js @@ -1,40 +1,43 @@ -/** - * Returns an `Array` with all `#text` nodes in a Node. - * @param {Node} target root node - * @returns {Node[]} the requested nodes - */ -function getTextNodes(target) { - if (target.nodeType === 3) { - return [target]; - } - - let nodes = []; - const doc = target.ownerDocument; - const win = doc.defaultView; - const walk = doc.createTreeWalker(target, win.NodeFilter.SHOW_TEXT, null); - let node; - - while (node = walk.nextNode()) { - if (node.nodeType === 3) { - nodes = [...nodes, node]; - } - } - return nodes; -} - -/** - * Select all the text of the first textNode of a given element. - * @param {Node} target target element - */ -export default function selectText(target) { - const textNodes = getTextNodes(target); - const [startNode, endNode] = [...textNodes.slice(0,1), ...textNodes.slice(-1)]; - const doc = target.ownerDocument; - const win = doc.defaultView; - - const range = new win.Range(); - range.setStart(startNode , 0); - range.setEnd(endNode, endNode.textContent.length); - win.getSelection().removeAllRanges(); - win.getSelection().addRange(range); -} \ No newline at end of file +/** + * Returns an `Array` with all `#text` nodes in a Node. + * @param {Node} target root node + * @returns {Node[]} the requested nodes + */ +function getTextNodes(target) { + if (target.nodeType === 3) { + return [target]; + } + + let nodes = []; + const doc = target.ownerDocument; + const win = doc.defaultView; + const walk = doc.createTreeWalker(target, win.NodeFilter.SHOW_TEXT, null); + let node; + + while (node = walk.nextNode()) { + if (node.nodeType === 3) { + nodes = [...nodes, node]; + } + } + return nodes; +} + +/** + * Select all the text of the first textNode of a given element. + * @param {Node} target target element + */ +export default function selectText(target) { + const textNodes = getTextNodes(target); + const [startNode, endNode] = [ + ...textNodes.slice(0, 1), + ...textNodes.slice(-1), + ]; + const doc = target.ownerDocument; + const win = doc.defaultView; + + const range = new win.Range(); + range.setStart(startNode, 0); + range.setEnd(endNode, endNode.textContent.length); + win.getSelection().removeAllRanges(); + win.getSelection().addRange(range); +} diff --git a/test/fixtures/swipe.ts b/test/fixtures/swipe.ts new file mode 100644 index 00000000..261b0417 --- /dev/null +++ b/test/fixtures/swipe.ts @@ -0,0 +1,42 @@ +/** + * Triggers a number of pointer events for a given target and + * an array of coordinates. + * @param target the element to dispatch the pointer event(s) + * @param points an array of [clientX, clientY] coordinates + * @param offset an optional offset object of { x, y } coordinates + */ +const swipe = ( + target: T, + points: [number, number][], + offset?: { x: number; y: number }, +) => { + const rect = target.getBoundingClientRect(); + const offsetX = Number.isInteger(offset?.x) ? offset!.x : rect.left; + const offsetY = Number.isInteger(offset?.y) ? offset!.y : rect.top; + if (points.length === 1) points.push([0, 0]); + + points.forEach(([x, y], i) => { + // first is a pointerdown, last is a pointerup and all pointermove in between + const ev = i === 0 + ? "pointerdown" + : i === points.length - 1 + ? "pointerup" + : "pointermove"; + const point = new PointerEvent(ev, { + clientX: x + offsetX, + clientY: y + offsetY, + pressure: 1, + bubbles: true, // Whether the event should bubble up the DOM + cancelable: true, // Whether the event can be canceled + pointerId: 0, // The ID of the pointer (e.g., a touch point) + pointerType: "touch", // The type of pointer (e.g., touch or mouse) + width: 1, // The width of the pointer (in pixels) + height: 1, // The height of the pointer (in pixels) + isPrimary: true, // Whether this is the primary pointer (true) or not (false) + }); + target.dispatchEvent(point); + target.offsetWidth; + }); +}; + +export default swipe; diff --git a/test/modal.test.ts b/test/modal.test.ts new file mode 100644 index 00000000..87e5533e --- /dev/null +++ b/test/modal.test.ts @@ -0,0 +1,353 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; + +import "./assets/bootstrap.min.css"; +import Modal from "../src/components/modal"; + +describe("Modal Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + const popContainer = document.body.querySelector('.popup-container'); + if (popContainer) popContainer.innerHTML = ''; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Modal(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Modal Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init with target element", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = Modal.init(element); + + await vi.waitFor(() => { + expect(instance.element).to.equal(element); + expect(instance.name).to.equal('Modal'); + expect(instance.options).to.not.be.empty; + expect(instance.defaults).to.not.be.undefined; + expect(instance.version).to.not.be.undefined; + }, 151); + }); + + it("Can do show() / hide() / toggle()", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + const instances = [] as Modal[]; + const elements = container.querySelectorAll( + '[data-test="modal"]', + )!; + elements.forEach(element => instances.push(Modal.init(element))); + + instances[0].toggle(); + instances[0].show(); // test SPAM + await vi.waitFor(() => { + expect(instances[0].element.className).to.contain("show"); + }, 151); + + instances[0].hide(); + instances[0].toggle(); + await vi.waitFor(() => { + expect(instances[0].element.className).to.not.contain("show"); + }, 151); + + instances[0].show(); + await vi.waitFor(() => { + expect(instances[0].element.className).to.contain("show"); + }, 151); + + instances[1].show(); + await vi.waitFor(() => { + expect(instances[0].element.className).to.not.contain("show"); + expect(instances[1].element.className).to.contain("show"); + }, 151); + + instances[0].show(); + await vi.waitFor(() => { + expect(instances[1].element.className).to.not.contain("show"); + expect(instances[0].element.className).to.contain("show"); + }, 151); + }); + + it("Can be openeded / dismissed via click", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const trigger = container.querySelector('[href="#myModal"]')! + const dismiss = element.querySelector('[data-bs-dismiss="modal"]')! + const instance = Modal.init(element); + + trigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + // wait for events to be attached + await new Promise(res => setTimeout(res, 101)); + element.dispatchEvent(new MouseEvent('click', { bubbles: true, clientX: 2, clientY: 2 })); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 51); + + trigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + dismiss.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 51); + }); + + it("Can work with static backdrop", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = new Modal(element, { backdrop: 'static' }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.isStatic).to.be.true; + expect(instance.options.backdrop).to.equal('static'); + expect(instance.element.className).to.contain("show"); + }, 51); + + // wait for events to be attached + await new Promise(res => setTimeout(res, 101)); + element.dispatchEvent(new MouseEvent('click', { bubbles: true, clientX: 2, clientY: 2 })); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + }); + + it("Can work with resize event", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelectorAll( + '[data-test="modal"]', + )[1]!; + const win = element.ownerDocument.defaultView!; + const instance = new Modal(element, { backdrop: true }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.isStatic).to.be.false; + expect(instance.options.backdrop).to.be.true; + expect(instance.element.className).to.contain("show"); + }, 51); + + await page.viewport(320, 896); + win.dispatchEvent(new Event('resize', { bubbles: true })); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + instance.update(); + await vi.waitFor(() => { + expect(win.document.body.style.cssText).to.contain("overflow: hidden"); + }, 51); + + await page.viewport(414, 896); + }); + + it("Can be dismissed via Escape", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Modal(element, { backdrop: false }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + // wait for events to be attached + await new Promise(res => setTimeout(res, 101)); + win.document.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Escape' })); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 51); + }); + + it("Can do dispose() while not open", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + element.classList.remove('fade'); + const instance = Modal.init(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + }, 151); + }); + + it("Can do dispose() while open with backdrop", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = Modal.init(element); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + // wait for events to be attached + await new Promise(res => setTimeout(res, 101)); + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + expect(element.className).to.not.contain('show'); + }, 151); + }); + + it("Can do dispose() while open without backdrop", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = new Modal(element, { backdrop: false }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + // wait for events to be attached + await new Promise(res => setTimeout(res, 101)); + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + // expect(element.className).to.not.contain('show'); + }, 151); + await new Promise(res => setTimeout(res, 101)); + }); + + + it("Can use focus trap", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + const element = container.querySelector( + '[data-test="modal"]', + )!; + element.setAttribute('tabindex', '0'); + const doc = element.ownerDocument!; + const dismiss = element.querySelector('[data-bs-dismiss="modal"]')! + const instance = new Modal(element); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + dismiss.focus(); + new Array(6).forEach(() => { + element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab' })); + }); + new Array(6).forEach(() => { + element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', shiftKey: true })); + }); + + expect(instance.element).to.contain(doc.activeElement); + }); + + it("Can work with CustomEvent hide", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = Modal.init(element); + + element.addEventListener("hide.bs.modal", function (e) { + if (!element.innerText.includes("Holy")) { + e.preventDefault(); + } + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 51); + }); + + it("Can work with CustomEvent show", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + + const element = container.querySelector( + '[data-test="modal"]', + )!; + const instance = Modal.init(element); + + element.addEventListener("show.bs.modal", function (e) { + if (!element.innerText.includes("Holy")) { + e.preventDefault(); + } + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 51); + }); +}); diff --git a/test/offcanvas.test.ts b/test/offcanvas.test.ts new file mode 100644 index 00000000..777482e8 --- /dev/null +++ b/test/offcanvas.test.ts @@ -0,0 +1,314 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import getMarkup from "./fixtures/getMarkup"; + +import "./assets/bootstrap.min.css"; +import Offcanvas from "../src/components/offcanvas"; + +describe("Offcanvas Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", async () => { + const args = []; + try { + // @ts-expect-error + new Offcanvas(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Offcanvas Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init with target element", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const instance = new Offcanvas(element); + expect(instance.element).to.equal(element); + expect(instance.name).to.eq("Offcanvas"); + expect(instance.options).to.not.be.empty; + expect(instance.defaults).to.not.be.undefined; + expect(instance.version).to.be.string; + }); + + it("Can be openeded / dismissed via click - backdrop", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const doc = element.ownerDocument; + const trigger = container.querySelector('[href="#offcanvasExample"]')!; + const dismiss = element.querySelector('[data-bs-dismiss="offcanvas"]')!; + const instance = Offcanvas.init(element); + + await vi.waitFor(() => { + expect(instance.element).to.equal(element); + expect(instance.name).to.equal('Offcanvas'); + expect(instance.options).to.not.be.empty; + expect(instance.defaults).to.not.be.undefined; + expect(instance.version).to.not.be.undefined; + }, 151); + + trigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + // wait for events to be attached and backdrop added + await new Promise(res => setTimeout(res, 151)); + const backdrop = doc.querySelector('.offcanvas-backdrop')!; + + backdrop.dispatchEvent(new MouseEvent('click', { bubbles: true, /*clientX: 412, clientY: 2*/ })); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + + trigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + await new Promise(res => setTimeout(res, 101)); + dismiss.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + }); + + it("Can do show() / hide()", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const instance = new Offcanvas(element); + const element1 = container.querySelectorAll( + '[data-test="offcanvas"]', + )[1]!; + const instance1 = new Offcanvas(element1); + + instance.toggle(); + instance.show(); // test SPAM + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + instance.toggle(); + instance.hide(); // test SPAM + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + instance1.toggle(); + instance1.show(); // test SPAM + await vi.waitFor(() => { + expect(instance1.element.className).to.contain("show"); + expect(instance.element.className).to.not.contain("show"); + }, 151); + + instance.toggle(); + instance.hide(); // test SPAM + await vi.waitFor(() => { + expect(instance1.element.className).to.not.contain("show"); + expect(instance.element.className).to.contain("show"); + }, 151); + }); + + it("Can use focus trap", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + const element = container.querySelector( + '#offcanvasNoBackdrop', + )!; + element.setAttribute('tabindex', '0'); + const doc = element.ownerDocument!; + const dismiss = element.querySelector('[data-bs-dismiss="offcanvas"]')! + + const instance = new Offcanvas(element); + + instance.show(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + dismiss.focus(); + element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab' })); + element.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: 'Tab', shiftKey: true })); + + expect(instance.element).to.contain(doc.activeElement); + }); + + it("Can be openeded / dismissed via click - no backdrop", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + const element = container.querySelector( + '#offcanvasNoBackdrop', + )!; + const trigger = container.querySelector('[data-bs-target="#offcanvasNoBackdrop"]')!; + const dismiss = element.querySelector('[data-bs-dismiss="offcanvas"]')!; + const instance = new Offcanvas(element); + + trigger.click(); + instance.show(); // test SPAM + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + trigger.click(); + instance.hide(); // test SPAM + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + + trigger.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + // wait for events to kick in + await new Promise(res => setTimeout(res, 150)); + dismiss.click(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + }); + + it("Can do dispose() when open", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const instance = new Offcanvas(element); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + instance.dispose(); + await new Promise(res => setTimeout(res, 101)); + await vi.waitFor(() => { + expect(element.className).to.not.contain("show"); + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + }, 151); + }); + + it("Can be dismissed via Escape", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const doc = element.ownerDocument!; + const instance = new Offcanvas(element); + + instance.toggle(); + instance.show(); // test SPAM + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + await new Promise(res => setTimeout(res, 150)); + doc.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, code: "Escape" })) + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + }); + + it("Can do dispose()", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const instance = new Offcanvas(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(element.className).to.not.contain("show"); + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + }, 151); + }); + + it("Can work with CustomEvent hide", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const instance = new Offcanvas(element); + element.addEventListener("hide.bs.offcanvas", function testHide(e) { + if (!element.innerText.includes("Holy")) { + e.preventDefault(); + } + element.removeEventListener("hide.bs.offcanvas", testHide); + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + + instance.hide(); + await vi.waitFor(() => { + expect(instance.element.className).to.contain("show"); + }, 151); + }); + + it("Can work with CustomEvent show", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + + const element = container.querySelector( + '[data-test="offcanvas"]', + )!; + const doc = element.ownerDocument!; + const instance = new Offcanvas(element); + element.addEventListener("show.bs.offcanvas", function testShow(e) { + if (!element.innerText.includes("Holy")) { + e.preventDefault(); + } + element.removeEventListener("hide.bs.offcanvas", testShow); + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.element.className).to.not.contain("show"); + }, 151); + }); +}); diff --git a/test/popover.test.ts b/test/popover.test.ts new file mode 100644 index 00000000..48701bb5 --- /dev/null +++ b/test/popover.test.ts @@ -0,0 +1,308 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; + +import "./assets/bootstrap.min.css"; + +import Popover from "../src/components/popover"; + +describe("Popover Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + const popContainer = document.body.querySelector('.popup-container'); + if (popContainer) popContainer.innerHTML = ''; + }); + + afterEach(async () => { + await page.viewport(414, 896); + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Popover(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Popover Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Can handle horizontal position when both exceed top and bottom 1", async () => { + await page.viewport(600, 200); + const container = getMarkup("popover"); + Object.assign(container.style, { padding: "10rem 27rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Popover(element, { + dismissible: false, + placement: "left", + title: "Popover Left", + content: + `This Popover can handle horizontal position when both exceed top and bottom. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 51); + + win.scrollTo({ left: 600, top: 0, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-end"); + }, 51); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-start"); + }, 51); + }); + + it("Can handle horizontal position when both exceed top and bottom 2", async () => { + await page.viewport(600, 200); + const container = getMarkup("popover"); + Object.assign(container.style, { padding: "7rem 27rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Popover(element, { + dismissible: false, + placement: "right", + title: "Popover Right", + content: + `This Popover can handle horizontal position when both exceed top and bottom. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + win.scrollTo({ left: 600, top: 0, behavior: "instant" }); + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + expect(instance.tooltip?.className).to.contain("bs-popover-end"); + }, 51); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-start"); + }, 151); + }); + + it("Can do toggle() and dismissible", async () => { + await page.viewport(600, 200); + const container = getMarkup("popover"); + Object.assign(container.style, { padding: "7rem 27rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const instance = Popover.init(element); + + expect(instance.element, "element").to.equal(element); + expect(instance.tooltip, "tooltip").to.not.be.undefined; + expect(instance.name, "name").to.eq("Popover"); + expect(instance.options, "options").to.not.be.empty; + expect(instance.defaults, "defaults").to.not.be.undefined; + expect(instance.version, "version").to.be.string; + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 51); + }); + + it("Can handle vertical right", async () => { + await page.viewport(400, 400); + const container = getMarkup("popover"); + Object.assign(container.style, { padding: "15rem 25rem 15rem 1rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Popover(element, { + dismissible: false, + placement: "top", + title: "Popover Right", + content: + `This Popover can handle vertical position when both exceed top and bottom. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + + win.scrollTo({ left: 600, top: 0, behavior: "instant" }); + + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + }); + + it("Can handle vertical left", async () => { + await page.viewport(400, 400); + const container = getMarkup("popover"); + Object.assign(container.style, { padding: '15rem 35rem 15rem 25rem' }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + win.scrollTo({ left: 600, top: 0, behavior: "instant" }); + + const instance = new Popover(element, { + dismissible: false, + placement: "top", + title: "Popover Top", + content: + `This Popover can handle vertical position when both exceed top and bottom. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + }); + + it("Can switch top to bottom", async () => { + await page.viewport(400, 400); + const container = getMarkup("popover"); + Object.assign(container.style, { height: '100vh', padding: "22rem 8rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Popover(element, { + dismissible: false, + placement: "top", + title: "Top Popover", + content: `This Popover can handle top position when exceed top. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + + win.scrollTo({ left: 0, top: 400, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-bottom"); + }, 51); + }); + + it("Can switch bottom to top", async () => { + await page.viewport(400, 450); + const container = getMarkup("popover"); + Object.assign(container.style, { margin: "40vh 10rem", padding: '3rem' }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const win = element.ownerDocument.defaultView!; + const instance = new Popover(element, { + dismissible: false, + placement: "bottom", + title: "Popover Bottom", + content: `This Popover can handle bottom position when both exceed top and bottom. + Here we add more content for testing. + Efficiently unleash cross-media information without cross-media value. + Quickly maximize timely deliverables for real-time schemas.`, + }); + + win.scrollTo({ left: 0, top: 600, behavior: "instant" }); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + expect(instance.tooltip?.className).to.contain("bs-popover-bottom"); + }, 51); + + win.scrollTo({ left: 0, top: 0, behavior: "instant" }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-popover-top"); + }, 51); + }); + + it("Can dispose()", async () => { + const container = getMarkup("popover"); + Object.assign(container.style, { margin: "30vh 10rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const instance = new Popover(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(Popover.getInstance(element)).to.be.null; + expect(instance.element).to.be.undefined; + expect(instance.tooltip).to.be.undefined; + }, 51); + }); + + it("Can dispose() while open", async () => { + await page.viewport(400, 500); + const container = getMarkup("popover"); + Object.assign(container.style, { margin: "30vh 10rem" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="popover"]'), 200); + const element = container.querySelector( + '[data-test="popover"]', + )!; + const instance = new Popover(element); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain('show'); + }, 51); + + await new Promise(res => setTimeout(res, 250)); + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.tooltip).to.be.undefined; + }, 151); + }); +}); diff --git a/test/scrollspy.test.ts b/test/scrollspy.test.ts new file mode 100644 index 00000000..cfafb3ee --- /dev/null +++ b/test/scrollspy.test.ts @@ -0,0 +1,136 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; +import "./assets/bootstrap.min.css"; + +import ScrollSpy from "../src/components/scrollspy"; + +describe("ScrollSpy Class Tests", async () => { + await page.viewport(800, 600); + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new ScrollSpy(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `ScrollSpy Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init each target element", async () => { + const container = getMarkup("scrollspy"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-spy="scroll"]'), 200); + + const element = container.querySelector('[data-bs-spy="scroll"]')!; + const instance = ScrollSpy.init(element); + + expect(ScrollSpy.getInstance(element)).to.be.instanceOf(ScrollSpy); + expect(instance.element).to.equal(element); + expect(instance.offsets).to.be.instanceOf(Array).and.have.length.above(0); + expect(instance.items).to.be.instanceOf(Array).and.have.length.above(0); + expect(instance.items[0].className).to.contain("active"); + expect(instance.name).to.eq("ScrollSpy"); + expect(instance.options).to.not.be.empty; + expect(instance.defaults).to.not.be.undefined; + expect(instance.version).to.be.string; + }); + + it("Init without a target", () => { + const doc = wrapper.ownerDocument!; + const element = doc.createElement("div"); + element.setAttribute("data-bs-target", "#nonExistingTarget"); + wrapper.append(element); + + const instance = ScrollSpy.init(element); + expect(ScrollSpy.getInstance(element)).to.eq(instance); + expect(instance.target).to.be.null; + }); + + it("Can activate targets", async () => { + const container = getMarkup("scrollspy"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-spy="scroll"]'), 200); + + const element = container.querySelector('[data-bs-spy="scroll"]')!; + const instance = ScrollSpy.init(element); + + instance.scrollTarget.scrollTo({ top: 1500, left: 0, behavior: 'instant' }); + + await vi.waitFor(() => { + expect(instance.items[4].className).to.contain("active"); + }, 51); + }); + + it("Can work with full page contents", async () => { + await page.viewport(780, 1000); + const containerSource = getMarkup("scrollspy"); + const content = containerSource.querySelector(".col-md-9 .row")!.cloneNode( + true, + ) as Node; + const container = document.createElement('div'); + container.append(content); + const win = wrapper.ownerDocument.defaultView!; + Object.assign(container.style, { padding: "5rem 0" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector("#disposableSpy"), 200); + const disposableSpy = container.querySelector("#disposableSpy") as HTMLElement; + const [nav] = container.getElementsByTagName("nav"); + Object.assign(disposableSpy.style, { height: "" }); + Object.assign(nav.style, { top: "0px" }); + nav.classList.add("position-sticky"); + + const element = container.querySelector(ScrollSpy.selector)!; + const instance = ScrollSpy.init(element); + + instance.scrollTarget.scrollTo({ top: 1500, behavior: 'instant' }); + await vi.waitFor(() => { + expect(instance.items[4].className).to.contain('active'); + }, 101); + + instance.scrollTarget.scrollTo({ top: 0, behavior: 'instant' }); + await vi.waitFor(() => { + expect(instance.items[4].className).to.not.contain('active'); + expect(instance.items[0].className).to.not.contain('active'); + }, 101); + + await page.viewport(400, 600); + win.dispatchEvent(new Event('resize')); + instance.scrollTarget.scrollTo({ top: 2500, behavior: 'instant' }); + await vi.waitFor(() => { + expect(instance.items[0].className).to.not.contain('active'); + expect(instance.items[4].className).to.contain('active'); + }, 101); + + await page.viewport(414, 896); + }); + + it("Can dispose", async () => { + const container = getMarkup("scrollspy"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-spy="scroll"]'), 200); + + const element = container.querySelector('[data-bs-spy="scroll"]')!; + const instance = ScrollSpy.init(element); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.scrollTarget).to.be.undefined; + expect(instance.scrollHeight).to.be.undefined; + expect(instance.items).to.be.undefined; + expect(instance.offsets).to.be.undefined; + }, 50); + }); +}); diff --git a/test/tab.test.ts b/test/tab.test.ts new file mode 100644 index 00000000..16d28309 --- /dev/null +++ b/test/tab.test.ts @@ -0,0 +1,166 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; + +import "./assets/bootstrap.min.css"; + +import Tab from "../src/components/tab"; +import Dropdown from "../src/components/dropdown"; + +describe("Tab Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Tab(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Tab Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init without a tab content won't work", async () => { + const container = getMarkup('tab'); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="tab"]'), 200); + + const element = container.querySelectorAll('[data-bs-toggle="tab"]')[4]!; + const newTab = element.cloneNode(true) as HTMLAnchorElement; + newTab.id = "newTab"; + newTab.href = "#newTabContent"; + element.after(newTab); + const instance = new Tab(newTab); + expect(instance.content).to.be.undefined; + }); + + it("Can initialize all instances in the page", async () => { + const container = getMarkup('tab'); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="tab"]'), 200); + + const elements = [...container.querySelectorAll('[data-bs-toggle="tab"]')] as HTMLElement[]; + + elements.forEach((element, i) => { + const instance = Tab.init(element); + expect(instance.element, 'element').to.equal(element); + expect(instance.nav, 'nav').to.exist; + expect(instance.content, 'content').to.exist; + expect(instance.tabContent, 'tabContent').to.exist; + expect(instance.options, 'options').to.be.empty; + expect(instance.defaults, 'defaults').to.be.empty; + + expect(instance.name, 'name').to.eq('Tab'); + expect(instance.version, 'version').to.be.string; + }); + }); + + it("Can do click()", async () => { + const container = getMarkup('tab'); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="tab"]'), 200); + + const dropdowns = [...container.querySelectorAll('[data-bs-toggle="dropdown"]')] as HTMLElement[]; + const elements = [...container.querySelectorAll('[data-bs-toggle="tab"]')] as HTMLElement[]; + + const dropdownInstances: Dropdown[] = []; + const tabInstances: Tab[] = []; + + dropdowns.forEach(dropdown => dropdownInstances.push(Dropdown.init(dropdown))); + elements.forEach(element => tabInstances.push(Tab.init(element))); + + dropdownInstances[0].element.click(); + await vi.waitFor(() => { + expect(dropdownInstances[0].menu.className).to.contain('show'); + }, 50); + tabInstances[1].element.click(); + await vi.waitFor(() => { + expect(tabInstances[0].content?.className).to.not.contain('show'); + expect(tabInstances[1].content?.className).to.contain('show'); + }, 151); + + await new Promise(res => setTimeout(res, 101)); + dropdownInstances[0].element.click(); + await vi.waitFor(() => { + expect(dropdownInstances[0].menu.className).to.contain('show'); + }, 50); + await new Promise(res => setTimeout(res, 171)); + tabInstances[2].element.click(); + await vi.waitFor(() => { + expect(tabInstances[1].content?.className).to.not.contain('show'); + expect(tabInstances[2].content?.className).to.contain('show'); + }, 151); + + await new Promise(res => setTimeout(res, 101)); + tabInstances[4].element.click(); + await vi.waitFor(() => { + expect(tabInstances[4].content?.className).to.contain('show'); + }, 151); + + tabInstances[3].element.click(); + await vi.waitFor(() => { + expect(tabInstances[4].content?.className).to.not.contain('show'); + expect(tabInstances[3].content?.className).to.contain('show'); + }, 151); + }); + + it("Can do original events", async () => { + const container = getMarkup('tab'); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="tab"]'), 200); + + const elements = [...container.querySelectorAll('[data-bs-toggle="tab"]')] as HTMLElement[]; + const tabInstances: Tab[] = []; + elements.forEach(element => tabInstances.push(Tab.init(element))); + + // attach Tab event listeners + elements[0].addEventListener("show.bs.tab", (e) => { + e.preventDefault(); + }); + elements[3].addEventListener("hide.bs.tab", (e) => { + e.preventDefault(); + }); + + tabInstances[1].show(); + await vi.waitFor(() => { + expect(tabInstances[0].content?.className).to.not.contain('show'); + expect(tabInstances[1].content?.className).to.contain('show'); + }, 151); + + tabInstances[0].show(); + await vi.waitFor(() => { + expect(tabInstances[0].content?.className).to.not.contain('show'); + expect(tabInstances[1].content?.className).to.contain('show'); + }, 151); + + await new Promise(res => setTimeout(res, 101)); + tabInstances[4].show(); + await vi.waitFor(() => { + expect(tabInstances[4].content?.className).to.not.contain('show'); + expect(tabInstances[3].content?.className).to.contain('show'); + }, 151); + }); + + it("Can dispose()", async () => { + const container = getMarkup('tab'); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-bs-toggle="tab"]'), 200); + + const element = container.querySelector('[data-bs-toggle="tab"]') as HTMLElement; + + const instance = new Tab(element); + instance.dispose(); + expect(instance.element, "element").to.be.undefined; + expect(instance.content, "content").to.be.undefined; + expect(instance.nav, "nav").to.be.undefined; + }); +}); diff --git a/test/toast.test.ts b/test/toast.test.ts new file mode 100644 index 00000000..4b3f4563 --- /dev/null +++ b/test/toast.test.ts @@ -0,0 +1,204 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; +import getMarkup from "./fixtures/getMarkup"; +import Toast from "../src/components/toast"; + +import "./assets/bootstrap.min.css"; + +describe("Toast Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Toast(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Toast Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init with target element", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + const instance = Toast.init(element); + expect(instance.element).to.equal(element); + expect(instance.name).to.eq("Toast"); + expect(instance.options).to.deep.equal({ + animation: true, + autohide: true, + delay: 5000, + }); + expect(instance.defaults).to.deep.equal({ + animation: true, + autohide: true, + delay: 5000, + }); + expect(instance.version).to.be.string; + instance.dispose(); // coverage + }); + + it("Can do show() and autoclose", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + element.classList.remove("fade"); // code coverage + const instance = new Toast(element, { delay: 200 }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 101); + + // wait for the delay interval + await new Promise(res => setTimeout(res, 251)); + await vi.waitFor(() => { + expect(instance.isShown).to.be.false; + expect(instance.element.className).to.not.contain('show'); + }, 151); + }); + + it("Can do click()", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const elements = container.querySelectorAll('.toast'); + const instances = [...elements].map(element => new Toast(element)); + + instances[0].triggers[0].click(); + await vi.waitFor(() => { + expect(instances[0].isShown).to.be.true; + expect(instances[0].element.className).to.contain('show'); + }, 151); + + instances[0].dismiss?.click(); + await vi.waitFor(() => { + expect(instances[0].isShown).to.be.false; + expect(instances[0].element.className).to.not.contain('show'); + }, 151); + + instances[1].triggers[0].click(); + await vi.waitFor(() => { + expect(instances[1].isShown).to.be.true; + expect(instances[1].element.className).to.contain('show'); + }, 151); + + instances[1].dismiss?.click(); + await vi.waitFor(() => { + expect(instances[1].isShown).to.be.false; + expect(instances[1].element.className).to.not.contain('show'); + }, 151); + }); + + it("Can extend visibility duration by user interaction", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + const instance = new Toast(element, { delay: 200, animation: false }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 151); + + instance.element.dispatchEvent(new MouseEvent('mouseenter')); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 251); + + instance.element.dispatchEvent(new MouseEvent('mouseleave')); + // wait for the delay interval + await new Promise(res => setTimeout(res, 251)); + await vi.waitFor(() => { + expect(instance.isShown).to.be.false; + expect(instance.element.className).to.not.contain('show'); + }, 51); + }); + + it("Can do dispose()", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + const instance = new Toast(element, { autohide: false, animation: false }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 51); + + instance.dispose(); + await vi.waitFor(() => { + expect(instance.element).to.be.undefined; + expect(instance.options).to.be.undefined; + expect(element.className).to.not.contain('show'); + }, 151); + }); + + it("CustomEvent can be prevented - hide", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + const instance = new Toast(element, { autohide: false, animation: false }); + element.addEventListener("hide.bs.toast", function (e) { + if (!element.innerText.includes("wombat")) { + e.preventDefault(); + } + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 51); + + instance.hide(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.true; + expect(instance.element.className).to.contain('show'); + }, 51); + }); + + it("CustomEvent can be prevented - show", async () => { + const container = getMarkup("toast"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.toast'), 200); + + const element = container.querySelector('.toast')!; + const instance = new Toast(element, { autohide: false, animation: false }); + element.addEventListener("show.bs.toast", function (e) { + if (!element.innerText.includes("wombat")) { + e.preventDefault(); + } + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.isShown).to.be.false; + expect(instance.element.className).to.not.contain('show'); + }, 51); + }); +}); diff --git a/test/tooltip.test.ts b/test/tooltip.test.ts new file mode 100644 index 00000000..59978332 --- /dev/null +++ b/test/tooltip.test.ts @@ -0,0 +1,594 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { page } from '@vitest/browser/context'; +import getMarkup from "./fixtures/getMarkup"; + +import Tooltip from "../src/components/tooltip"; +import Modal from "../src/components/modal"; +import Offcanvas from "../src/components/offcanvas"; +import Popover from "../src/components/popover"; + +import { changeDirection, removeDirection } from "./fixtures/changeDirection"; +import "./assets/bootstrap.min.css"; + +describe("Tooltip Class Tests", () => { + const wrapper = document.createElement("div"); + document.body.append(wrapper); + + beforeEach(async () => { + wrapper.innerHTML = ""; + const popContainer = document.body.querySelector('.popup-container'); + if (popContainer) popContainer.innerHTML = ''; + }); + afterEach(async () => { + await page.viewport(414, 896); + }); + + it("Init without any parameters - throws error", () => { + const args = []; + try { + // @ts-expect-error + new Tooltip(...args); + } catch (error) { + expect(error).to.be.instanceOf(Error); + expect(error).to.have.property( + "message", + `Tooltip Error: your target is not an instance of HTMLElement.`, + ); + } + }); + + it("Init without content - won't work", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelector( + '[data-test="tooltip"]', + )!; + const instance = Popover.init(element); + + expect(instance.tooltip).to.be.undefined; + expect(instance.arrow).to.be.undefined; + }); + + it("Can do toggle()", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelectorAll( + '[data-test="tooltip"]', + )[1]!; + const instance = new Tooltip(element, { trigger: "manual" }); + expect(instance.element, "element").to.equal(element); + expect(instance.tooltip, "tooltip").to.not.be.undefined; + expect(instance.name, "name").to.eq("Tooltip"); + expect(instance.options, "options").to.not.be.empty; + expect(instance.defaults, "defaults").to.not.be.undefined; + expect(instance.version, "version").to.be.string; + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 101); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 251); + }); + + it("Can do automatic position on scroll / resize", async () => { + await page.viewport(1000, 600); + const container = getMarkup("tooltip"); + Object.assign(container.style, { padding: "10rem 30% 90vh 30%" }); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelectorAll( + '[data-test="tooltip"]', + )[3]!; + const win = element.ownerDocument.defaultView!; + const instance = new Tooltip(element, { placement: "left" }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 101); + + win.scrollTo({ top: 600, behavior: 'instant' }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-start"); + }, 151); + + await page.viewport(200, 600); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-bottom"); + }, 151); + + win.scrollTo({ top: 0, behavior: 'instant' }); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-top"); + }, 151); + + await page.viewport(1000, 600); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-start"); + }, 151); + + // force a top = 0 + await page.viewport(1000, 200); + Object.assign(container.style, { padding: "0rem 30% 0rem 30%" }); + win.dispatchEvent(new Event('resize')); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-start"); + }, 151); + + // force a top = bottom = 0 + await page.viewport(1000, 120); + Object.assign(container.style, { padding: "0rem 30% 0rem 30%" }); + win.dispatchEvent(new Event('resize')); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("bs-tooltip-start"); + }, 151); + }); + + it("Can handle various trigger events", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelectorAll( + '[data-test="tooltip"]', + )[1]!; + const instance = new Tooltip(element, { trigger: "hover focus click" }); + + // HOVER + element.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + element.dispatchEvent(new MouseEvent('mouseleave', { bubbles: true })); + element.dispatchEvent(new MouseEvent('mouseout', { bubbles: true })); + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + + // CLICK + await new Promise(res => setTimeout(res, 151)); + element.click(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + element.click(); + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + + // FOCUS + await new Promise(res => setTimeout(res, 151)); + element.dispatchEvent(new FocusEvent('focusin', { bubbles: true })); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + element.dispatchEvent(new MouseEvent('focusout', { bubbles: true })); + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + }); + + it("Can do toggleEnabled()", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelectorAll( + '[data-test="tooltip"]', + )[1]!; + const instance = new Tooltip(element, { animation: false }); + + expect(instance.enabled).to.be.true; + instance.toggleEnabled(); + expect(instance.enabled).to.be.false + + element.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + + instance.toggleEnabled(); + element.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true })); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + instance.disable(); + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + await new Promise(res => setTimeout(res, 151)); + + instance.dispose(); // code coverage + }); + + it("Can be dismissed when closing an offcanvas", async () => { + const container = getMarkup("offcanvas"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="offcanvas"]'), 200); + const offcanvasTarget = container.querySelectorAll( + '[data-test="offcanvas"]', + )[0]!; + const element = offcanvasTarget.querySelectorAll( + '[data-bs-toggle="tooltip"]', + )[0]!; + const offcanvasInstance = new Offcanvas(offcanvasTarget); + const instance = new Tooltip(element); + + offcanvasInstance.toggle(); + await vi.waitFor(() => { + expect(offcanvasInstance.element.className).to.contain("show"); + }, 151); + await new Promise(res => setTimeout(res, 151)); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + offcanvasInstance.toggle(); + await vi.waitFor(() => { + expect(offcanvasInstance.element.className).to.not.contain("show"); + }, 151); + + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + }); + + it("Can be dismissed when closing an overflowing modal", async () => { + const container = getMarkup("modal"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="modal"]'), 200); + const modalTarget = container.querySelectorAll( + '[data-test="modal"]', + )[0]!; + const element = modalTarget.querySelectorAll( + '[data-bs-toggle="tooltip"]', + )[0]!; + const modalInstance = new Modal(modalTarget); + const instance = new Tooltip(element); + + modalInstance.toggle(); + await vi.waitFor(() => { + expect(modalInstance.element.className).to.contain("show"); + }, 151); + await new Promise(res => setTimeout(res, 151)); + + instance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + modalInstance.toggle(); + await vi.waitFor(() => { + expect(modalInstance.element.className).to.not.contain("show"); + }, 151); + + await new Promise(res => setTimeout(res, 151)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + }); + + it("Can work with popover, template and sanitizeFn", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + + const doc = wrapper.ownerDocument!; + const popoverTarget = doc.createElement("button"); + popoverTarget.className = "btn btn-primary"; + popoverTarget.innerText = "Popover Demo"; + popoverTarget.setAttribute("data-bs-title", "Popover demo title"); + popoverTarget.setAttribute("data-bs-content", "Popover demo content"); + popoverTarget.setAttribute("data-bs-toggle", "popover"); + popoverTarget.setAttribute("data-bs-dismissible", "true"); + doc.querySelector(".btn-toolbar")?.append(popoverTarget); + + const template = doc.createElement("div"); + template.innerHTML = ``; + + const instance = new Popover(popoverTarget, { + template: template.firstChild as HTMLElement, + sanitizeFn: (c) => c.trim(), + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + }); + + it("Can work with popover and micro-template", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('.btn-toolbar'), 200); + + const doc = wrapper.ownerDocument!; + const popoverTarget = doc.createElement("button"); + popoverTarget.className = "btn btn-primary"; + popoverTarget.innerText = "Popover Demo"; + popoverTarget.setAttribute("data-bs-toggle", "popover"); + popoverTarget.setAttribute("data-bs-dismissible", "true"); + doc.querySelector(".btn-toolbar")?.append(popoverTarget); + const title = doc.createElement("div"); + title.innerHTML = + `My Header Micro-Template`; + const content = doc.createElement("div"); + content.innerHTML = + `

My Content Micro-Template

`; + const btnClose = doc.createElement("div"); + btnClose.innerHTML = + ''; + + const instance = new Popover(popoverTarget, { + title: title.firstChild as HTMLElement, + content: content.firstChild as HTMLElement, + btnClose: btnClose.firstChild as HTMLElement, + customClass: "custom-class", + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + }); + + it("Can be dismissed via touch events", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + const element = container.querySelectorAll('[data-test="tooltip"]')[1]!; + + const instance = Tooltip.init(element); + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + container.dispatchEvent(new TouchEvent('touchstart', { bubbles: true })); + container.dispatchEvent(new TouchEvent('touchend', { bubbles: true })); + await new Promise(res => setTimeout(res, 101)); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 151); + }); + + it("Can work with popover without title 1", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + const doc = wrapper.ownerDocument!; + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + + const popoverTarget = doc.createElement("button"); + popoverTarget.className = "btn btn-primary"; + popoverTarget.innerText = "Popover Demo"; + popoverTarget.setAttribute("data-bs-toggle", "popover"); + popoverTarget.setAttribute("data-bs-dismissible", "true"); + doc.querySelector(".btn-toolbar")?.append(popoverTarget); + + const instance = new Popover(popoverTarget, { + content: + `

My Content Micro-Template

`, + btnClose: + '', + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + }); + + it("Can work with popover without title 2", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + const doc = wrapper.ownerDocument!; + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + + const popoverTarget = doc.createElement("button"); + popoverTarget.className = "btn btn-primary"; + popoverTarget.innerText = "Popover Demo"; + popoverTarget.setAttribute("data-bs-toggle", "popover"); + popoverTarget.setAttribute("data-bs-dismissible", "true"); + doc.querySelector(".btn-toolbar")?.append(popoverTarget); + const btnClose = doc.createElement("div"); + btnClose.innerHTML = + ''; + + const instance = new Popover(popoverTarget, { + content: + `

My Content Micro-Template

`, + btnClose: btnClose.firstElementChild as HTMLElement, + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + }); + + it("Can work with RTL", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + const doc = wrapper.ownerDocument!; + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + changeDirection(wrapper, "rtl"); // added template without tooltip class for coverage + + const element = container.querySelectorAll('[data-bs-toggle="tooltip"]')[1]!; + const instance = new Tooltip(element, { + template: + '
', + }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + instance.dispose(); + removeDirection(element); + }); + + it("Can do custom events", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + const doc = wrapper.ownerDocument!; + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + + const element = container.querySelector('[data-test="tooltip"]')!; + const eventListener = (e: Event) => { + if (!element.innerText.includes("wombat")) { + e.preventDefault(); + } + }; + + const instance = new Tooltip(element, { title: "Sample Title 1" }); + element.addEventListener("hide.bs.tooltip", eventListener as EventListener); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 101); + + instance.hide(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 151); + + element.removeEventListener("hide.bs.tooltip", eventListener as EventListener); + + await new Promise(res => setTimeout(res, 251)); + element.addEventListener("show.bs.tooltip", eventListener as EventListener); + const newInstance = new Tooltip(element, { title: "Sample Title 2" }); + + newInstance.toggle(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.not.contain("show"); + }, 101); + + element.removeEventListener("show.bs.tooltip", eventListener as EventListener); + instance.dispose(); + }); + + it("Can handle small devices", async () => { + await page.viewport(800, 150); + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + Object.assign(container.style, { padding: "5rem" }); + + const element = container.querySelectorAll('[data-test="tooltip"]')[1]!; + // horizontal + const instance = new Tooltip(element, { placement: "left" }); + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 101); + instance.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance1 = new Tooltip(element, { placement: "right" }); + + instance1.show(); + await vi.waitFor(() => { + expect(instance1.tooltip?.className).to.contain("show"); + }, 101); + instance1.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance2 = new Tooltip(element, { placement: "top" }); + + instance2.show(); + await vi.waitFor(() => { + expect(instance2.tooltip?.className).to.contain("show"); + }, 101); + instance2.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance3 = new Tooltip(element, { placement: "bottom" }); + + instance3.show(); + await vi.waitFor(() => { + expect(instance3.tooltip?.className).to.contain("show"); + }, 101); + instance3.dispose(); + + // vertical + await page.viewport(150, 800); + await new Promise(res => setTimeout(res, 251)); + const instance4 = new Tooltip(element, { placement: "left" }); + instance4.show(); + await vi.waitFor(() => { + expect(instance4.tooltip?.className).to.contain("show"); + }, 101); + instance4.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance5 = new Tooltip(element, { placement: "right" }); + + instance5.show(); + await vi.waitFor(() => { + expect(instance5.tooltip?.className).to.contain("show"); + }, 101); + instance5.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance6 = new Tooltip(element, { placement: "top" }); + + instance6.show(); + await vi.waitFor(() => { + expect(instance6.tooltip?.className).to.contain("show"); + }, 101); + instance6.dispose(); + + await new Promise(res => setTimeout(res, 251)); + const instance7 = new Tooltip(element, { placement: "bottom" }); + + instance7.show(); + await vi.waitFor(() => { + expect(instance7.tooltip?.className).to.contain("show"); + }, 101); + instance7.dispose(); + // is this correct config? + + }); + + it("Can dispose()", async () => { + const container = getMarkup("tooltip"); + wrapper.append(container); + await vi.waitFor(() => container.querySelector('[data-test="tooltip"]'), 200); + + const element = container.querySelector('[data-test="tooltip"]')!; + const instance = new Tooltip(element, { title: "Sample Content" }); + + instance.show(); + await vi.waitFor(() => { + expect(instance.tooltip?.className).to.contain("show"); + }, 101); + + await new Promise(res => setTimeout(res, 251)); + instance.dispose(); + await vi.waitFor(() => { + expect(instance.tooltip).to.be.undefined; + expect(instance.element).to.be.undefined; + expect(Tooltip.getInstance(element)).to.be.null; + }, 101); + }); +}); diff --git a/vite.config.components.ts b/vite.config.components.mts similarity index 100% rename from vite.config.components.ts rename to vite.config.components.mts diff --git a/vite.config.ts b/vite.config.mts similarity index 100% rename from vite.config.ts rename to vite.config.mts diff --git a/vitest.config-ui.mts b/vitest.config-ui.mts new file mode 100644 index 00000000..217d4945 --- /dev/null +++ b/vitest.config-ui.mts @@ -0,0 +1,32 @@ +import { defineConfig } from "vitest/config"; +import { resolve } from 'node:path'; + +export default defineConfig({ + resolve: { + alias: { + "~": resolve(__dirname, "src"), + }, + }, + optimizeDeps: { + include: [ + "@vitest/coverage-istanbul" + ] + }, + test: { + css: true, + globals: true, + coverage: { + provider: "istanbul", + reporter: ["html", "text", "lcov"], + enabled: true, + include: ["src/**/*.{ts,tsx}"], + exclude: ["src/util/init.ts"], + }, + browser: { + // provider: 'webdriverio', // or 'webdriverio' + enabled: true, + headless: false, + name: 'chromium', // browser name is required + }, + }, +}); diff --git a/vitest.config.mts b/vitest.config.mts new file mode 100644 index 00000000..2fa1ce3b --- /dev/null +++ b/vitest.config.mts @@ -0,0 +1,32 @@ +import { defineConfig } from "vitest/config"; +import { resolve } from 'node:path'; + +export default defineConfig({ + resolve: { + alias: { + "~": resolve(__dirname, "src"), + }, + }, + optimizeDeps: { + include: [ + "@vitest/coverage-istanbul" + ] + }, + test: { + css: true, + globals: true, + coverage: { + provider: "istanbul", + reporter: ["html", "text", "lcov"], + enabled: true, + include: ["src/**/*.{ts,tsx}"], + exclude: ["src/util/init.ts"], + }, + browser: { + provider: 'playwright', // or 'webdriverio' + enabled: true, + headless: true, + name: 'chromium', // browser name is required + }, + }, +});