From 7e4626ba3a74c1ac3cbb46b774907228cd6f2ab0 Mon Sep 17 00:00:00 2001 From: David Jerleke Date: Sun, 7 Jan 2024 12:26:06 +0100 Subject: [PATCH 01/13] 8.0.0-rc19 --- .github/workflows/cd.yml | 2 +- package.json | 6 +-- .../embla-carousel-auto-height/package.json | 4 +- packages/embla-carousel-autoplay/package.json | 4 +- .../embla-carousel-class-names/package.json | 4 +- packages/embla-carousel-docs/package.json | 8 +-- packages/embla-carousel-react/package.json | 6 +-- .../package.json | 4 +- packages/embla-carousel-solid/package.json | 6 +-- packages/embla-carousel-svelte/package.json | 6 +-- packages/embla-carousel-vue/package.json | 6 +-- packages/embla-carousel/package.json | 2 +- .../package.json | 4 +- .../package.json | 6 +-- .../package.json | 4 +- yarn.lock | 50 +++++++++---------- 16 files changed, 61 insertions(+), 61 deletions(-) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 1b3962c8a..1e2528438 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -25,6 +25,6 @@ jobs: run: yarn build - name: NPM PKG Publish 🎉 - run: yarn workspaces foreach -t --exclude '{embla-carousel-monorepo,embla-carousel-docs,embla-carousel-playground-vanilla,embla-carousel-playground-react}' npm publish + run: yarn workspaces foreach -t --exclude '{embla-carousel-monorepo,embla-carousel-docs,embla-carousel-playground-vanilla,embla-carousel-playground-react,embla-carousel-playground-solid}' npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index e6fb601ea..20fdd965e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-monorepo", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "private": true, "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", @@ -29,6 +29,8 @@ "playgrounds/embla-carousel-playground-solid" ], "scripts": { + "eslint:report": "yarn workspaces foreach -v --exclude \"{embla-carousel-monorepo,embla-carousel-playground-vanilla,embla-carousel-playground-react}\" run eslint:report", + "prettier:report": "prettier \"**/*.{js,jsx,tsx,ts,scss,json}\" --check", "lint": "npm-run-all prettier:report eslint:report", "format": "prettier \"**/*.{js,jsx,tsx,ts,scss,json}\" --write", "test": "yarn workspaces foreach -v --exclude \"{embla-carousel-monorepo,embla-carousel-playground-vanilla,embla-carousel-playground-react}\" run test", @@ -46,8 +48,6 @@ "build:packages": "yarn workspaces foreach -vt --exclude \"{embla-carousel-monorepo,embla-carousel-playground-vanilla,embla-carousel-playground-react}\" run build", "build:package-readmes": "npx ts-node --project scripts/tsconfig.node.json scripts/create-readmes/index.ts --templatePath=scripts/create-readmes/readme-template.md", "build:docs": "yarn workspace embla-carousel-docs run predeploy", - "eslint:report": "yarn workspaces foreach -v --exclude \"{embla-carousel-monorepo,embla-carousel-playground-vanilla,embla-carousel-playground-react}\" run eslint:report", - "prettier:report": "prettier \"**/*.{js,jsx,tsx,ts,scss,json}\" --check", "version:patch": "yarn workspaces foreach version patch && yarn version:push", "version:minor": "yarn workspaces foreach version minor && yarn version:push", "version:major": "yarn workspaces foreach version major && yarn version:push", diff --git a/packages/embla-carousel-auto-height/package.json b/packages/embla-carousel-auto-height/package.json index 299e3d3aa..ae793111d 100644 --- a/packages/embla-carousel-auto-height/package.json +++ b/packages/embla-carousel-auto-height/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-auto-height", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "An auto height plugin for Embla Carousel", "repository": { @@ -59,7 +59,7 @@ "typescript": "^5.2.2" }, "peerDependencies": { - "embla-carousel": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19" }, "exports": { "./package.json": "./package.json", diff --git a/packages/embla-carousel-autoplay/package.json b/packages/embla-carousel-autoplay/package.json index a550b4637..b7d075008 100644 --- a/packages/embla-carousel-autoplay/package.json +++ b/packages/embla-carousel-autoplay/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-autoplay", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "An autoplay plugin for Embla Carousel", "repository": { @@ -59,7 +59,7 @@ "typescript": "^5.2.2" }, "peerDependencies": { - "embla-carousel": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19" }, "exports": { "./package.json": "./package.json", diff --git a/packages/embla-carousel-class-names/package.json b/packages/embla-carousel-class-names/package.json index cbd49180d..1c36d175f 100644 --- a/packages/embla-carousel-class-names/package.json +++ b/packages/embla-carousel-class-names/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-class-names", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A class name toggle plugin for Embla Carousel", "repository": { @@ -59,7 +59,7 @@ "typescript": "^5.2.2" }, "peerDependencies": { - "embla-carousel": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19" }, "exports": { "./package.json": "./package.json", diff --git a/packages/embla-carousel-docs/package.json b/packages/embla-carousel-docs/package.json index d5400a482..d9fbcf19c 100644 --- a/packages/embla-carousel-docs/package.json +++ b/packages/embla-carousel-docs/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-docs", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { @@ -38,9 +38,9 @@ "@mdx-js/react": "^2.2.1", "babel-plugin-styled-components": "^2.0.2", "codesandbox": "^2.2.3", - "embla-carousel-autoplay": "8.0.0-rc18", - "embla-carousel-class-names": "8.0.0-rc18", - "embla-carousel-react": "8.0.0-rc18", + "embla-carousel-autoplay": "8.0.0-rc19", + "embla-carousel-class-names": "8.0.0-rc19", + "embla-carousel-react": "8.0.0-rc19", "focus-trap-react": "^8.10.0", "gatsby": "^5.5.0", "gatsby-plugin-layout": "^4.4.0", diff --git a/packages/embla-carousel-react/package.json b/packages/embla-carousel-react/package.json index e36505203..2eacda8eb 100644 --- a/packages/embla-carousel-react/package.json +++ b/packages/embla-carousel-react/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-react", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { @@ -60,8 +60,8 @@ "typescript": "^5.2.2" }, "dependencies": { - "embla-carousel": "8.0.0-rc18", - "embla-carousel-reactive-utils": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19", + "embla-carousel-reactive-utils": "8.0.0-rc19" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0" diff --git a/packages/embla-carousel-reactive-utils/package.json b/packages/embla-carousel-reactive-utils/package.json index cabcd4540..c9353475c 100644 --- a/packages/embla-carousel-reactive-utils/package.json +++ b/packages/embla-carousel-reactive-utils/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-reactive-utils", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "Reactive utilities for Embla Carousel", "repository": { @@ -59,7 +59,7 @@ "typescript": "^5.2.2" }, "peerDependencies": { - "embla-carousel": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19" }, "exports": { "./package.json": "./package.json", diff --git a/packages/embla-carousel-solid/package.json b/packages/embla-carousel-solid/package.json index 8912cf2ca..acbbc07ff 100644 --- a/packages/embla-carousel-solid/package.json +++ b/packages/embla-carousel-solid/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-solid", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "Liam Martens", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { @@ -60,8 +60,8 @@ "typescript": "^5.2.2" }, "dependencies": { - "embla-carousel": "8.0.0-rc18", - "embla-carousel-reactive-utils": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19", + "embla-carousel-reactive-utils": "8.0.0-rc19" }, "peerDependencies": { "solid-js": "^1.0.0" diff --git a/packages/embla-carousel-svelte/package.json b/packages/embla-carousel-svelte/package.json index 4e6b76f1f..a3bce7705 100644 --- a/packages/embla-carousel-svelte/package.json +++ b/packages/embla-carousel-svelte/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-svelte", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { @@ -60,8 +60,8 @@ "typescript": "^5.2.2" }, "dependencies": { - "embla-carousel": "8.0.0-rc18", - "embla-carousel-reactive-utils": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19", + "embla-carousel-reactive-utils": "8.0.0-rc19" }, "peerDependencies": { "svelte": "^3.49.0 || ^4.0.0" diff --git a/packages/embla-carousel-vue/package.json b/packages/embla-carousel-vue/package.json index 803d18c62..c6f5a855e 100644 --- a/packages/embla-carousel-vue/package.json +++ b/packages/embla-carousel-vue/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel-vue", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { @@ -60,8 +60,8 @@ "vue": "^3.2.37" }, "dependencies": { - "embla-carousel": "8.0.0-rc18", - "embla-carousel-reactive-utils": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19", + "embla-carousel-reactive-utils": "8.0.0-rc19" }, "peerDependencies": { "vue": "^3.2.37" diff --git a/packages/embla-carousel/package.json b/packages/embla-carousel/package.json index 5c8955131..207716be4 100644 --- a/packages/embla-carousel/package.json +++ b/packages/embla-carousel/package.json @@ -1,6 +1,6 @@ { "name": "embla-carousel", - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "author": "David Jerleke", "description": "A lightweight carousel library with fluid motion and great swipe precision", "repository": { diff --git a/playgrounds/embla-carousel-playground-react/package.json b/playgrounds/embla-carousel-playground-react/package.json index 022a57cdb..d5dd98771 100644 --- a/playgrounds/embla-carousel-playground-react/package.json +++ b/playgrounds/embla-carousel-playground-react/package.json @@ -1,7 +1,7 @@ { "name": "embla-carousel-playground-react", "private": true, - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "type": "module", "scripts": { "dev": "vite", @@ -9,7 +9,7 @@ "test": "echo \"Info: no tests specified\" && exit 0" }, "dependencies": { - "embla-carousel-react": "8.0.0-rc18", + "embla-carousel-react": "8.0.0-rc19", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.4.3" diff --git a/playgrounds/embla-carousel-playground-solid/package.json b/playgrounds/embla-carousel-playground-solid/package.json index 4b5dbd80a..59f35e0c3 100644 --- a/playgrounds/embla-carousel-playground-solid/package.json +++ b/playgrounds/embla-carousel-playground-solid/package.json @@ -1,7 +1,7 @@ { "name": "embla-carousel-playground-solid", "private": true, - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "type": "module", "scripts": { "dev": "vite", @@ -9,8 +9,8 @@ "test": "echo \"Info: no tests specified\" && exit 0" }, "dependencies": { - "embla-carousel-autoplay": "8.0.0-rc18", - "embla-carousel-solid": "8.0.0-rc18", + "embla-carousel-autoplay": "8.0.0-rc19", + "embla-carousel-solid": "8.0.0-rc19", "solid-js": "^1.8.0" }, "devDependencies": { diff --git a/playgrounds/embla-carousel-playground-vanilla/package.json b/playgrounds/embla-carousel-playground-vanilla/package.json index e4842d1c9..2f962951b 100644 --- a/playgrounds/embla-carousel-playground-vanilla/package.json +++ b/playgrounds/embla-carousel-playground-vanilla/package.json @@ -1,7 +1,7 @@ { "name": "embla-carousel-playground-vanilla", "private": true, - "version": "8.0.0-rc18", + "version": "8.0.0-rc19", "type": "module", "scripts": { "dev": "vite", @@ -9,7 +9,7 @@ "test": "echo \"Info: no tests specified\" && exit 0" }, "dependencies": { - "embla-carousel": "8.0.0-rc18" + "embla-carousel": "8.0.0-rc19" }, "devDependencies": { "typescript": "^4.6.4", diff --git a/yarn.lock b/yarn.lock index 6d49d76f0..1a16784d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8739,11 +8739,11 @@ __metadata: ts-jest: ^29.1.1 typescript: ^5.2.2 peerDependencies: - embla-carousel: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 languageName: unknown linkType: soft -"embla-carousel-autoplay@8.0.0-rc18, embla-carousel-autoplay@workspace:packages/embla-carousel-autoplay": +"embla-carousel-autoplay@8.0.0-rc19, embla-carousel-autoplay@workspace:packages/embla-carousel-autoplay": version: 0.0.0-use.local resolution: "embla-carousel-autoplay@workspace:packages/embla-carousel-autoplay" dependencies: @@ -8760,11 +8760,11 @@ __metadata: ts-jest: ^29.1.1 typescript: ^5.2.2 peerDependencies: - embla-carousel: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 languageName: unknown linkType: soft -"embla-carousel-class-names@8.0.0-rc18, embla-carousel-class-names@workspace:packages/embla-carousel-class-names": +"embla-carousel-class-names@8.0.0-rc19, embla-carousel-class-names@workspace:packages/embla-carousel-class-names": version: 0.0.0-use.local resolution: "embla-carousel-class-names@workspace:packages/embla-carousel-class-names" dependencies: @@ -8781,7 +8781,7 @@ __metadata: ts-jest: ^29.1.1 typescript: ^5.2.2 peerDependencies: - embla-carousel: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 languageName: unknown linkType: soft @@ -8804,9 +8804,9 @@ __metadata: "@typescript-eslint/parser": ^6.9.0 babel-plugin-styled-components: ^2.0.2 codesandbox: ^2.2.3 - embla-carousel-autoplay: 8.0.0-rc18 - embla-carousel-class-names: 8.0.0-rc18 - embla-carousel-react: 8.0.0-rc18 + embla-carousel-autoplay: 8.0.0-rc19 + embla-carousel-class-names: 8.0.0-rc19 + embla-carousel-react: 8.0.0-rc19 eslint: ^8.52.0 eslint-config-prettier: ^9.0.0 eslint-plugin-prettier: ^4.0.0 @@ -8866,7 +8866,7 @@ __metadata: "@types/react": ^18.0.22 "@types/react-dom": ^18.0.7 "@vitejs/plugin-react": ^2.2.0 - embla-carousel-react: 8.0.0-rc18 + embla-carousel-react: 8.0.0-rc19 react: ^18.2.0 react-dom: ^18.2.0 react-router-dom: ^6.4.3 @@ -8879,8 +8879,8 @@ __metadata: version: 0.0.0-use.local resolution: "embla-carousel-playground-solid@workspace:playgrounds/embla-carousel-playground-solid" dependencies: - embla-carousel-autoplay: 8.0.0-rc18 - embla-carousel-solid: 8.0.0-rc18 + embla-carousel-autoplay: 8.0.0-rc19 + embla-carousel-solid: 8.0.0-rc19 solid-js: ^1.8.0 vite: ^5.0.10 vite-plugin-solid: ^2.8.0 @@ -8891,13 +8891,13 @@ __metadata: version: 0.0.0-use.local resolution: "embla-carousel-playground-vanilla@workspace:playgrounds/embla-carousel-playground-vanilla" dependencies: - embla-carousel: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 typescript: ^4.6.4 vite: ^3.2.7 languageName: unknown linkType: soft -"embla-carousel-react@8.0.0-rc18, embla-carousel-react@workspace:packages/embla-carousel-react": +"embla-carousel-react@8.0.0-rc19, embla-carousel-react@workspace:packages/embla-carousel-react": version: 0.0.0-use.local resolution: "embla-carousel-react@workspace:packages/embla-carousel-react" dependencies: @@ -8905,8 +8905,8 @@ __metadata: "@types/react": ^18.0.8 "@typescript-eslint/eslint-plugin": ^6.9.0 "@typescript-eslint/parser": ^6.9.0 - embla-carousel: 8.0.0-rc18 - embla-carousel-reactive-utils: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 + embla-carousel-reactive-utils: 8.0.0-rc19 eslint: ^8.52.0 eslint-config-prettier: ^9.0.0 eslint-plugin-prettier: ^4.0.0 @@ -8921,7 +8921,7 @@ __metadata: languageName: unknown linkType: soft -"embla-carousel-reactive-utils@8.0.0-rc18, embla-carousel-reactive-utils@workspace:packages/embla-carousel-reactive-utils": +"embla-carousel-reactive-utils@8.0.0-rc19, embla-carousel-reactive-utils@workspace:packages/embla-carousel-reactive-utils": version: 0.0.0-use.local resolution: "embla-carousel-reactive-utils@workspace:packages/embla-carousel-reactive-utils" dependencies: @@ -8938,19 +8938,19 @@ __metadata: ts-jest: ^29.1.1 typescript: ^5.2.2 peerDependencies: - embla-carousel: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 languageName: unknown linkType: soft -"embla-carousel-solid@8.0.0-rc18, embla-carousel-solid@workspace:packages/embla-carousel-solid": +"embla-carousel-solid@8.0.0-rc19, embla-carousel-solid@workspace:packages/embla-carousel-solid": version: 0.0.0-use.local resolution: "embla-carousel-solid@workspace:packages/embla-carousel-solid" dependencies: "@types/jest": ^29.5.6 "@typescript-eslint/eslint-plugin": ^6.9.0 "@typescript-eslint/parser": ^6.9.0 - embla-carousel: 8.0.0-rc18 - embla-carousel-reactive-utils: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 + embla-carousel-reactive-utils: 8.0.0-rc19 eslint: ^8.52.0 eslint-config-prettier: ^9.0.0 eslint-plugin-prettier: ^4.0.0 @@ -8973,8 +8973,8 @@ __metadata: "@types/jest": ^29.5.6 "@typescript-eslint/eslint-plugin": ^6.9.0 "@typescript-eslint/parser": ^6.9.0 - embla-carousel: 8.0.0-rc18 - embla-carousel-reactive-utils: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 + embla-carousel-reactive-utils: 8.0.0-rc19 eslint: ^8.52.0 eslint-config-prettier: ^9.0.0 eslint-plugin-prettier: ^4.0.0 @@ -8997,8 +8997,8 @@ __metadata: "@types/jest": ^29.5.6 "@typescript-eslint/eslint-plugin": ^6.9.0 "@typescript-eslint/parser": ^6.9.0 - embla-carousel: 8.0.0-rc18 - embla-carousel-reactive-utils: 8.0.0-rc18 + embla-carousel: 8.0.0-rc19 + embla-carousel-reactive-utils: 8.0.0-rc19 eslint: ^8.52.0 eslint-config-prettier: ^9.0.0 eslint-plugin-prettier: ^4.0.0 @@ -9014,7 +9014,7 @@ __metadata: languageName: unknown linkType: soft -"embla-carousel@8.0.0-rc18, embla-carousel@workspace:packages/embla-carousel": +"embla-carousel@8.0.0-rc19, embla-carousel@workspace:packages/embla-carousel": version: 0.0.0-use.local resolution: "embla-carousel@workspace:packages/embla-carousel" dependencies: From 9f464f46be9eb1625cfc73125c6b677f6ce43e68 Mon Sep 17 00:00:00 2001 From: David Jerleke Date: Sun, 7 Jan 2024 12:56:48 +0100 Subject: [PATCH 02/13] Build docs for v8.0.0-rc19. --- README.md | 72 ++- docs/404.html | 4 +- docs/404/index.html | 4 +- ...721fca69c239d75f0-15801db6452422d7955b.js} | 4 +- ...fca69c239d75f0-15801db6452422d7955b.js.map | 1 + ...fca69c239d75f0-98783272c6aa402222bd.js.map | 1 - docs/_gatsby/slices/_gatsby-scripts-1.html | 4 +- docs/api/events/index.html | 18 +- docs/api/index.html | 6 +- docs/api/methods/index.html | 12 +- docs/api/options/index.html | 18 +- docs/api/plugins/index.html | 36 +- docs/app-81af606d6c416f4b9246.js | 3 - docs/app-81af606d6c416f4b9246.js.map | 1 - docs/app-e8b342d4cdd1564d5d29.js | 3 + ...> app-e8b342d4cdd1564d5d29.js.LICENSE.txt} | 0 docs/app-e8b342d4cdd1564d5d29.js.map | 1 + docs/chunk-map.json | 2 +- ...-started-solid-mdx-3c93b33137172077748d.js | 2 + ...rted-solid-mdx-3c93b33137172077748d.js.map | 1 + docs/examples/generator/index.html | 6 +- docs/examples/index.html | 6 +- docs/examples/predefined/index.html | 6 +- docs/get-started/cdn/index.html | 8 +- docs/get-started/index.html | 8 +- docs/get-started/module/index.html | 10 +- docs/get-started/react/index.html | 10 +- docs/get-started/solid/index.html | 585 ++++++++++++++++++ docs/get-started/svelte/index.html | 12 +- docs/get-started/vue/index.html | 10 +- docs/guides/breakpoints/index.html | 6 +- docs/guides/index.html | 6 +- .../previous-and-next-buttons/index.html | 6 +- docs/guides/slide-container/index.html | 6 +- docs/guides/slide-gaps/index.html | 6 +- docs/guides/slide-sizes/index.html | 6 +- docs/index.html | 6 +- docs/page-data/app-data.json | 2 +- docs/page-data/get-started/cdn/page-data.json | 2 +- .../get-started/solid/page-data.json | 1 + .../get-started/svelte/page-data.json | 2 +- docs/page-data/guides/page-data.json | 2 +- docs/page-data/sq/d/388772440.json | 2 +- docs/page-data/sq/d/4025401718.json | 2 +- docs/plugins/auto-height/index.html | 8 +- docs/plugins/autoplay/index.html | 6 +- docs/plugins/class-names/index.html | 8 +- docs/plugins/index.html | 6 +- docs/plugins/wheel-gestures/index.html | 8 +- docs/sitemap-0.xml | 2 +- docs/solid-logo.svg | 1 + docs/webpack-runtime-5b956d7d534a5eb0666d.js | 2 + ...ebpack-runtime-5b956d7d534a5eb0666d.js.map | 1 + docs/webpack-runtime-afe46ff373c8450a370a.js | 2 - ...ebpack-runtime-afe46ff373c8450a370a.js.map | 1 - docs/webpack.stats.json | 2 +- packages/embla-carousel-auto-height/README.md | 72 ++- packages/embla-carousel-autoplay/README.md | 72 ++- packages/embla-carousel-class-names/README.md | 72 ++- packages/embla-carousel-docs/README.md | 72 ++- packages/embla-carousel-react/README.md | 72 ++- .../embla-carousel-reactive-utils/README.md | 72 ++- packages/embla-carousel-solid/README.md | 74 ++- packages/embla-carousel-svelte/README.md | 72 ++- packages/embla-carousel-vue/README.md | 72 ++- packages/embla-carousel/README.md | 72 ++- 66 files changed, 1178 insertions(+), 500 deletions(-) rename docs/{8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js => 8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js} (81%) create mode 100644 docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js.map delete mode 100644 docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js.map delete mode 100644 docs/app-81af606d6c416f4b9246.js delete mode 100644 docs/app-81af606d6c416f4b9246.js.map create mode 100644 docs/app-e8b342d4cdd1564d5d29.js rename docs/{app-81af606d6c416f4b9246.js.LICENSE.txt => app-e8b342d4cdd1564d5d29.js.LICENSE.txt} (100%) create mode 100644 docs/app-e8b342d4cdd1564d5d29.js.map create mode 100644 docs/component---src-templates-default-tsx-content-file-path-users-davidjerleke-sites-embla-carousel-packages-embla-carousel-docs-src-content-pages-get-started-solid-mdx-3c93b33137172077748d.js create mode 100644 docs/component---src-templates-default-tsx-content-file-path-users-davidjerleke-sites-embla-carousel-packages-embla-carousel-docs-src-content-pages-get-started-solid-mdx-3c93b33137172077748d.js.map create mode 100644 docs/get-started/solid/index.html create mode 100644 docs/page-data/get-started/solid/page-data.json create mode 100644 docs/solid-logo.svg create mode 100644 docs/webpack-runtime-5b956d7d534a5eb0666d.js create mode 100644 docs/webpack-runtime-5b956d7d534a5eb0666d.js.map delete mode 100644 docs/webpack-runtime-afe46ff373c8450a370a.js delete mode 100644 docs/webpack-runtime-afe46ff373c8450a370a.js.map diff --git a/README.md b/README.md index 578cf3bf2..7f5a17377 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,10 @@ +   + + +

@@ -91,44 +95,48 @@ - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

diff --git a/docs/404.html b/docs/404.html index 70bb5f34f..46e7587c1 100644 --- a/docs/404.html +++ b/docs/404.html @@ -189,6 +189,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/404/index.html b/docs/404/index.html index 28510834f..f2a4803b4 100644 --- a/docs/404/index.html +++ b/docs/404/index.html @@ -189,6 +189,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js b/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js similarity index 81% rename from docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js rename to docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js index f3f9c1a26..206213bd0 100644 --- a/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js +++ b/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js @@ -1,2 +1,2 @@ -(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5295],{8945:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6954);t.getParameters=function(e){return t=JSON.stringify(e),r.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},3302:function(e,t,n){"use strict";t.Z=void 0;var r=n(8945);t.Z=r.getParameters},5108:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},5153:function(e,t,n){"use strict";n.d(t,{$2:function(){return d},FT:function(){return y},LW:function(){return u},U6:function(){return x},b5:function(){return p},eC:function(){return _},jY:function(){return m},qn:function(){return l},tc:function(){return h},yX:function(){return f}});var r=n(1508),i=n(1195),o=n(2717),a=n(3792),s=n(2715),c=n(9939);const l="19rem",u="9rem",d="0.8rem",p="22.2rem",f="1rem",m="1.6rem",_=s.X.BOX,g=(0,i.css)(["position:relative;","{border-radius:",";}&:after{z-index:",";content:'';pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;","{border:"," solid ",";}","{border-top:"," solid ",";border-bottom:"," solid ",";}}"],o.iD.MIN_XS,_,c.k.STEP,o.iD.MIN_XS,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST,o.iD.MAX_XS,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST),b=(0,i.css)(["",";",";background-color:",";"],r.n,g,a.DM.BACKGROUND_CODE),h=(0,i.css)(["",";height:calc("," + "," * 2);"],b,l,m),x=(0,i.css)(["",";height:calc( "," + "," + "," + "," * 2 );"],b,l,u,d,m),y=(0,i.css)(["",";",";height:",";background-color:",";padding-left:",";padding-right:",";touch-action:none;"],r.n,g,p,a.DM.BACKGROUND_CODE,m,m)},149:function(e,t,n){"use strict";n.d(t,{GW:function(){return D},Wd:function(){return A},el:function(){return L},ep:function(){return C},f2:function(){return _},gt:function(){return M},jQ:function(){return I},jZ:function(){return k},k2:function(){return R},mz:function(){return O},s7:function(){return B},xf:function(){return g},zg:function(){return N}});var r=n(1195),i=n(9939),o=n(3792),a=n(2715),s=n(2717),c=n(727),l=n(2829),u=n(6732),d=n(4097),p=n(5153);const f=(0,r.css)([".embla{--slide-spacing:__replace_axis_spacing_amount__;--slide-size:__replace_slide_size__;--slide-height:",";padding:",";}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}.embla__slide{flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);position:relative;}.embla__slide__img{display:block;height:__replace_image_height__;width:100%;object-fit:cover;}.embla__slide__number{"," z-index:",";position:absolute;top:__replace_axis_slide_number_spacing__;right:0.6rem;border-radius:",";background-color:rgba(",",0.85);line-height:4.6rem;font-weight:",";text-align:center;pointer-events:none;}.embla__slide__number > span{"," font-size:1.6rem;display:block;position:absolute;top:0;left:0;right:0;bottom:0;}"],p.qn,p.jY,(0,l.x)("4.6rem"),i.k.STEP,a.X.CIRCLE,o.DM.BACKGROUND_SITE_RGB_VALUE,c.X.BLACK,d.V),m=(0,r.css)([".embla__slide:nth-child(1){flex:0 0 60%;}.embla__slide:nth-child(2){flex:0 0 40%;}.embla__slide:nth-child(3){flex:0 0 30%;}.embla__slide:nth-child(4){flex:0 0 90%;}.embla__slide:nth-child(5){flex:0 0 35%;}.embla__slide:nth-child(6){flex:0 0 55%;}.embla__slide:nth-child(7){flex:0 0 85%;}.embla__slide:nth-child(8){flex:0 0 46%;}.embla__slide:nth-child(9){flex:0 0 30%;}"]),_=(0,r.css)([".embla__button{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;}.embla__buttons{display:flex;align-items:center;position:absolute;top:50%;transform:translateY(-50%);left:__replace_axis_arrows_position__;__replace_axis_arrows__}.embla__button{z-index:",";color:",";display:flex;align-items:center;justify-content:center;cursor:pointer;","}.embla__button:disabled{opacity:0.3;}.embla__button__svg{","}"],i.k.STEP,o.DM.BACKGROUND_SITE,(0,l.x)("4rem"),(0,l.x)("65%")),g=(0,r.css)([".embla__dot{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;}.embla__dots{z-index:",";bottom:",";position:absolute;left:0;right:0;display:flex;justify-content:center;align-items:center;}.embla__dot{"," display:flex;align-items:center;margin-right:0.75rem;margin-left:0.75rem;}.embla__dot:after{background:",";border-radius:",";width:100%;height:0.3rem;content:'';}.embla__dot--selected:after{background:",";}"],i.k.STEP,p.jY,(0,l.x)("2.4rem"),o.DM.BACKGROUND_SITE,a.X.LINE,"linear-gradient(45deg, "+o.DM.BRAND_PRIMARY+", "+o.DM.BRAND_SECONDARY+")"),b=(0,r.css)([""," ",""],_,g),h=(0,r.css)([".embla-thumbs{--thumbs-slide-spacing:",";--thumbs-slide-height:",";margin-top:var(--thumbs-slide-spacing);}.embla-thumbs__viewport{overflow:hidden;}.embla-thumbs__container{display:flex;flex-direction:row;margin-left:calc(var(--thumbs-slide-spacing) * -1);}.embla-thumbs__slide{flex:0 0 28%;min-__replace-axis-size__:0;padding-left:var(--thumbs-slide-spacing);position:relative;}","{.embla-thumbs__slide{flex:0 0 18%;}}.embla-thumbs__slide__button{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:block;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;width:100%;opacity:0.2;transition:opacity 0.2s;}.embla-thumbs__slide--selected .embla-thumbs__slide__button{opacity:1;}.embla-thumbs__slide__img{display:block;height:var(--thumbs-slide-height);width:100%;object-fit:cover;}.embla-thumbs__slide__number{"," z-index:",";position:absolute;top:0.3rem;right:0.3rem;border-radius:",";background-color:rgba(",",0.85);line-height:3rem;font-weight:",";text-align:center;pointer-events:none;}.embla-thumbs__slide__number > span{"," font-size:1.4rem;display:block;position:absolute;top:0;left:0;right:0;bottom:0;}"],p.$2,p.LW,s.iD.MIN_XS,(0,l.x)("3rem"),i.k.STEP,a.X.CIRCLE,o.DM.BACKGROUND_SITE_RGB_VALUE,c.X.BLACK,d.V),x=(0,r.css)([".embla__progress{z-index:",";background-color:",";position:absolute;height:0.3rem;border-radius:",";left:0;right:0;bottom:2.6rem;margin-left:auto;margin-right:auto;pointer-events:none;width:21rem;max-width:90%;overflow:hidden;}.embla__progress__bar{"," position:absolute;width:100%;top:0;bottom:0;left:-100%;}"],i.k.STEP,o.DM.BACKGROUND_SITE,a.X.LINE,d.o),y=(0,r.css)([".embla__parallax{height:100%;overflow:hidden;}.embla__parallax__layer{position:relative;height:100%;width:100%;}.embla__parallax__img{max-width:none;width:calc(100% + (var(--slide-spacing) * 2));margin-left:calc(var(--slide-spacing) * -1);}"]),v=(0,r.css)([".embla__scale{height:100%;position:relative;backface-visibility:hidden;}"]),E=(0,r.css)([".embla__lazy-load{position:relative;height:100%;}.embla__lazy-load__spinner{border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;display:inline-flex;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla__lazy-load__spinner:after{border-radius:inherit;","}.embla__lazy-load__img{opacity:0;transition:opacity 0.2s ease-in-out;}.embla__lazy-load--has-loaded .embla__lazy-load__img{opacity:1;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST,a.X.CIRCLE,(0,l.x)("5rem"),(0,l.x)("5rem")),w=(0,r.css)([".embla__class-names{transition:opacity 0.2s ease-in-out;}.embla__class-names:not(.is-snapped){opacity:0.16;}"]),S=(0,r.css)([".embla-infinite-scroll{position:relative;flex:0 0 15rem;min-__replace-axis-size__:0;height:var(--slide-height);display:flex;align-items:center;justify-content:center;}.embla-infinite-scroll__spinner{display:none;border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla-infinite-scroll__spinner:after{border-radius:inherit;","}.embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner{display:inline-flex;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST,a.X.CIRCLE,(0,l.x)("5rem"),(0,l.x)("5rem")),T=(0,r.css)([".embla{position:relative;display:flex;width:100%;height:",";max-width:30rem;margin-left:auto;margin-right:auto;}.embla:before,.embla:after{position:absolute;left:0;right:0;content:'';display:block;height:calc(50% - 32px / 2);z-index:",";pointer-events:none;}.embla:before{top:-0.5px;border-bottom:0.5px solid rgba(",",0.3);background:linear-gradient( to top,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla:after{bottom:-0.5px;border-top:0.5px solid rgba(",",0.3);background:linear-gradient( to bottom,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla__ios-picker{height:100%;display:flex;align-items:center;min-width:50%;justify-content:center;line-height:1;font-size:1.8rem;}.embla__ios-picker__scene{min-width:100%;height:100%;overflow:hidden;display:flex;align-items:center;touch-action:pan-x;}.embla__ios-picker__viewport{height:32px;width:100%;position:relative;perspective:1000px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-webkit-tap-highlight-color:transparent;}.embla__ios-picker__viewport--perspective-left{perspective-origin:calc(50% + 130px) 50%;transform:translateX(27px);}.embla__ios-picker__viewport--perspective-right{perspective-origin:calc(50% - 130px) 50%;transform:translateX(-27px);}.embla__ios-picker__container{height:100%;width:100%;position:absolute;transform-style:preserve-3d;will-change:transform;}.embla__ios-picker__slide{position:absolute;top:0 !important;left:0 !important;width:100%;height:100%;font-size:19px;text-align:center;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;opacity:0;}.embla__ios-picker__label{font-weight:",";transform:translateX(-55px);pointer-events:none;}"],p.b5,i.k.STEP,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,c.X.BOLD),C=function(e,t,n,r){void 0===e&&(e="100%"),void 0===t&&(t=p.yX),void 0===n&&(n="x"),void 0===r&&(r=[]);const i="x"===n,o=i?"":"flex-direction: column;",a=i?"left":"top",s="pan-"+(i?"y":"x"),c=i?"width":"height",l=i?"var(--slide-height)":"100%",d=i?"1.6rem":"2.4rem",m=i?"":"height: calc(var(--slide-spacing) + var(--slide-height));",_=i?"0.6rem":"calc(var(--slide-spacing) + 0.6rem)";return((0,u.J)(f)+("string"==typeof r?r:(0,u.J)(r))).replace(/__replace_axis_flex__/gi,o).replace(/__replace-axis-size__/gi,c).replace(/__replace_axis_arrows_position__/gi,d).replace(/__replace_axis_arrows__/gi,o).replace(/__replace-axis-touch_action__/gi,s).replace(/__replace_axis_spacing__/gi,a).replace(/__replace_axis_spacing_amount__/gi,t).replace(/__replace_axis_height__/gi,m).replace(/__replace_image_height__/gi,l).replace(/__replace_axis_slide_number_spacing__/gi,_).replace(/__replace_slide_size__/gi,e)},A=(e,t,n)=>C(e,t,n,m),O=(e,t,n)=>C(e,t,n,b),I=(e,t,n)=>C(e,t,n,h),D=(e,t,n)=>C(e,t,n,x),N=(e,t,n)=>C(e,t,n,y),L=(e,t,n)=>C(e,t,n,v),k=(e,t,n)=>C(e,t,n,w),R=(e,t,n)=>C(e,t,n,E),M=(e,t,n)=>C(e,t,n,S),B=()=>(0,u.J)(T)},3977:function(e,t,n){"use strict";n.d(t,{R:function(){return a},m:function(){return o}});var r=n(9591),i=n(7843);const o=(0,r.o)("radio"),a=(0,i.Y)("radio")},7843:function(e,t,n){"use strict";n.d(t,{Y:function(){return x}});var r=n(2784),i=n(1195),o=n(2693),a=n(5807),s=n(2829),c=n(3471),l=n(4097),u=n(2715),d=n(6849),p=n(9939),f=n(3792),m=n(9322);const _=i.default.label.withConfig({displayName:"createRadioOrCheckboxCard__RadioOrCheckboxCardWrapper",componentId:"sc-10bqvgs-0"})(["",";",";display:flex;align-items:center;justify-content:center;position:relative;height:100%;"],d.C,o.l),g=i.default.span.withConfig({displayName:"createRadioOrCheckboxCard__LabelContent",componentId:"sc-10bqvgs-1"})(["z-index:",";position:relative;display:block;width:100%;cursor:pointer;"],p.k.STEP),b=i.default.span.withConfig({displayName:"createRadioOrCheckboxCard__Highlight",componentId:"sc-10bqvgs-2"})(["",";top:-",";left:-",";bottom:-",";right:-",";display:block;position:absolute;border-radius:inherit;pointer-events:none;visibility:hidden;&:after{background-color:",";border-radius:inherit;position:absolute;top:",";left:",";bottom:",";right:",";content:'';}"],l.o,u.x.DETAIL,u.x.DETAIL,u.x.DETAIL,u.x.DETAIL,f.DM.BACKGROUND_CODE,u.x.OUTLINE,u.x.OUTLINE,u.x.OUTLINE,u.x.OUTLINE),h=i.default.input.withConfig({displayName:"createRadioOrCheckboxCard__Input",componentId:"sc-10bqvgs-3"})(["",";",";position:absolute;border-radius:",";top:0;left:0;",";appearance:none;-webkit-appearance:none;border:0;background-color:transparent;pointer-events:none;&:after{display:block;content:'';position:absolute;top:0;left:0;",";}&:checked + ","{visibility:visible;}&[disabled] + "," + ","{cursor:not-allowed;}&[disabled]:checked + ","{background-image:none;background-color:",";}"],d.C,m.J,u.X.CARD,(0,s.x)("100%"),(0,s.x)("100%"),b,b,g,b,f.DM.DETAIL_HIGH_CONTRAST),x=e=>{const t=(0,c.g)("input-"+e+"-card"),n=t=>{const{children:n,...i}=t,{isKeyNavigating:o}=(0,a.t)();return r.createElement(_,{htmlFor:i.id},r.createElement(h,Object.assign({type:e,$isKeyNavigating:o},i)),r.createElement(b,null),r.createElement(g,null,n))};return n.displayName=t,n}},9591:function(e,t,n){"use strict";n.d(t,{o:function(){return E}});var r=n(2784),i=n(1195),o=n(3792),a=n(127),s=n(5807),c=n(2829),l=n(2715),u=n(4097),d=n(3471),p=n(6849),f=n(9322);const m="2.5rem",_=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__RadioOrCheckboxDefaultWrapper",componentId:"sc-1f4htb9-0"})(["display:flex;align-items:flex-start;flex-wrap:wrap;"]),g=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputWrapper",componentId:"sc-1f4htb9-1"})(["flex:0 0 ",";position:relative;min-width:0;"],m),b=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputLineHeight",componentId:"sc-1f4htb9-2"})(["color:",";width:",";display:inline-block;line-height:inherit;"],o.DM.BACKGROUND_SITE,m),h=i.default.input.withConfig({displayName:"createRadioOrCheckboxDefault__Input",componentId:"sc-1f4htb9-3"})(["",";",";",";appearance:none;-webkit-appearance:none;position:absolute;top:50%;left:0;top:50%;transform:translateY(-50%);background-color:",";cursor:pointer;&:before,&:after{display:block;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}&:before{",";background-color:",";}&:after{",";}&:checked{&:after{",";}}&[disabled]{cursor:not-allowed;}&[disabled]:checked{&:after{background-image:none;background-color:",";}}"],(0,c.x)(m),p.C,f.J,o.DM.DETAIL_MEDIUM_CONTRAST,(0,c.x)("2rem"),o.DM.BACKGROUND_CODE,(0,c.x)("1.2rem"),u.o,o.DM.DETAIL_HIGH_CONTRAST),x=(0,i.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputRadio",componentId:"sc-1f4htb9-4"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:",";}"],l.X.CIRCLE,l.X.CIRCLE,l.X.CIRCLE),y=(0,i.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputCheckbox",componentId:"sc-1f4htb9-5"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:0;}"],l.X.LINE,l.X.LINE),v=i.default.label.withConfig({displayName:"createRadioOrCheckboxDefault__Label",componentId:"sc-1f4htb9-6"})(["",";padding-left:",";min-width:0;flex:0 0 calc(100% - ",");",";"],p.C,a.v.TWO,m,(e=>{let{$disabled:t}=e;return t&&(0,i.css)(["color:",";"],o.DM.TEXT_LOW_CONTRAST)})),E=e=>{const t="radio"===e?x:y,n=(0,d.g)("input-"+e+"-default"),i=n=>{const{children:i,...o}=n,{isKeyNavigating:a}=(0,s.t)();return r.createElement(_,null,r.createElement(g,null,r.createElement(b,null,"-"),r.createElement(t,Object.assign({type:e,$isKeyNavigating:a},o))),r.createElement(v,{htmlFor:o.id,$disabled:o.disabled},i))};return i.displayName=n,i}},286:function(e,t,n){"use strict";n.d(t,{V:function(){return b}});var r=n(2784),i=n(1195),o=n(9900),a=(n(7694),n(4049)),s=n(5211);var c=n(6807),l=n(3792),u=n(727),d=n(127);const p=i.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],u.u.COMPLEMENTARY,d.v.THREE),f=(0,i.css)(["color:",";padding:"," 0;"],l.DM.TEXT_LOW_CONTRAST,d.v.ONE),m=(0,i.default)(o.t).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],f),_=i.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],f),g=(0,i.default)(c.J).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],l.DM.TEXT_LOW_CONTRAST,d.v.ONE),b=e=>{const{id:t}=e,n=(e=>{const{flat:t}=(0,s.V)(),n=t.find((t=>t.id===e));return t.filter((e=>(0,a.D)(e.slug,(null==n?void 0:n.slug)||""))).sort(((e,t)=>e.level-t.level))})(t);return 0===n.length?null:r.createElement(p,{"aria-label":"Breadcrumb Navigation"},n.map(((e,t)=>{let{id:i,slug:o,title:a}=e;return t!==n.length-1?r.createElement(r.Fragment,{key:i},r.createElement(m,{to:o},a),r.createElement(g,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):r.createElement(_,{key:i},a)})))}},3559:function(e,t,n){"use strict";n.d(t,{l:function(){return p}});var r=n(2784),i=n(1195),o=n(9900),a=n(3792),s=n(727),c=n(127),l=n(2657),u=n(6722);const d=(0,i.default)(o.t).withConfig({displayName:"PageEditThisPage__PageEditThisPageWrapper",componentId:"sc-15acsrz-0"})(["display:inline-flex;align-items:center;text-decoration:none;font-size:",";padding-top:",";padding-bottom:",";margin-top:",";color:",";"],s.u.COMPLEMENTARY,c.v.ONE,c.v.ONE,c.v.EIGHT,a.DM.TEXT_LOW_CONTRAST),p=e=>{const{pageUrl:t}=e,n=l.n.GITHUB_DOCUMENTATION+"/"+t;return r.createElement(d,{to:n},r.createElement(u.M5,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},7377:function(e,t,n){"use strict";n.d(t,{R:function(){return b}});var r=n(2784),i=n(1195),o=n(9900),a=n(4097),s=n(3792),c=n(127),l=n(727),u=n(6722),d=n(6991);const p=c.v.FOUR,f=i.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,d.h)(p,"","div"),c.v.EIGHT),m=i.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],s.DM.BRAND_PRIMARY,s.DM.BRAND_SECONDARY),_=i.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],s.DM.TEXT_LOW_CONTRAST,c.v.ONE),g=i.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],l.X.MEDIUM,u.EG,a.V),b=e=>{const{next:t,previous:n}=e;return r.createElement(f,{"aria-label":"Pagination Navigation"},r.createElement(m,null,n&&r.createElement(o.t,{to:n.slug},r.createElement(_,null,"Previous"),r.createElement(g,null,r.createElement(u.M5,{iconSvg:"arrowLeft"},n.title)))),r.createElement(m,null,t&&r.createElement(o.t,{to:t.slug},r.createElement(_,null,"Next"),r.createElement(g,null,r.createElement(u.M5,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},5541:function(e,t,n){"use strict";var r=n(2784),i=n(2270),o=n(6375);t.Z=e=>{const{slides:t,options:n}=e,[a]=(0,i.Z)(n);return r.createElement("div",{className:"embla"},r.createElement("div",{className:"embla__viewport",ref:a},r.createElement("div",{className:"embla__container"},t.map((e=>r.createElement("div",{className:"embla__slide",key:e},r.createElement("div",{className:"embla__slide__number"},r.createElement("span",null,e+1)),r.createElement("img",{className:"embla__slide__img",src:(0,o.Z)(e),alt:"Your alt text"})))))))}},6375:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});const r=[n.p+"static/slide-1-ae1074a2ded156f4bb23fc2cbf269223.jpg",n.p+"static/slide-2-4a3fdf56a1fd7125dc80f4574dae6bbf.jpg",n.p+"static/slide-3-90be65c116762a9e53a2ddf8b625feec.jpg",n.p+"static/slide-4-f352d7c20aee3f1a7868858247d7dbb7.jpg"];var i=e=>r[e%r.length]},2061:function(e,t,n){"use strict";n.d(t,{j:function(){return w}});var r=n(3302),i=n(6133),o=n(6101),a=n(5252),s=n(9015),c=n(4147),l=n(3471),u=n(5441);var d=n(3792),p=n(4392),f=n(5850);const m=async e=>{const t=await n.e(116).then(n.bind(n,116)),r=d.cE+(0,p.m)(),i=(0,l.g)(e," ");return t.default.replace(f.Wt,r).replace(f.jB,i)};var _=n(1799);const g=async(e,t)=>{let r;r=e?await n.e(6635).then(n.bind(n,6635)):await n.e(6897).then(n.bind(n,6897));const i=(0,l.g)(t," ");return r.default.replace(f.jB,i)};var b=n(2657);const h=async e=>{let t;return t=e?await n.e(8886).then(n.bind(n,8886)):await n.e(6690).then(n.bind(n,6690)),t.default.replace(f.pL,b.n.GITHUB_ROOT)},x=/import(.*)from\s'assets/g,y=async e=>{let t;return t=e?await n.e(8819).then(n.bind(n,6658)):await n.e(9386).then(n.bind(n,9386)),t.default.replace(x,(e=>e.replace("assets","..")))},v=/import(.*)from\s'..\/imageByIndex/,E=async()=>(await n.e(3331).then(n.bind(n,3331))).default,w=async e=>{const{id:t,carouselScript:n,indexScript:d,slides:p,options:b,styles:x,plugins:w,sandboxOverrides:S,language:T=f.yR.JAVASCRIPT}=e,C=t+"-react",A=(0,a.K)(o.m.IMAGES),{prettierConfig:O,formatCss:I}=await(0,s.E)(),{isTypeScript:D,reactScriptExtension:N,vanillaScriptExtension:L,formatScript:k}=await(0,u.sz)(T),R=await(async(e,t,n)=>{const{dependencies:r,devDependencies:i}=c,{isJavaScript:a,reactScriptExtension:s}=await(0,u.sz)(e);return{name:t,version:"1.0.0",description:(0,l.g)(t," ")+" Example",main:o.m.JS+"/index."+s,scripts:{start:"react-scripts start",build:"react-scripts build",test:"react-scripts test --env=jsdom",eject:"react-scripts eject"},dependencies:{react:r.react,"react-dom":r["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":r["embla-carousel-react"],...n&&n},devDependencies:a?{"@babel/runtime":"7.13.8"}:{"@types/react":i["@types/react"],"@types/react-dom":i["@types/react-dom"],typescript:i.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(T,C,w),M={include:["./src/**/*","./declarations.d.ts"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["dom","es2015"],jsx:"react-jsx"}},B=(e=>e.replace(v,(e=>e.replace("../","./"))))(n),[j,P,z,G,U,H]=await Promise.all([m(C),d||(0,_.S)(D,p,b),g(D,C),h(D),y(D),E()]),X={".prettierrc":{isBinary:!1,content:JSON.stringify(O,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(R,null,"\t")},[o.m.PUBLIC+"/index.html"]:{isBinary:!1,content:j},[o.m.CSS+"/base.css"]:{isBinary:!1,content:I(i.H)},[o.m.CSS+"/sandbox.css"]:{isBinary:!1,content:I(i.z)},[o.m.CSS+"/embla.css"]:{isBinary:!1,content:I(x)},[o.m.JS+"/index."+N]:{isBinary:!1,content:k(P)},[o.m.JS+"/Header."+N]:{isBinary:!1,content:k(z)},[o.m.JS+"/Footer."+N]:{isBinary:!1,content:k(G)},[o.m.JS+"/EmblaCarousel."+N]:{isBinary:!1,content:k(B)},[o.m.JS+"/imageByIndex."+L]:{isBinary:!1,content:k(U)}};return D&&Object.assign(X,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(M,null,"\t")},"declarations.d.ts":{isBinary:!1,content:H}}),(0,r.Z)({files:Object.assign({},X,A,S)})}},1799:function(e,t,n){"use strict";n.d(t,{N:function(){return l},S:function(){return c}});var r=n(5441),i=n(5850);const o=/import\sEmblaCarousel\sfrom\s'(.*)'/,a=/const\sSLIDE_COUNT\s=\s\d{1,}/,s='import EmblaCarousel from "./EmblaCarousel"',c=async(e,t,c)=>{const l=t.length.toString();let u;return u=e?await n.e(3984).then(n.bind(n,3984)):await n.e(4307).then(n.bind(n,4307)),u.default.replace(o,s).replace(i.jw,(0,r.Y8)(c)).replace(a,(e=>e.replace(/\d{1,}/,l)))},l=async(e,t)=>{let a;return a=e?await n.e(2874).then(n.bind(n,2874)):await n.e(2191).then(n.bind(n,2191)),a.default.replace(o,s).replace(i.st,(0,r.IS)(t))}},6101:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});const r={PUBLIC:"public",CSS:"src/css",JS:"src/js",IMAGES:"src/images"}},9145:function(e,t,n){"use strict";n.d(t,{L:function(){return f}});var r=n(2784),i=n(1195),o=n(6807),a=n(3977),s=n(727),c=n(127),l=n(2829);const u={VANILLA_JS:"javascript",VANILLA_TS:"typescript",REACT_JS:"react",REACT_TS:"react"},d=i.default.span.withConfig({displayName:"SandboxSelectionInput__RadioLabelContent",componentId:"sc-sob6nf-0"})(["display:flex;flex-direction:column;padding:",";line-height:1;text-align:center;align-items:center;font-size:",";font-weight:",";"],c.v.TWO,s.u.DETAIL,s.X.MEDIUM),p=(0,i.default)(o.J).withConfig({displayName:"SandboxSelectionInput__RadioLabelSvg",componentId:"sc-sob6nf-1"})(["",";margin-bottom:",";"],(0,l.x)("3rem"),c.v.TWO),f=e=>{const{children:t,framework:n,...i}=e;return r.createElement(a.R,i,r.createElement(d,null,r.createElement(p,{svg:u[n]}),t))}},1069:function(e,t,n){"use strict";n.d(t,{y:function(){return E}});var r=n(3302),i=n(6133),o=n(5016),a=n(5252),s=n(9015),c=n(4147),l=n(3471),u=n(5441);const d=async()=>(await n.e(6563).then(n.bind(n,6563))).default;var p=n(3792),f=n(2657),m=n(4392),_=n(5850);const g=/__replace_sandbox_script_src__/g,b=/__replace_sandbox_code__/g,h=async(e,t,r)=>{const i=await n.e(9942).then(n.bind(n,9942)),a=p.cE+(0,m.m)(),s=(0,l.g)(e," "),c=o.G.JS+"/index."+t;return i.default.replace(_.Wt,a).replace(_.jB,s).replace(g,c).replace(_.pL,f.n.GITHUB_ROOT).replace(b,r)},x=/\/static\/slide-\d{1,}-.+?\./g,y=/slide-\d{1,}/,v=e=>e.replace(x,(e=>{const t=e.match(y)||[];return o.G.IMAGES+"/"+t+"."})),E=async e=>{const{id:t,carouselScript:n,carouselHtml:p,options:f,styles:m,plugins:g,sandboxOverrides:b,language:x=_.yR.JAVASCRIPT}=e,y=t+"-vanilla",E=(0,a.K)(o.G.IMAGES),{prettierConfig:w,formatHtml:S,formatCss:T}=await(0,s.E)(),{isTypeScript:C,vanillaScriptExtension:A,formatScript:O}=await(0,u.sz)(x),I=await(async(e,t,n)=>{const{isJavaScript:r}=await(0,u.sz)(e),{dependencies:i,devDependencies:o}=c;return{name:t,version:"1.0.0",description:(0,l.g)(t," ")+" Example",main:"index.html",scripts:{start:"parcel index.html --open",build:"parcel build index.html"},dependencies:{"parcel-bundler":"^1.6.1","embla-carousel":i["embla-carousel-react"],...n&&n},devDependencies:r?{"@babel/core":"7.2.0"}:{typescript:o.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(x,y,g),D={include:["./src/**/*","./declarations.d.ts"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},N=((e,t)=>{const n=null==t?void 0:t.loop;return e.replace(_.jw,(0,u.Y8)(t)).replace(_.st,(0,u.IS)(n))})(n,f),[L,k]=await Promise.all([h(y,A,v(p)),d()]),R={".prettierrc":{isBinary:!1,content:JSON.stringify(w,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(I,null,"\t")},"index.html":{isBinary:!1,content:S(L)},[o.G.CSS+"/base.css"]:{isBinary:!1,content:T(i.H)},[o.G.CSS+"/sandbox.css"]:{isBinary:!1,content:T(i.z)},[o.G.CSS+"/embla.css"]:{isBinary:!1,content:T(m)},[o.G.JS+"/index."+A]:{isBinary:!1,content:O(N)}};return C&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(D,null,"\t")},"declarations.d.ts":{isBinary:!1,content:k}}),(0,r.Z)({files:Object.assign({},R,E,b)})}},5016:function(e,t,n){"use strict";n.d(t,{G:function(){return r}});const r={CSS:"src/css",JS:"src/js",IMAGES:"src/images"}},5252:function(e,t,n){"use strict";n.d(t,{K:function(){return o}});var r=n(2657);const i=(0,n(6609).S)(4).map((e=>r.n.GITHUB_DOCUMENTATION_RAW+"/src/assets/images/slide-"+(e+1)+".jpg")),o=e=>i.reduce(((t,n,r)=>({...t,[e+"/slide-"+(r+1)+".jpg"]:{isBinary:!0,content:n}})),{})},6133:function(e,t,n){"use strict";n.d(t,{H:function(){return b},z:function(){return h}});var r=n(1195),i=n(6732),o=n(750),a=n(8781),s=n(3228),c=n(5153),l=n(2717),u=n(2715),d=n(727),p=n(3792);const f=(0,r.css)([".sandbox{width:100%;}","{.sandbox{margin-left:auto;margin-right:auto;max-width:67rem;}}"],l.iD.MIN_SM),m=(0,r.css)([".sandbox__carousel{position:relative;background-color:",";}","{.sandbox__carousel{border-top:"," solid ",";border-bottom:"," solid ",";}}","{.sandbox__carousel{border-radius:",";border:"," solid ",";}}"],p.DM.BACKGROUND_CODE,l.iD.MAX_SM,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST,l.iD.MIN_SM,c.eC,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST),_=(0,r.css)([".sandbox__header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;}"],d.X.BOLD),g=(0,r.css)([".sandbox__footer{display:flex;justify-content:center;padding:2rem 2rem 4rem 2rem;}.sandbox__footer__link{display:flex;align-items:center;background-color:transparent;text-decoration:none;text-align:center;font-weight:",";color:",";font-size:1.4rem;}.sandbox__footer__link__svg{display:block;width:2rem;height:2rem;margin-right:1rem;fill:currentColor;}"],d.X.BOLD,p.DM.TEXT_LOW_CONTRAST),b=(0,i.J)(p.CX,o.C,a.u,s.h),h=(0,i.J)(f,m,_,g)},4234:function(e,t,n){"use strict";n.d(t,{p:function(){return s}});var r=n(2784),i=n(8116),o=n(8944),a=n(3471);const s=e=>{const{title:t,description:n,lang:s="en",url:c,children:l}=e,u=(0,i.$)(),d=t+" | "+(0,a.g)(u.title),p=n||u.description;return r.createElement(r.Fragment,null,r.createElement("html",{lang:s}),r.createElement("title",null,d),r.createElement("link",{rel:"canonical",href:c}),r.createElement("meta",{name:"description",content:p}),r.createElement("meta",{name:"og:title",content:t}),r.createElement("meta",{name:"og:description",content:p}),r.createElement("meta",{name:"og:type",content:"article"}),r.createElement("meta",{name:"og:locale",content:"en_EN"}),r.createElement("meta",{name:"og:url",content:c}),r.createElement("meta",{name:"og:site_name",content:(0,o.P)(u.siteUrl)}),r.createElement("meta",{name:"twitter:card",content:"summary"}),r.createElement("meta",{name:"twitter:creator",content:u.author}),r.createElement("meta",{name:"twitter:title",content:t}),r.createElement("meta",{name:"twitter:description",content:p}),l)}},5850:function(e,t,n){"use strict";n.d(t,{Ld:function(){return s},Wt:function(){return u},XE:function(){return a},jB:function(){return l},jw:function(){return d},pL:function(){return c},st:function(){return p},yR:function(){return o},zr:function(){return i}});var r=n(127);const i={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},o={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},a={AUTOPLAY:"embla-carousel-autoplay",CLASS_NAMES:"embla-carousel-class-names"},s=r.v.ONE,c=/__replace_sandbox_repository_url__/g,l=/__replace_sandbox_title__/g,u=/__replace_sandbox_theme__/g,d=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},6609:function(e,t,n){"use strict";n.d(t,{S:function(){return r}});const r=e=>Array.from(Array(e).keys())},4392:function(e,t,n){"use strict";n.d(t,{m:function(){return o}});var r=n(3792),i=n(7712);const o=()=>{if(!i.j)return r.YD.LIGHT;const e=r.cE+r.YD.LIGHT;return document.documentElement.classList.contains(e)?r.YD.LIGHT:r.YD.DARK}},3471:function(e,t,n){"use strict";n.d(t,{g:function(){return r}});const r=function(e,t){return void 0===e&&(e=""),void 0===t&&(t=""),e.replace(/(^\w|-\w)/g,(e=>e.replace(/-/,t).toUpperCase()))}},9015:function(e,t,n){"use strict";n.d(t,{E:function(){return o}});var r=n(1959);const i=n.n(r)(),o=async()=>{const[e,t,r,o]=await Promise.all([n.e(2859).then(n.t.bind(n,9691,23)),n.e(7572).then(n.t.bind(n,3282,23)),n.e(1039).then(n.t.bind(n,1039,23)),n.e(777).then(n.t.bind(n,8483,23))]),a={...i,parser:"html",plugins:[t]},s={...i,parser:"css",plugins:[r]},c={...i,parser:"babel",plugins:[o]},l={...i,parser:"babel-ts",plugins:[o]},u=(t,n)=>{let r="";try{r=e.format(t,n)}catch(i){console.warn("Prettier was not able to format file",i)}return r};return{prettierConfig:i,formatHtml:e=>u(e,a),formatCss:e=>u(e,s),formatJs:e=>u(e,c),formatTs:e=>u(e,l)}}},8944:function(e,t,n){"use strict";n.d(t,{P:function(){return r}});const r=e=>e.replace(/(^\w+:|^)\/\//,"")},5441:function(e,t,n){"use strict";n.d(t,{$b:function(){return s},IS:function(){return u},Y8:function(){return l},d6:function(){return c},sz:function(){return a}});var r=n(4147),i=n(9015),o=n(5850);const a=async e=>{const{formatTs:t,formatJs:n}=await(0,i.E)(),r=e===o.yR.TYPESCRIPT,a=!r;return{isJavaScript:a,isTypeScript:r,vanillaScriptExtension:a?"js":"ts",reactScriptExtension:a?"jsx":"tsx",formatScript:r?t:n}},s=e=>Object.keys(e).map((t=>{const n=t,r=e[n];return{key:n,label:o.zr[n],createSandbox:r}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:r.dependencies[t]})),{})}}),l=e=>t=>t.replace("{}",JSON.stringify(e)),u=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())}},6732:function(e,t,n){"use strict";n.d(t,{J:function(){return r}});const r=function(){for(var e=arguments.length,t=new Array(e),n=0;ne+t.join("")),"")}},1959:function(e,t,n){e.exports=n(5108)},2270:function(e,t,n){"use strict";n.d(t,{Z:function(){return X}});var r=n(2784);function i(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function o(e,t){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every((n=>{const r=e[n],a=t[n];return"function"==typeof r?""+r==""+a:i(r)&&i(a)?o(r,a):r===a}))}function a(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var s=n(4616);function c(e){return"number"==typeof e}function l(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function p(e){return Math.abs(e)}function f(e){return Math.sign(e)}function m(e,t){return p(e-t)}function _(e){return y(e).map(Number)}function g(e){return e[b(e)]}function b(e){return Math.max(0,e.length-1)}function h(e,t){return t===b(e)}function x(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,n)=>t+n))}function y(e){return Object.keys(e)}function v(e,t){return[e,t].reduce(((e,t)=>(y(t).forEach((n=>{const r=e[n],i=t[n],o=d(r)&&d(i);e[n]=o?v(r,i):i})),e)),{})}function E(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function w(){let e=[];const t={add:function(n,r,i,o){let a;if(void 0===o&&(o={passive:!0}),"addEventListener"in n)n.addEventListener(r,i,o),a=()=>n.removeEventListener(r,i,o);else{const e=n;e.addListener(i),a=()=>e.removeListener(i)}return e.push(a),t},clear:function(){e=e.filter((e=>e()))}};return t}function S(e,t,n,r){const i=w(),o=1e3/60;let a=null,s=0,c=0;function l(e){a||(a=e);const i=e-a;for(a=e,s+=i;s>=o;)n(),s-=o;const u=p(s/o);r(u),c&&t.requestAnimationFrame(l)}function u(){t.cancelAnimationFrame(c),a=null,s=0,c=0}return{init:function(){i.add(e,"visibilitychange",(()=>{e.hidden&&(a=null,s=0)}))},destroy:function(){u(),i.clear()},start:function(){c||(c=t.requestAnimationFrame(l))},stop:u,update:n,render:r}}function T(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const n=p(e-t);function r(t){return tt}function o(e){return r(e)||i(e)}return{length:n,max:t,min:e,constrain:function(n){return o(n)?r(n)?e:t:n},reachedAny:o,reachedMax:i,reachedMin:r,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function C(e,t,n){const{constrain:r}=T(0,e),i=e+1;let o=a(t);function a(e){return n?p((i+e)%i):r(e)}function s(){return o}function c(){return C(e,s(),n)}const l={get:s,set:function(e){return o=a(e),l},add:function(e){return c().set(s()+e)},clone:c};return l}function A(e,t,n,r,i,o,a,s,c,l,d,_,g,b,h,x,y,v,S,C){const{cross:A}=e,O=["INPUT","SELECT","TEXTAREA"],I={passive:!1},D=w(),N=w(),L=T(50,225).constrain(h.measure(20)),k={mouse:300,touch:400},R={mouse:500,touch:600},M=x?43:25;let B=!1,j=0,P=0,z=!1,G=!1,U=!1,H=!1;function X(e){const n=a.readPoint(e),r=a.readPoint(e,A),i=m(n,j),s=m(r,P);if(!G&&!H){if(!e.cancelable)return J(e);if(G=i>s,!G)return J(e)}const l=a.pointerMove(e);i>y&&(U=!0),d.useFriction(.3).useDuration(1),c.start(),o.add(t.apply(l)),e.preventDefault()}function J(e){const n=_.byDistance(0,!1).index!==g.get(),r=a.pointerUp(e)*(x?R:k)[H?"mouse":"touch"],i=function(e,t){const n=g.add(-1*f(e)),r=_.byDistance(e,!x).distance;return x||p(e)=2,z=!0,a.pointerDown(e),d.useFriction(0).useDuration(0),o.set(s),function(){const e=H?r:n;N.add(e,"touchmove",X,I).add(e,"touchend",J).add(e,"mousemove",X,I).add(e,"mouseup",J)}(),j=a.readPoint(e),P=a.readPoint(e,A),b.emit("pointerDown")}(t)}const c=n;D.add(c,"dragstart",(e=>e.preventDefault()),I).add(c,"touchmove",(()=>{}),I).add(c,"touchend",(()=>{})).add(c,"touchstart",t).add(c,"mousedown",t).add(c,"touchcancel",J).add(c,"contextmenu",J).add(c,"click",V,!0)},pointerDown:function(){return z},destroy:function(){D.clear(),N.clear()}}}function O(e,t){let n,r;function i(e){return e.timeStamp}function o(n,r){const i="client"+("x"===(r||e.scroll)?"X":"Y");return(E(n,t)?n:n.touches[0])[i]}return{pointerDown:function(e){return n=e,r=e,o(e)},pointerMove:function(e){const t=o(e)-o(r),a=i(e)-i(n)>170;return r=e,a&&(n=e),t},pointerUp:function(e){if(!n||!r)return 0;const t=o(r)-o(n),a=i(e)-i(n),s=i(e)-i(r)>170,c=t/a;return a&&!s&&p(c)>.1?c:0},readPoint:o}}function I(e,t,n,r,i,o,a){let s,c,l=[],d=!1;function f(e){return i.measureSize(a.measure(e))}return{init:function(i){if(!o)return;c=f(e),l=r.map(f),s=new ResizeObserver((a=>{d||(u(o)||o(i,a))&&function(o){for(const a of o){const o=a.target===e,s=r.indexOf(a.target),u=o?c:l[s];if(p(f(o?e:r[s])-u)>=.5){n.requestAnimationFrame((()=>{i.reInit(),t.emit("resize")}));break}}}(a)})),[e].concat(r).forEach((e=>s.observe(e)))},destroy:function(){s&&s.disconnect(),d=!0}}}function D(e,t,n,r,i){const o=i.measure(10),a=i.measure(50),s=T(.1,.99);let c=!1;return{constrain:function(i){if(c||!e.reachedAny(n.get())||!e.reachedAny(t.get()))return;const l=e.reachedMin(t.get())?"min":"max",u=p(e[l]-t.get()),d=n.get()-t.get(),f=s.constrain(u/a);n.subtract(d*f),!i&&p(d)e.add(i)))}}}function L(e,t,n,r,i){const{reachedAny:o,removeOffset:a,constrain:s}=r;function c(e){return e.concat().sort(((e,t)=>p(e)-p(t)))[0]}function l(t,r){const i=[t,t+n,t-n];if(!e)return i[0];if(!r)return c(i);const o=i.filter((e=>f(e)===r));return o.length?c(o):g(i)-n}return{byDistance:function(n,r){const c=i.get()+n,{index:u,distance:d}=function(n){const r=e?a(n):s(n),i=t.map((e=>e-r)).map((e=>l(e,0))).map(((e,t)=>({diff:e,index:t}))).sort(((e,t)=>p(e.diff)-p(t.diff))),{index:o}=i[0];return{index:o,distance:r}}(c),f=!e&&o(c);return!r||f?{index:u,distance:n}:{index:u,distance:n+l(t[u]-d,0)}},byIndex:function(e,n){return{index:e,distance:l(t[e]-i.get(),n)}},shortcut:l}}function k(e){let t=e;function n(e){return c(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function R(e,t,n){const r="x"===e.scroll?function(e){return"translate3d("+e+"px,0px,0px)"}:function(e){return"translate3d(0px,"+e+"px,0px)"},i=n.style;let o=!1;return{clear:function(){o||(i.transform="",n.getAttribute("style")||n.removeAttribute("style"))},to:function(e){o||(i.transform=r(t.apply(e)))},toggleActive:function(e){o=!e}}}function M(e,t,n,r,i,o,a,s,c,l){const u=_(o),d=_(o).reverse(),p=function(){const e=s[0];return g(m(d,e),r,!1)}().concat(function(){const e=n-s[0]-1;return g(m(u,e),-r,!0)}());function f(e,t){return e.reduce(((e,t)=>e-o[t]),t)}function m(e,t){return e.reduce(((e,n)=>f(e,t)>0?e.concat([n]):e),[])}function g(o,s,u){const d=function(e){return a.map(((t,r)=>({start:t-i[r]+.5+e,end:t+n-.5+e})))}(s);return o.map((n=>{const i=u?0:-r,o=u?r:0,a=u?"end":"start",s=d[n][a];return{index:n,loopPoint:s,slideLocation:k(-1),translate:R(e,t,l[n]),target:()=>c.get()>s?i:o}}))}return{canLoop:function(){return p.every((e=>{let{index:t}=e;return f(u.filter((e=>e!==t)),n)<=.1}))},clear:function(){p.forEach((e=>e.translate.clear()))},loop:function(){p.forEach((e=>{const{target:t,translate:n,slideLocation:r}=e,i=t();i!==r.get()&&(n.to(i),r.set(i))}))},loopPoints:p}}function B(e,t,n){let r,i=!1;return{init:function(o){n&&(r=new MutationObserver((e=>{i||(u(n)||n(o,e))&&function(e){for(const n of e)if("childList"===n.type){o.reInit(),t.emit("slidesChanged");break}}(e)})),r.observe(e,{childList:!0}))},destroy:function(){r&&r.disconnect(),i=!0}}}function j(e,t,n,r){const i={};let o,a=null,s=null,c=!1;return{init:function(){o=new IntersectionObserver((e=>{c||(e.forEach((e=>{const n=t.indexOf(e.target);i[n]=e})),a=null,s=null,n.emit("slidesInView"))}),{root:e.parentElement,threshold:r}),t.forEach((e=>o.observe(e)))},destroy:function(){o&&o.disconnect(),c=!0},get:function(e){if(void 0===e&&(e=!0),e&&a)return a;if(!e&&s)return s;const t=function(e){return y(i).reduce(((t,n)=>{const r=parseInt(n),{isIntersecting:o}=i[r];return(e&&o||!e&&!o)&&t.push(r),t}),[])}(e);return e&&(a=t),e||(s=t),t}}}function P(e,t,n,r,i,o,a,s,l,u){const{startEdge:d,endEdge:f}=e,m=c(r);return{groupSlides:function(e){return m?function(e,t){return _(e).filter((e=>e%t==0)).map((n=>e.slice(n,n+t)))}(e,r):function(e){return e.length?_(e).reduce(((r,c)=>{const m=g(r)||0,_=0===m,h=c===b(e),x=o[d]-a[m][d],y=o[d]-a[c][f],v=!i&&_?t.apply(s):0;return p(y-(!i&&h?t.apply(l):0)-(x+v))>n+u&&r.push(c),h&&r.push(e.length),r}),[]).map(((t,n,r)=>{const i=Math.max(r[n-1]||0);return e.slice(i,t)})):[]}(e)}}}function z(e,t,n,r,i,o,a){const{align:s,axis:u,direction:d,startIndex:m,loop:y,duration:v,dragFree:E,dragThreshold:z,inViewThreshold:G,slidesToScroll:U,skipSnaps:H,containScroll:X,watchResize:J,watchSlides:V,watchDrag:W}=o,F={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:r,offsetHeight:i}=e;return{top:t,right:n+r,bottom:t+i,left:n,width:r,height:i}}},K=F.measure(t),Y=n.map(F.measure),Z=function(e){const t="rtl"===e?-1:1;return{apply:function(e){return e*t}}}(d),q=function(e,t){const n="y"===e?"y":"x";return{scroll:n,cross:"y"===e?"x":"y",startEdge:"y"===n?"top":"rtl"===t?"right":"left",endEdge:"y"===n?"bottom":"rtl"===t?"left":"right",measureSize:function(e){const{width:t,height:r}=e;return"x"===n?t:r}}}(u,d),$=q.measureSize(K),Q=function(e){return{measure:function(t){return e*(t/100)}}}($),ee=function(e,t){const n={start:function(){return 0},center:function(e){return r(e)/2},end:r};function r(e){return t-e}return{measure:function(r,i){return l(e)?n[e](r):e(t,r,i)}}}(s,$),te=!y&&!!X,ne=y||!!X,{slideSizes:re,slideSizesWithGaps:ie,startGap:oe,endGap:ae}=function(e,t,n,r,i,o){const{measureSize:a,startEdge:s,endEdge:c}=e,l=n[0]&&i,u=function(){if(!l)return 0;const e=n[0];return p(t[s]-e[s])}(),d=function(){if(!l)return 0;const e=o.getComputedStyle(g(r));return parseFloat(e.getPropertyValue("margin-"+c))}(),f=n.map(a),m=n.map(((e,t,n)=>{const r=!t,i=h(n,t);return r?f[t]+u:i?f[t]+d:n[t+1][s]-e[s]})).map(p);return{slideSizes:f,slideSizesWithGaps:m,startGap:u,endGap:d}}(q,K,Y,n,ne,i),se=P(q,Z,$,U,y,K,Y,oe,ae,2),{snaps:ce,snapsAligned:le}=function(e,t,n,r,i){const{startEdge:o,endEdge:a}=e,{groupSlides:s}=i,c=s(r).map((e=>g(e)[a]-e[0][o])).map(p).map(t.measure),l=r.map((e=>n[o]-e[o])).map((e=>-p(e))),u=s(l).map((e=>e[0])).map(((e,t)=>e+c[t]));return{snaps:l,snapsAligned:u}}(q,ee,K,Y,se),ue=-g(ce)+g(ie),{snapsContained:de,scrollContainLimit:pe}=function(e,t,n,r,i){const o=T(-t+e,0),a=n.map(((e,t)=>{const r=!t,i=h(n,t);return r?o.max:i?o.min:o.constrain(e)})).map((e=>parseFloat(e.toFixed(3)))),s=function(){const e=a[0],t=g(a);return T(a.lastIndexOf(e),a.indexOf(t)+1)}();return{snapsContained:function(){if(t<=e+i)return[o.max];if("keepSnaps"===r)return a;const{min:n,max:c}=s;return a.slice(n,c)}(),scrollContainLimit:s}}($,ue,le,X,2),fe=te?de:le,{limit:me}=function(e,t,n){const r=t[0];return{limit:T(n?r-e:g(t),r)}}(ue,fe,y),_e=C(b(fe),m,y),ge=_e.clone(),be=_(n),he=S(r,i,(()=>(e=>{let{dragHandler:t,scrollBody:n,scrollBounds:r,options:{loop:i}}=e;i||r.constrain(t.pointerDown()),n.seek()})(Ne)),(e=>((e,t)=>{let{scrollBody:n,translate:r,location:i,offsetLocation:o,scrollLooper:a,slideLooper:s,dragHandler:c,animation:l,eventHandler:u,options:{loop:d}}=e;const p=n.velocity(),f=n.settled();f&&!c.pointerDown()&&(l.stop(),u.emit("settle")),f||u.emit("scroll"),o.set(i.get()-p+p*t),d&&(a.loop(n.direction()),s.loop()),r.to(o.get())})(Ne,e))),xe=fe[_e.get()],ye=k(xe),ve=k(xe),Ee=k(xe),we=function(e,t,n,r,i){let o=0,a=0,s=r,c=i,l=e.get(),u=0;function d(e){return s=e,_}function m(e){return c=e,_}const _={direction:function(){return a},duration:function(){return s},velocity:function(){return o},seek:function(){const t=n.get()-e.get();let r=0;return s?(o+=t/s,o*=c,l+=o,e.add(o),r=l-u):(o=0,e.set(n),r=t),a=f(r),u=l,_},settled:function(){return p(n.get()-t.get())<.001},useBaseFriction:function(){return m(i)},useBaseDuration:function(){return d(r)},useFriction:m,useDuration:d};return _}(ye,ve,Ee,v,.68),Se=L(y,fe,ue,me,Ee),Te=function(e,t,n,r,i,o){function a(r){const a=r.distance,s=r.index!==t.get();i.add(a),a&&e.start(),s&&(n.set(t.get()),t.set(r.index),o.emit("select"))}return{distance:function(e,t){a(r.byDistance(e,t))},index:function(e,n){const i=t.clone().set(e);a(r.byIndex(i.get(),n))}}}(he,_e,ge,Se,Ee,a),Ce=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(me),Ae=w(),Oe=j(t,n,a,G),{slideRegistry:Ie}=function(e,t,n,r,i,o){const{groupSlides:a}=i,{min:s,max:c}=r;return{slideRegistry:function(){const r=a(o),i=!e||"keepSnaps"===t;return 1===n.length?[o]:i?r:r.slice(s,c).map(((e,t,n)=>{const r=!t,i=h(n,t);return r?x(g(n[0])+1):i?x(b(o)-g(n)[0]+1,g(n)[0]):e}))}()}}(te,X,fe,pe,se,be),De=function(e,t,n,r,i,o){let a=0;function s(e){"Tab"===e.code&&(a=(new Date).getTime())}function l(s){o.add(s,"focus",(()=>{if((new Date).getTime()-a>10)return;e.scrollLeft=0;const o=t.indexOf(s),l=n.findIndex((e=>e.includes(o)));c(l)&&(i.useDuration(0),r.index(l,0))}),{passive:!0,capture:!0})}return{init:function(){o.add(document,"keydown",s,!1),t.forEach(l)}}}(e,n,Ie,Te,we,Ae),Ne={ownerDocument:r,ownerWindow:i,eventHandler:a,containerRect:K,slideRects:Y,animation:he,axis:q,direction:Z,dragHandler:A(q,Z,e,r,i,Ee,O(q,i),ye,he,Te,we,Se,_e,a,Q,E,z,H,.68,W),eventStore:Ae,percentOfView:Q,index:_e,indexPrevious:ge,limit:me,location:ye,offsetLocation:ve,options:o,resizeHandler:I(t,a,i,n,q,J,F),scrollBody:we,scrollBounds:D(me,ye,Ee,we,Q),scrollLooper:N(ue,me,ve,[ye,ve,Ee]),scrollProgress:Ce,scrollSnapList:fe.map(Ce.get),scrollSnaps:fe,scrollTarget:Se,scrollTo:Te,slideLooper:M(q,Z,$,ue,re,ie,ce,fe,ve,n),slideFocus:De,slidesHandler:B(t,a,V),slidesInView:Oe,slideIndexes:be,slideRegistry:Ie,slidesToScroll:se,target:Ee,translate:R(q,Z,t)};return Ne}const G={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0};function U(e){function t(e,t){return v(e,t||{})}const n={mergeOptions:t,optionsAtMedia:function(n){const r=n.breakpoints||{},i=y(r).filter((t=>e.matchMedia(t).matches)).map((e=>r[e])).reduce(((e,n)=>t(e,n)),{});return t(n,i)},optionsMediaQueries:function(t){return t.map((e=>y(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return n}function H(e,t,n){const r=e.ownerDocument,i=r.defaultView,o=U(i),a=function(e){let t=[];return{init:function(n,r){return t=r.filter((t=>{let{options:n}=t;return!1!==e.optionsAtMedia(n).active})),t.forEach((t=>t.init(n,e))),r.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(o),c=w(),u=function(){const e={};let t;function n(t){return e[t]||[]}const r={init:function(e){t=e},emit:function(e){return n(e).forEach((n=>n(t,e))),r},off:function(t,i){return e[t]=n(t).filter((e=>e!==i)),r},on:function(t,i){return e[t]=n(t).concat([i]),r}};return r}(),{mergeOptions:d,optionsAtMedia:p,optionsMediaQueries:f}=o,{on:m,off:_,emit:g}=u,b=I;let h,x,y,v,E=!1,S=d(G,H.globalOptions),T=d(S),C=[];function A(t){const n=z(e,y,v,r,i,t,u);if(t.loop&&!n.slideLooper.canLoop()){return A(Object.assign({},t,{loop:!1}))}return n}function O(t,n){E||(S=d(S,t),T=p(S),C=n||C,function(){const{container:t,slides:n}=T,r=l(t)?e.querySelector(t):t;y=r||e.children[0];const i=l(n)?y.querySelectorAll(n):n;v=[].slice.call(i||y.children)}(),h=A(T),f([S].concat((0,s.Z)(C.map((e=>{let{options:t}=e;return t}))))).forEach((e=>c.add(e,"change",I))),T.active&&(h.translate.to(h.location.get()),h.animation.init(),h.slidesInView.init(),h.slideFocus.init(),h.eventHandler.init(k),h.resizeHandler.init(k),h.slidesHandler.init(k),h.options.loop&&h.slideLooper.loop(),y.offsetParent&&v.length&&h.dragHandler.init(k),x=a.init(k,C)))}function I(e,t){const n=L();D(),O(d({startIndex:n},e),t),u.emit("reInit")}function D(){h.dragHandler.destroy(),h.eventStore.clear(),h.translate.clear(),h.slideLooper.clear(),h.resizeHandler.destroy(),h.slidesHandler.destroy(),h.slidesInView.destroy(),h.animation.destroy(),a.destroy(),c.clear()}function N(e,t,n){T.active&&!E&&(h.scrollBody.useBaseFriction().useDuration(!0===t?0:T.duration),h.scrollTo.index(e,n||0))}function L(){return h.index.get()}const k={canScrollNext:function(){return h.index.add(1).get()!==L()},canScrollPrev:function(){return h.index.add(-1).get()!==L()},containerNode:function(){return y},internalEngine:function(){return h},destroy:function(){E||(E=!0,c.clear(),D(),u.emit("destroy"))},off:_,on:m,emit:g,plugins:function(){return x},previousScrollSnap:function(){return h.indexPrevious.get()},reInit:b,rootNode:function(){return e},scrollNext:function(e){N(h.index.add(1).get(),e,-1)},scrollPrev:function(e){N(h.index.add(-1).get(),e,1)},scrollProgress:function(){return h.scrollProgress.get(h.location.get())},scrollSnapList:function(){return h.scrollSnapList},scrollTo:N,selectedScrollSnap:L,slideNodes:function(){return v},slidesInView:function(){return h.slidesInView.get()},slidesNotInView:function(){return h.slidesInView.get(!1)}};return O(t,n),setTimeout((()=>u.emit("init")),0),k}function X(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const n=(0,r.useRef)(e),i=(0,r.useRef)(t),{0:s,1:c}=(0,r.useState)(),{0:l,1:u}=(0,r.useState)(),d=(0,r.useCallback)((()=>{s&&s.reInit(n.current,i.current)}),[s]);return(0,r.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&l){H.globalOptions=X.globalOptions;const e=H(l,n.current,i.current);return c(e),()=>e.destroy()}c(void 0)}),[l,c]),(0,r.useEffect)((()=>{o(n.current,e)||(n.current=e,d())}),[e,d]),(0,r.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const n=a(e),r=a(t);return n.every(((e,t)=>o(e,r[t])))})(i.current,t)||(i.current=t,d())}),[t,d]),[u,s]}H.globalOptions=void 0,X.globalOptions=void 0},6954:function(e,t,n){var r,i=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function i(e,t){if(!r[e]){r[e]={};for(var n=0;n>>8,n[2*r+1]=a%256}return n},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var n=new Array(t.length/2),r=0,i=n.length;r>=1}else{for(i=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(i=a[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++),a[l]=p++,u=String(c)}if(""!==u){if(Object.prototype.hasOwnProperty.call(s,u)){if(u.charCodeAt(0)<256){for(r=0;r>=1}else{for(i=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(i=a[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++)}for(i=2,r=0;r>=1;for(;;){if(_<<=1,g==t-1){m.push(n(_));break}g++}return m.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,n,r){var i,o,a,s,c,l,u,d=[],p=4,f=4,m=3,_="",g=[],b={val:r(0),position:n,index:1};for(i=0;i<3;i+=1)d[i]=i;for(a=0,c=Math.pow(2,2),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;u=e(a);break;case 1:for(a=0,c=Math.pow(2,16),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;u=e(a);break;case 2:return""}for(d[3]=u,o=u,g.push(u);;){if(b.index>t)return"";for(a=0,c=Math.pow(2,m),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;switch(u=a){case 0:for(a=0,c=Math.pow(2,8),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;d[f++]=e(a),u=f-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;d[f++]=e(a),u=f-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,m),m++),d[u])_=d[u];else{if(u!==f)return null;_=o+o.charAt(0)}g.push(_),d[f++]=o+_.charAt(0),o=_,0==--p&&(p=Math.pow(2,m),m++)}}};return o}();void 0===(r=function(){return i}.call(t,n,t,e))||(e.exports=r)},3785:function(e,t,n){"use strict";t.Z=n.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"}}]); -//# sourceMappingURL=8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js.map \ No newline at end of file +(self.webpackChunkembla_carousel_docs=self.webpackChunkembla_carousel_docs||[]).push([[5295],{8945:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(6954);t.getParameters=function(e){return t=JSON.stringify(e),r.compressToBase64(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"");var t}},3302:function(e,t,n){"use strict";t.Z=void 0;var r=n(8945);t.Z=r.getParameters},5108:function(e){e.exports={bracketSpacing:!0,printWidth:80,semi:!1,singleQuote:!0,trailingComma:"none",tabWidth:2,useTabs:!1}},5153:function(e,t,n){"use strict";n.d(t,{$2:function(){return d},FT:function(){return y},LW:function(){return u},U6:function(){return x},b5:function(){return p},eC:function(){return _},jY:function(){return m},qn:function(){return l},tc:function(){return h},yX:function(){return f}});var r=n(1508),i=n(1195),o=n(2717),a=n(3792),s=n(2715),c=n(9939);const l="19rem",u="9rem",d="0.8rem",p="22.2rem",f="1rem",m="1.6rem",_=s.X.BOX,g=(0,i.css)(["position:relative;","{border-radius:",";}&:after{z-index:",";content:'';pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;","{border:"," solid ",";}","{border-top:"," solid ",";border-bottom:"," solid ",";}}"],o.iD.MIN_XS,_,c.k.STEP,o.iD.MIN_XS,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST,o.iD.MAX_XS,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST,s.x.DETAIL,a.DM.DETAIL_LOW_CONTRAST),b=(0,i.css)(["",";",";background-color:",";"],r.n,g,a.DM.BACKGROUND_CODE),h=(0,i.css)(["",";height:calc("," + "," * 2);"],b,l,m),x=(0,i.css)(["",";height:calc( "," + "," + "," + "," * 2 );"],b,l,u,d,m),y=(0,i.css)(["",";",";height:",";background-color:",";padding-left:",";padding-right:",";touch-action:none;"],r.n,g,p,a.DM.BACKGROUND_CODE,m,m)},149:function(e,t,n){"use strict";n.d(t,{GW:function(){return D},Wd:function(){return A},el:function(){return L},ep:function(){return C},f2:function(){return _},gt:function(){return M},jQ:function(){return I},jZ:function(){return k},k2:function(){return R},mz:function(){return O},s7:function(){return B},xf:function(){return g},zg:function(){return N}});var r=n(1195),i=n(9939),o=n(3792),a=n(2715),s=n(2717),c=n(727),l=n(2829),u=n(6732),d=n(4097),p=n(5153);const f=(0,r.css)([".embla{--slide-spacing:__replace_axis_spacing_amount__;--slide-size:__replace_slide_size__;--slide-height:",";padding:",";}.embla__viewport{overflow:hidden;}.embla__container{backface-visibility:hidden;display:flex;touch-action:__replace-axis-touch_action__;margin-__replace_axis_spacing__:calc(var(--slide-spacing) * -1);__replace_axis_height__ __replace_axis_flex__}.embla__slide{flex:0 0 var(--slide-size);min-__replace-axis-size__:0;padding-__replace_axis_spacing__:var(--slide-spacing);position:relative;}.embla__slide__img{display:block;height:__replace_image_height__;width:100%;object-fit:cover;}.embla__slide__number{"," z-index:",";position:absolute;top:__replace_axis_slide_number_spacing__;right:0.6rem;border-radius:",";background-color:rgba(",",0.85);line-height:4.6rem;font-weight:",";text-align:center;pointer-events:none;}.embla__slide__number > span{"," font-size:1.6rem;display:block;position:absolute;top:0;left:0;right:0;bottom:0;}"],p.qn,p.jY,(0,l.x)("4.6rem"),i.k.STEP,a.X.CIRCLE,o.DM.BACKGROUND_SITE_RGB_VALUE,c.X.BLACK,d.V),m=(0,r.css)([".embla__slide:nth-child(1){flex:0 0 60%;}.embla__slide:nth-child(2){flex:0 0 40%;}.embla__slide:nth-child(3){flex:0 0 30%;}.embla__slide:nth-child(4){flex:0 0 90%;}.embla__slide:nth-child(5){flex:0 0 35%;}.embla__slide:nth-child(6){flex:0 0 55%;}.embla__slide:nth-child(7){flex:0 0 85%;}.embla__slide:nth-child(8){flex:0 0 46%;}.embla__slide:nth-child(9){flex:0 0 30%;}"]),_=(0,r.css)([".embla__button{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;}.embla__buttons{display:flex;align-items:center;position:absolute;top:50%;transform:translateY(-50%);left:__replace_axis_arrows_position__;__replace_axis_arrows__}.embla__button{z-index:",";color:",";display:flex;align-items:center;justify-content:center;cursor:pointer;","}.embla__button:disabled{opacity:0.3;}.embla__button__svg{","}"],i.k.STEP,o.DM.BACKGROUND_SITE,(0,l.x)("4rem"),(0,l.x)("65%")),g=(0,r.css)([".embla__dot{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:inline-flex;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;}.embla__dots{z-index:",";bottom:",";position:absolute;left:0;right:0;display:flex;justify-content:center;align-items:center;}.embla__dot{"," display:flex;align-items:center;margin-right:0.75rem;margin-left:0.75rem;}.embla__dot:after{background:",";border-radius:",";width:100%;height:0.3rem;content:'';}.embla__dot--selected:after{background:",";}"],i.k.STEP,p.jY,(0,l.x)("2.4rem"),o.DM.BACKGROUND_SITE,a.X.LINE,"linear-gradient(45deg, "+o.DM.BRAND_PRIMARY+", "+o.DM.BRAND_SECONDARY+")"),b=(0,r.css)([""," ",""],_,g),h=(0,r.css)([".embla-thumbs{--thumbs-slide-spacing:",";--thumbs-slide-height:",";margin-top:var(--thumbs-slide-spacing);}.embla-thumbs__viewport{overflow:hidden;}.embla-thumbs__container{display:flex;flex-direction:row;margin-left:calc(var(--thumbs-slide-spacing) * -1);}.embla-thumbs__slide{flex:0 0 28%;min-__replace-axis-size__:0;padding-left:var(--thumbs-slide-spacing);position:relative;}","{.embla-thumbs__slide{flex:0 0 18%;}}.embla-thumbs__slide__button{-webkit-appearance:none;background-color:transparent;touch-action:manipulation;display:block;text-decoration:none;cursor:pointer;border:0;padding:0;margin:0;width:100%;opacity:0.2;transition:opacity 0.2s;}.embla-thumbs__slide--selected .embla-thumbs__slide__button{opacity:1;}.embla-thumbs__slide__img{display:block;height:var(--thumbs-slide-height);width:100%;object-fit:cover;}.embla-thumbs__slide__number{"," z-index:",";position:absolute;top:0.3rem;right:0.3rem;border-radius:",";background-color:rgba(",",0.85);line-height:3rem;font-weight:",";text-align:center;pointer-events:none;}.embla-thumbs__slide__number > span{"," font-size:1.4rem;display:block;position:absolute;top:0;left:0;right:0;bottom:0;}"],p.$2,p.LW,s.iD.MIN_XS,(0,l.x)("3rem"),i.k.STEP,a.X.CIRCLE,o.DM.BACKGROUND_SITE_RGB_VALUE,c.X.BLACK,d.V),x=(0,r.css)([".embla__progress{z-index:",";background-color:",";position:absolute;height:0.3rem;border-radius:",";left:0;right:0;bottom:2.6rem;margin-left:auto;margin-right:auto;pointer-events:none;width:21rem;max-width:90%;overflow:hidden;}.embla__progress__bar{"," position:absolute;width:100%;top:0;bottom:0;left:-100%;}"],i.k.STEP,o.DM.BACKGROUND_SITE,a.X.LINE,d.o),y=(0,r.css)([".embla__parallax{height:100%;overflow:hidden;}.embla__parallax__layer{position:relative;height:100%;width:100%;}.embla__parallax__img{max-width:none;width:calc(100% + (var(--slide-spacing) * 2));margin-left:calc(var(--slide-spacing) * -1);}"]),v=(0,r.css)([".embla__scale{height:100%;position:relative;backface-visibility:hidden;}"]),E=(0,r.css)([".embla__lazy-load{position:relative;height:100%;}.embla__lazy-load__spinner{border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;display:inline-flex;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla__lazy-load__spinner:after{border-radius:inherit;","}.embla__lazy-load__img{opacity:0;transition:opacity 0.2s ease-in-out;}.embla__lazy-load--has-loaded .embla__lazy-load__img{opacity:1;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST,a.X.CIRCLE,(0,l.x)("5rem"),(0,l.x)("5rem")),w=(0,r.css)([".embla__class-names{transition:opacity 0.2s ease-in-out;}.embla__class-names:not(.is-snapped){opacity:0.16;}"]),S=(0,r.css)([".embla-infinite-scroll{position:relative;flex:0 0 15rem;min-__replace-axis-size__:0;height:var(--slide-height);display:flex;align-items:center;justify-content:center;}.embla-infinite-scroll__spinner{display:none;border:"," solid rgba(",",0.2);border-left:"," solid ",";font-size:1rem;position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;text-indent:-9999em;animation:loading 1.1s infinite linear;border-radius:",";","}.embla-infinite-scroll__spinner:after{border-radius:inherit;","}.embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner{display:inline-flex;}@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}"],a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,a.x.ACCENT_VERTICAL,o.DM.TEXT_HIGH_CONTRAST,a.X.CIRCLE,(0,l.x)("5rem"),(0,l.x)("5rem")),T=(0,r.css)([".embla{position:relative;display:flex;width:100%;height:",";max-width:30rem;margin-left:auto;margin-right:auto;}.embla:before,.embla:after{position:absolute;left:0;right:0;content:'';display:block;height:calc(50% - 32px / 2);z-index:",";pointer-events:none;}.embla:before{top:-0.5px;border-bottom:0.5px solid rgba(",",0.3);background:linear-gradient( to top,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla:after{bottom:-0.5px;border-top:0.5px solid rgba(",",0.3);background:linear-gradient( to bottom,rgba(",",0.65) 0%,rgba(",",1) 100% );}.embla__ios-picker{height:100%;display:flex;align-items:center;min-width:50%;justify-content:center;line-height:1;font-size:1.8rem;}.embla__ios-picker__scene{min-width:100%;height:100%;overflow:hidden;display:flex;align-items:center;touch-action:pan-x;}.embla__ios-picker__viewport{height:32px;width:100%;position:relative;perspective:1000px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-webkit-tap-highlight-color:transparent;}.embla__ios-picker__viewport--perspective-left{perspective-origin:calc(50% + 130px) 50%;transform:translateX(27px);}.embla__ios-picker__viewport--perspective-right{perspective-origin:calc(50% - 130px) 50%;transform:translateX(-27px);}.embla__ios-picker__container{height:100%;width:100%;position:absolute;transform-style:preserve-3d;will-change:transform;}.embla__ios-picker__slide{position:absolute;top:0 !important;left:0 !important;width:100%;height:100%;font-size:19px;text-align:center;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;opacity:0;}.embla__ios-picker__label{font-weight:",";transform:translateX(-55px);pointer-events:none;}"],p.b5,i.k.STEP,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.TEXT_HIGH_CONTRAST_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,o.DM.BACKGROUND_CODE_RGB_VALUE,c.X.BOLD),C=function(e,t,n,r){void 0===e&&(e="100%"),void 0===t&&(t=p.yX),void 0===n&&(n="x"),void 0===r&&(r=[]);const i="x"===n,o=i?"":"flex-direction: column;",a=i?"left":"top",s="pan-"+(i?"y":"x"),c=i?"width":"height",l=i?"var(--slide-height)":"100%",d=i?"1.6rem":"2.4rem",m=i?"":"height: calc(var(--slide-spacing) + var(--slide-height));",_=i?"0.6rem":"calc(var(--slide-spacing) + 0.6rem)";return((0,u.J)(f)+("string"==typeof r?r:(0,u.J)(r))).replace(/__replace_axis_flex__/gi,o).replace(/__replace-axis-size__/gi,c).replace(/__replace_axis_arrows_position__/gi,d).replace(/__replace_axis_arrows__/gi,o).replace(/__replace-axis-touch_action__/gi,s).replace(/__replace_axis_spacing__/gi,a).replace(/__replace_axis_spacing_amount__/gi,t).replace(/__replace_axis_height__/gi,m).replace(/__replace_image_height__/gi,l).replace(/__replace_axis_slide_number_spacing__/gi,_).replace(/__replace_slide_size__/gi,e)},A=(e,t,n)=>C(e,t,n,m),O=(e,t,n)=>C(e,t,n,b),I=(e,t,n)=>C(e,t,n,h),D=(e,t,n)=>C(e,t,n,x),N=(e,t,n)=>C(e,t,n,y),L=(e,t,n)=>C(e,t,n,v),k=(e,t,n)=>C(e,t,n,w),R=(e,t,n)=>C(e,t,n,E),M=(e,t,n)=>C(e,t,n,S),B=()=>(0,u.J)(T)},3977:function(e,t,n){"use strict";n.d(t,{R:function(){return a},m:function(){return o}});var r=n(9591),i=n(7843);const o=(0,r.o)("radio"),a=(0,i.Y)("radio")},7843:function(e,t,n){"use strict";n.d(t,{Y:function(){return x}});var r=n(2784),i=n(1195),o=n(2693),a=n(5807),s=n(2829),c=n(3471),l=n(4097),u=n(2715),d=n(6849),p=n(9939),f=n(3792),m=n(9322);const _=i.default.label.withConfig({displayName:"createRadioOrCheckboxCard__RadioOrCheckboxCardWrapper",componentId:"sc-10bqvgs-0"})(["",";",";display:flex;align-items:center;justify-content:center;position:relative;height:100%;"],d.C,o.l),g=i.default.span.withConfig({displayName:"createRadioOrCheckboxCard__LabelContent",componentId:"sc-10bqvgs-1"})(["z-index:",";position:relative;display:block;width:100%;cursor:pointer;"],p.k.STEP),b=i.default.span.withConfig({displayName:"createRadioOrCheckboxCard__Highlight",componentId:"sc-10bqvgs-2"})(["",";top:-",";left:-",";bottom:-",";right:-",";display:block;position:absolute;border-radius:inherit;pointer-events:none;visibility:hidden;&:after{background-color:",";border-radius:inherit;position:absolute;top:",";left:",";bottom:",";right:",";content:'';}"],l.o,u.x.DETAIL,u.x.DETAIL,u.x.DETAIL,u.x.DETAIL,f.DM.BACKGROUND_CODE,u.x.OUTLINE,u.x.OUTLINE,u.x.OUTLINE,u.x.OUTLINE),h=i.default.input.withConfig({displayName:"createRadioOrCheckboxCard__Input",componentId:"sc-10bqvgs-3"})(["",";",";position:absolute;border-radius:",";top:0;left:0;",";appearance:none;-webkit-appearance:none;border:0;background-color:transparent;pointer-events:none;&:after{display:block;content:'';position:absolute;top:0;left:0;",";}&:checked + ","{visibility:visible;}&[disabled] + "," + ","{cursor:not-allowed;}&[disabled]:checked + ","{background-image:none;background-color:",";}"],d.C,m.J,u.X.CARD,(0,s.x)("100%"),(0,s.x)("100%"),b,b,g,b,f.DM.DETAIL_HIGH_CONTRAST),x=e=>{const t=(0,c.g)("input-"+e+"-card"),n=t=>{const{children:n,...i}=t,{isKeyNavigating:o}=(0,a.t)();return r.createElement(_,{htmlFor:i.id},r.createElement(h,Object.assign({type:e,$isKeyNavigating:o},i)),r.createElement(b,null),r.createElement(g,null,n))};return n.displayName=t,n}},9591:function(e,t,n){"use strict";n.d(t,{o:function(){return E}});var r=n(2784),i=n(1195),o=n(3792),a=n(127),s=n(5807),c=n(2829),l=n(2715),u=n(4097),d=n(3471),p=n(6849),f=n(9322);const m="2.5rem",_=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__RadioOrCheckboxDefaultWrapper",componentId:"sc-1f4htb9-0"})(["display:flex;align-items:flex-start;flex-wrap:wrap;"]),g=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputWrapper",componentId:"sc-1f4htb9-1"})(["flex:0 0 ",";position:relative;min-width:0;"],m),b=i.default.span.withConfig({displayName:"createRadioOrCheckboxDefault__InputLineHeight",componentId:"sc-1f4htb9-2"})(["color:",";width:",";display:inline-block;line-height:inherit;"],o.DM.BACKGROUND_SITE,m),h=i.default.input.withConfig({displayName:"createRadioOrCheckboxDefault__Input",componentId:"sc-1f4htb9-3"})(["",";",";",";appearance:none;-webkit-appearance:none;position:absolute;top:50%;left:0;top:50%;transform:translateY(-50%);background-color:",";cursor:pointer;&:before,&:after{display:block;content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);}&:before{",";background-color:",";}&:after{",";}&:checked{&:after{",";}}&[disabled]{cursor:not-allowed;}&[disabled]:checked{&:after{background-image:none;background-color:",";}}"],(0,c.x)(m),p.C,f.J,o.DM.DETAIL_MEDIUM_CONTRAST,(0,c.x)("2rem"),o.DM.BACKGROUND_CODE,(0,c.x)("1.2rem"),u.o,o.DM.DETAIL_HIGH_CONTRAST),x=(0,i.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputRadio",componentId:"sc-1f4htb9-4"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:",";}"],l.X.CIRCLE,l.X.CIRCLE,l.X.CIRCLE),y=(0,i.default)(h).withConfig({displayName:"createRadioOrCheckboxDefault__InputCheckbox",componentId:"sc-1f4htb9-5"})(["border-radius:",";&:before{border-radius:",";}&:after{border-radius:0;}"],l.X.LINE,l.X.LINE),v=i.default.label.withConfig({displayName:"createRadioOrCheckboxDefault__Label",componentId:"sc-1f4htb9-6"})(["",";padding-left:",";min-width:0;flex:0 0 calc(100% - ",");",";"],p.C,a.v.TWO,m,(e=>{let{$disabled:t}=e;return t&&(0,i.css)(["color:",";"],o.DM.TEXT_LOW_CONTRAST)})),E=e=>{const t="radio"===e?x:y,n=(0,d.g)("input-"+e+"-default"),i=n=>{const{children:i,...o}=n,{isKeyNavigating:a}=(0,s.t)();return r.createElement(_,null,r.createElement(g,null,r.createElement(b,null,"-"),r.createElement(t,Object.assign({type:e,$isKeyNavigating:a},o))),r.createElement(v,{htmlFor:o.id,$disabled:o.disabled},i))};return i.displayName=n,i}},286:function(e,t,n){"use strict";n.d(t,{V:function(){return b}});var r=n(2784),i=n(1195),o=n(9900),a=(n(7694),n(4049)),s=n(5211);var c=n(6807),l=n(3792),u=n(727),d=n(127);const p=i.default.nav.withConfig({displayName:"PageBreadcrumbs__PageBreadcrumbsWrapper",componentId:"sc-1mlty1z-0"})(["display:flex;align-items:center;font-size:",";margin-bottom:",";"],u.u.COMPLEMENTARY,d.v.THREE),f=(0,i.css)(["color:",";padding:"," 0;"],l.DM.TEXT_LOW_CONTRAST,d.v.ONE),m=(0,i.default)(o.t).withConfig({displayName:"PageBreadcrumbs__Link",componentId:"sc-1mlty1z-1"})(["",";"],f),_=i.default.span.withConfig({displayName:"PageBreadcrumbs__ActiveTitle",componentId:"sc-1mlty1z-2"})(["",";"],f),g=(0,i.default)(c.J).withConfig({displayName:"PageBreadcrumbs__Separator",componentId:"sc-1mlty1z-3"})(["color:",";margin:0 ",";"],l.DM.TEXT_LOW_CONTRAST,d.v.ONE),b=e=>{const{id:t}=e,n=(e=>{const{flat:t}=(0,s.V)(),n=t.find((t=>t.id===e));return t.filter((e=>(0,a.D)(e.slug,(null==n?void 0:n.slug)||""))).sort(((e,t)=>e.level-t.level))})(t);return 0===n.length?null:r.createElement(p,{"aria-label":"Breadcrumb Navigation"},n.map(((e,t)=>{let{id:i,slug:o,title:a}=e;return t!==n.length-1?r.createElement(r.Fragment,{key:i},r.createElement(m,{to:o},a),r.createElement(g,{size:"0.6rem",svg:"chevronRight",role:"presentation","aria-hidden":"false"})):r.createElement(_,{key:i},a)})))}},3559:function(e,t,n){"use strict";n.d(t,{l:function(){return p}});var r=n(2784),i=n(1195),o=n(9900),a=n(3792),s=n(727),c=n(127),l=n(2657),u=n(6722);const d=(0,i.default)(o.t).withConfig({displayName:"PageEditThisPage__PageEditThisPageWrapper",componentId:"sc-15acsrz-0"})(["display:inline-flex;align-items:center;text-decoration:none;font-size:",";padding-top:",";padding-bottom:",";margin-top:",";color:",";"],s.u.COMPLEMENTARY,c.v.ONE,c.v.ONE,c.v.EIGHT,a.DM.TEXT_LOW_CONTRAST),p=e=>{const{pageUrl:t}=e,n=l.n.GITHUB_DOCUMENTATION+"/"+t;return r.createElement(d,{to:n},r.createElement(u.M5,{iconSvg:"pen",iconSize:"1.5rem"},"Edit this page on GitHub"))}},7377:function(e,t,n){"use strict";n.d(t,{R:function(){return b}});var r=n(2784),i=n(1195),o=n(9900),a=n(4097),s=n(3792),c=n(127),l=n(727),u=n(6722),d=n(6991);const p=c.v.FOUR,f=i.default.nav.withConfig({displayName:"PagePagination__PagePaginationWrapper",componentId:"sc-3ejrow-0"})(["",";display:flex;justify-content:space-between;margin-top:",";"],(0,d.h)(p,"","div"),c.v.EIGHT),m=i.default.div.withConfig({displayName:"PagePagination__Item",componentId:"sc-3ejrow-1"})(["> a{color:",";}&:nth-child(2) > a{text-align:right;color:",";}"],s.DM.BRAND_PRIMARY,s.DM.BRAND_SECONDARY),_=i.default.div.withConfig({displayName:"PagePagination__ItemLabel",componentId:"sc-3ejrow-2"})(["color:",";padding-bottom:",";"],s.DM.TEXT_LOW_CONTRAST,c.v.ONE),g=i.default.div.withConfig({displayName:"PagePagination__ItemTitle",componentId:"sc-3ejrow-3"})(["display:inline-flex;align-items:center;font-weight:",";","{",";}"],l.X.MEDIUM,u.EG,a.V),b=e=>{const{next:t,previous:n}=e;return r.createElement(f,{"aria-label":"Pagination Navigation"},r.createElement(m,null,n&&r.createElement(o.t,{to:n.slug},r.createElement(_,null,"Previous"),r.createElement(g,null,r.createElement(u.M5,{iconSvg:"arrowLeft"},n.title)))),r.createElement(m,null,t&&r.createElement(o.t,{to:t.slug},r.createElement(_,null,"Next"),r.createElement(g,null,r.createElement(u.M5,{iconSvg:"arrowRight",iconSide:"right"},t.title)))))}},5541:function(e,t,n){"use strict";var r=n(2784),i=n(2270),o=n(6375);t.Z=e=>{const{slides:t,options:n}=e,[a]=(0,i.Z)(n);return r.createElement("div",{className:"embla"},r.createElement("div",{className:"embla__viewport",ref:a},r.createElement("div",{className:"embla__container"},t.map((e=>r.createElement("div",{className:"embla__slide",key:e},r.createElement("div",{className:"embla__slide__number"},r.createElement("span",null,e+1)),r.createElement("img",{className:"embla__slide__img",src:(0,o.Z)(e),alt:"Your alt text"})))))))}},6375:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});const r=[n.p+"static/slide-1-ae1074a2ded156f4bb23fc2cbf269223.jpg",n.p+"static/slide-2-4a3fdf56a1fd7125dc80f4574dae6bbf.jpg",n.p+"static/slide-3-90be65c116762a9e53a2ddf8b625feec.jpg",n.p+"static/slide-4-f352d7c20aee3f1a7868858247d7dbb7.jpg"];var i=e=>r[e%r.length]},2061:function(e,t,n){"use strict";n.d(t,{j:function(){return w}});var r=n(3302),i=n(6133),o=n(6101),a=n(5252),s=n(9015),c=n(4147),l=n(3471),u=n(5441);var d=n(3792),p=n(4392),f=n(5850);const m=async e=>{const t=await n.e(116).then(n.bind(n,116)),r=d.cE+(0,p.m)(),i=(0,l.g)(e," ");return t.default.replace(f.Wt,r).replace(f.jB,i)};var _=n(1799);const g=async(e,t)=>{let r;r=e?await n.e(6635).then(n.bind(n,6635)):await n.e(6897).then(n.bind(n,6897));const i=(0,l.g)(t," ");return r.default.replace(f.jB,i)};var b=n(2657);const h=async e=>{let t;return t=e?await n.e(8886).then(n.bind(n,8886)):await n.e(6690).then(n.bind(n,6690)),t.default.replace(f.pL,b.n.GITHUB_ROOT)},x=/import(.*)from\s'assets/g,y=async e=>{let t;return t=e?await n.e(8819).then(n.bind(n,6658)):await n.e(9386).then(n.bind(n,9386)),t.default.replace(x,(e=>e.replace("assets","..")))},v=/import(.*)from\s'..\/imageByIndex/,E=async()=>(await n.e(3331).then(n.bind(n,3331))).default,w=async e=>{const{id:t,carouselScript:n,indexScript:d,slides:p,options:b,styles:x,plugins:w,sandboxOverrides:S,language:T=f.yR.JAVASCRIPT}=e,C=t+"-react",A=(0,a.K)(o.m.IMAGES),{prettierConfig:O,formatCss:I}=await(0,s.E)(),{isTypeScript:D,reactScriptExtension:N,vanillaScriptExtension:L,formatScript:k}=await(0,u.sz)(T),R=await(async(e,t,n)=>{const{dependencies:r,devDependencies:i}=c,{isJavaScript:a,reactScriptExtension:s}=await(0,u.sz)(e);return{name:t,version:"1.0.0",description:(0,l.g)(t," ")+" Example",main:o.m.JS+"/index."+s,scripts:{start:"react-scripts start",build:"react-scripts build",test:"react-scripts test --env=jsdom",eject:"react-scripts eject"},dependencies:{react:r.react,"react-dom":r["react-dom"],"react-scripts":"4.0.0","embla-carousel-react":r["embla-carousel-react"],...n&&n},devDependencies:a?{"@babel/runtime":"7.13.8"}:{"@types/react":i["@types/react"],"@types/react-dom":i["@types/react-dom"],typescript:i.typescript},browserslist:[">0.2%","not dead","not ie <= 11","not op_mini all"]}})(T,C,w),M={include:["./src/**/*","./declarations.d.ts"],compilerOptions:{strict:!0,esModuleInterop:!0,lib:["dom","es2015"],jsx:"react-jsx"}},B=(e=>e.replace(v,(e=>e.replace("../","./"))))(n),[j,P,z,G,U,H]=await Promise.all([m(C),d||(0,_.S)(D,p,b),g(D,C),h(D),y(D),E()]),X={".prettierrc":{isBinary:!1,content:JSON.stringify(O,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(R,null,"\t")},[o.m.PUBLIC+"/index.html"]:{isBinary:!1,content:j},[o.m.CSS+"/base.css"]:{isBinary:!1,content:I(i.H)},[o.m.CSS+"/sandbox.css"]:{isBinary:!1,content:I(i.z)},[o.m.CSS+"/embla.css"]:{isBinary:!1,content:I(x)},[o.m.JS+"/index."+N]:{isBinary:!1,content:k(P)},[o.m.JS+"/Header."+N]:{isBinary:!1,content:k(z)},[o.m.JS+"/Footer."+N]:{isBinary:!1,content:k(G)},[o.m.JS+"/EmblaCarousel."+N]:{isBinary:!1,content:k(B)},[o.m.JS+"/imageByIndex."+L]:{isBinary:!1,content:k(U)}};return D&&Object.assign(X,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(M,null,"\t")},"declarations.d.ts":{isBinary:!1,content:H}}),(0,r.Z)({files:Object.assign({},X,A,S)})}},1799:function(e,t,n){"use strict";n.d(t,{N:function(){return l},S:function(){return c}});var r=n(5441),i=n(5850);const o=/import\sEmblaCarousel\sfrom\s'(.*)'/,a=/const\sSLIDE_COUNT\s=\s\d{1,}/,s='import EmblaCarousel from "./EmblaCarousel"',c=async(e,t,c)=>{const l=t.length.toString();let u;return u=e?await n.e(3984).then(n.bind(n,3984)):await n.e(4307).then(n.bind(n,4307)),u.default.replace(o,s).replace(i.jw,(0,r.Y8)(c)).replace(a,(e=>e.replace(/\d{1,}/,l)))},l=async(e,t)=>{let a;return a=e?await n.e(2874).then(n.bind(n,2874)):await n.e(2191).then(n.bind(n,2191)),a.default.replace(o,s).replace(i.st,(0,r.IS)(t))}},6101:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});const r={PUBLIC:"public",CSS:"src/css",JS:"src/js",IMAGES:"src/images"}},9145:function(e,t,n){"use strict";n.d(t,{L:function(){return f}});var r=n(2784),i=n(1195),o=n(6807),a=n(3977),s=n(727),c=n(127),l=n(2829);const u={VANILLA_JS:"javascript",VANILLA_TS:"typescript",REACT_JS:"react",REACT_TS:"react"},d=i.default.span.withConfig({displayName:"SandboxSelectionInput__RadioLabelContent",componentId:"sc-sob6nf-0"})(["display:flex;flex-direction:column;padding:",";line-height:1;text-align:center;align-items:center;font-size:",";font-weight:",";"],c.v.TWO,s.u.DETAIL,s.X.MEDIUM),p=(0,i.default)(o.J).withConfig({displayName:"SandboxSelectionInput__RadioLabelSvg",componentId:"sc-sob6nf-1"})(["",";margin-bottom:",";"],(0,l.x)("3rem"),c.v.TWO),f=e=>{const{children:t,framework:n,...i}=e;return r.createElement(a.R,i,r.createElement(d,null,r.createElement(p,{svg:u[n]}),t))}},1069:function(e,t,n){"use strict";n.d(t,{y:function(){return E}});var r=n(3302),i=n(6133),o=n(5016),a=n(5252),s=n(9015),c=n(4147),l=n(3471),u=n(5441);const d=async()=>(await n.e(6563).then(n.bind(n,6563))).default;var p=n(3792),f=n(2657),m=n(4392),_=n(5850);const g=/__replace_sandbox_script_src__/g,b=/__replace_sandbox_code__/g,h=async(e,t,r)=>{const i=await n.e(9942).then(n.bind(n,9942)),a=p.cE+(0,m.m)(),s=(0,l.g)(e," "),c=o.G.JS+"/index."+t;return i.default.replace(_.Wt,a).replace(_.jB,s).replace(g,c).replace(_.pL,f.n.GITHUB_ROOT).replace(b,r)},x=/\/static\/slide-\d{1,}-.+?\./g,y=/slide-\d{1,}/,v=e=>e.replace(x,(e=>{const t=e.match(y)||[];return o.G.IMAGES+"/"+t+"."})),E=async e=>{const{id:t,carouselScript:n,carouselHtml:p,options:f,styles:m,plugins:g,sandboxOverrides:b,language:x=_.yR.JAVASCRIPT}=e,y=t+"-vanilla",E=(0,a.K)(o.G.IMAGES),{prettierConfig:w,formatHtml:S,formatCss:T}=await(0,s.E)(),{isTypeScript:C,vanillaScriptExtension:A,formatScript:O}=await(0,u.sz)(x),I=await(async(e,t,n)=>{const{isJavaScript:r}=await(0,u.sz)(e),{dependencies:i,devDependencies:o}=c;return{name:t,version:"1.0.0",description:(0,l.g)(t," ")+" Example",main:"index.html",scripts:{start:"parcel index.html --open",build:"parcel build index.html"},dependencies:{"parcel-bundler":"^1.6.1","embla-carousel":i["embla-carousel-react"],...n&&n},devDependencies:r?{"@babel/core":"7.2.0"}:{typescript:o.typescript},resolutions:{"@babel/preset-env":"7.13.8"}}})(x,y,g),D={include:["./src/**/*","./declarations.d.ts"],compilerOptions:{strict:!0,module:"commonjs",jsx:"preserve",esModuleInterop:!0,sourceMap:!0,allowJs:!0,lib:["es6","dom"],rootDir:"src",moduleResolution:"node"}},N=((e,t)=>{const n=null==t?void 0:t.loop;return e.replace(_.jw,(0,u.Y8)(t)).replace(_.st,(0,u.IS)(n))})(n,f),[L,k]=await Promise.all([h(y,A,v(p)),d()]),R={".prettierrc":{isBinary:!1,content:JSON.stringify(w,null,"\t")},"package.json":{isBinary:!1,content:JSON.stringify(I,null,"\t")},"index.html":{isBinary:!1,content:S(L)},[o.G.CSS+"/base.css"]:{isBinary:!1,content:T(i.H)},[o.G.CSS+"/sandbox.css"]:{isBinary:!1,content:T(i.z)},[o.G.CSS+"/embla.css"]:{isBinary:!1,content:T(m)},[o.G.JS+"/index."+A]:{isBinary:!1,content:O(N)}};return C&&Object.assign(R,{"tsconfig.json":{isBinary:!1,content:JSON.stringify(D,null,"\t")},"declarations.d.ts":{isBinary:!1,content:k}}),(0,r.Z)({files:Object.assign({},R,E,b)})}},5016:function(e,t,n){"use strict";n.d(t,{G:function(){return r}});const r={CSS:"src/css",JS:"src/js",IMAGES:"src/images"}},5252:function(e,t,n){"use strict";n.d(t,{K:function(){return o}});var r=n(2657);const i=(0,n(6609).S)(4).map((e=>r.n.GITHUB_DOCUMENTATION_RAW+"/src/assets/images/slide-"+(e+1)+".jpg")),o=e=>i.reduce(((t,n,r)=>({...t,[e+"/slide-"+(r+1)+".jpg"]:{isBinary:!0,content:n}})),{})},6133:function(e,t,n){"use strict";n.d(t,{H:function(){return b},z:function(){return h}});var r=n(1195),i=n(6732),o=n(750),a=n(8781),s=n(3228),c=n(5153),l=n(2717),u=n(2715),d=n(727),p=n(3792);const f=(0,r.css)([".sandbox{width:100%;}","{.sandbox{margin-left:auto;margin-right:auto;max-width:67rem;}}"],l.iD.MIN_SM),m=(0,r.css)([".sandbox__carousel{position:relative;background-color:",";}","{.sandbox__carousel{border-top:"," solid ",";border-bottom:"," solid ",";}}","{.sandbox__carousel{border-radius:",";border:"," solid ",";}}"],p.DM.BACKGROUND_CODE,l.iD.MAX_SM,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST,l.iD.MIN_SM,c.eC,u.x.DETAIL,p.DM.DETAIL_LOW_CONTRAST),_=(0,r.css)([".sandbox__header{font-size:2rem;font-weight:",";text-align:center;padding:4rem 2rem 2rem 2rem;}"],d.X.BOLD),g=(0,r.css)([".sandbox__footer{display:flex;justify-content:center;padding:2rem 2rem 4rem 2rem;}.sandbox__footer__link{display:flex;align-items:center;background-color:transparent;text-decoration:none;text-align:center;font-weight:",";color:",";font-size:1.4rem;}.sandbox__footer__link__svg{display:block;width:2rem;height:2rem;margin-right:1rem;fill:currentColor;}"],d.X.BOLD,p.DM.TEXT_LOW_CONTRAST),b=(0,i.J)(p.CX,o.C,a.u,s.h),h=(0,i.J)(f,m,_,g)},4234:function(e,t,n){"use strict";n.d(t,{p:function(){return s}});var r=n(2784),i=n(8116),o=n(8944),a=n(3471);const s=e=>{const{title:t,description:n,lang:s="en",url:c,children:l}=e,u=(0,i.$)(),d=t+" | "+(0,a.g)(u.title),p=n||u.description;return r.createElement(r.Fragment,null,r.createElement("html",{lang:s}),r.createElement("title",null,d),r.createElement("link",{rel:"canonical",href:c}),r.createElement("meta",{name:"description",content:p}),r.createElement("meta",{name:"og:title",content:t}),r.createElement("meta",{name:"og:description",content:p}),r.createElement("meta",{name:"og:type",content:"article"}),r.createElement("meta",{name:"og:locale",content:"en_EN"}),r.createElement("meta",{name:"og:url",content:c}),r.createElement("meta",{name:"og:site_name",content:(0,o.P)(u.siteUrl)}),r.createElement("meta",{name:"twitter:card",content:"summary"}),r.createElement("meta",{name:"twitter:creator",content:u.author}),r.createElement("meta",{name:"twitter:title",content:t}),r.createElement("meta",{name:"twitter:description",content:p}),l)}},5850:function(e,t,n){"use strict";n.d(t,{Ld:function(){return s},Wt:function(){return u},XE:function(){return a},jB:function(){return l},jw:function(){return d},pL:function(){return c},st:function(){return p},yR:function(){return o},zr:function(){return i}});var r=n(127);const i={VANILLA_JS:"Vanilla",VANILLA_TS:"Vanilla + TypeScript",REACT_TS:"React + TypeScript",REACT_JS:"React"},o={JAVASCRIPT:"javascript",TYPESCRIPT:"typescript"},a={AUTOPLAY:"embla-carousel-autoplay",CLASS_NAMES:"embla-carousel-class-names"},s=r.v.ONE,c=/__replace_sandbox_repository_url__/g,l=/__replace_sandbox_title__/g,u=/__replace_sandbox_theme__/g,d=/const\sOPTIONS(.*)/,p=/const\sLOOP\s=\sfalse/},6609:function(e,t,n){"use strict";n.d(t,{S:function(){return r}});const r=e=>Array.from(Array(e).keys())},4392:function(e,t,n){"use strict";n.d(t,{m:function(){return o}});var r=n(3792),i=n(7712);const o=()=>{if(!i.j)return r.YD.LIGHT;const e=r.cE+r.YD.LIGHT;return document.documentElement.classList.contains(e)?r.YD.LIGHT:r.YD.DARK}},3471:function(e,t,n){"use strict";n.d(t,{g:function(){return r}});const r=function(e,t){return void 0===e&&(e=""),void 0===t&&(t=""),e.replace(/(^\w|-\w)/g,(e=>e.replace(/-/,t).toUpperCase()))}},9015:function(e,t,n){"use strict";n.d(t,{E:function(){return o}});var r=n(1959);const i=n.n(r)(),o=async()=>{const[e,t,r,o]=await Promise.all([n.e(2859).then(n.t.bind(n,9691,23)),n.e(7572).then(n.t.bind(n,3282,23)),n.e(1039).then(n.t.bind(n,1039,23)),n.e(777).then(n.t.bind(n,8483,23))]),a={...i,parser:"html",plugins:[t]},s={...i,parser:"css",plugins:[r]},c={...i,parser:"babel",plugins:[o]},l={...i,parser:"babel-ts",plugins:[o]},u=(t,n)=>{let r="";try{r=e.format(t,n)}catch(i){console.warn("Prettier was not able to format file",i)}return r};return{prettierConfig:i,formatHtml:e=>u(e,a),formatCss:e=>u(e,s),formatJs:e=>u(e,c),formatTs:e=>u(e,l)}}},8944:function(e,t,n){"use strict";n.d(t,{P:function(){return r}});const r=e=>e.replace(/(^\w+:|^)\/\//,"")},5441:function(e,t,n){"use strict";n.d(t,{$b:function(){return s},IS:function(){return u},Y8:function(){return l},d6:function(){return c},sz:function(){return a}});var r=n(4147),i=n(9015),o=n(5850);const a=async e=>{const{formatTs:t,formatJs:n}=await(0,i.E)(),r=e===o.yR.TYPESCRIPT,a=!r;return{isJavaScript:a,isTypeScript:r,vanillaScriptExtension:a?"js":"ts",reactScriptExtension:a?"jsx":"tsx",formatScript:r?t:n}},s=e=>Object.keys(e).map((t=>{const n=t,r=e[n];return{key:n,label:o.zr[n],createSandbox:r}})),c=e=>({plugins:{...(Array.isArray(e)?e:[e]).reduce(((e,t)=>({...e,[t]:r.dependencies[t]})),{})}}),l=e=>t=>t.replace("{}",JSON.stringify(e)),u=function(e){return void 0===e&&(e=!1),t=>t.replace("false",e.toString())}},6732:function(e,t,n){"use strict";n.d(t,{J:function(){return r}});const r=function(){for(var e=arguments.length,t=new Array(e),n=0;ne+t.join("")),"")}},1959:function(e,t,n){e.exports=n(5108)},2270:function(e,t,n){"use strict";n.d(t,{Z:function(){return X}});var r=n(2784);function i(e){return function(e){return"[object Object]"===Object.prototype.toString.call(e)}(e)||Array.isArray(e)}function o(e,t){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;return JSON.stringify(Object.keys(e.breakpoints||{}))===JSON.stringify(Object.keys(t.breakpoints||{}))&&n.every((n=>{const r=e[n],a=t[n];return"function"==typeof r?""+r==""+a:i(r)&&i(a)?o(r,a):r===a}))}function a(e){return e.concat().sort(((e,t)=>e.name>t.name?1:-1)).map((e=>e.options))}var s=n(4616);function c(e){return"number"==typeof e}function l(e){return"string"==typeof e}function u(e){return"boolean"==typeof e}function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function p(e){return Math.abs(e)}function f(e){return Math.sign(e)}function m(e,t){return p(e-t)}function _(e){return y(e).map(Number)}function g(e){return e[b(e)]}function b(e){return Math.max(0,e.length-1)}function h(e,t){return t===b(e)}function x(e,t){return void 0===t&&(t=0),Array.from(Array(e),((e,n)=>t+n))}function y(e){return Object.keys(e)}function v(e,t){return[e,t].reduce(((e,t)=>(y(t).forEach((n=>{const r=e[n],i=t[n],o=d(r)&&d(i);e[n]=o?v(r,i):i})),e)),{})}function E(e,t){return void 0!==t.MouseEvent&&e instanceof t.MouseEvent}function w(){let e=[];const t={add:function(n,r,i,o){let a;if(void 0===o&&(o={passive:!0}),"addEventListener"in n)n.addEventListener(r,i,o),a=()=>n.removeEventListener(r,i,o);else{const e=n;e.addListener(i),a=()=>e.removeListener(i)}return e.push(a),t},clear:function(){e=e.filter((e=>e()))}};return t}function S(e,t,n,r){const i=w(),o=1e3/60;let a=null,s=0,c=0;function l(e){a||(a=e);const i=e-a;for(a=e,s+=i;s>=o;)n(),s-=o;const u=p(s/o);r(u),c&&t.requestAnimationFrame(l)}function u(){t.cancelAnimationFrame(c),a=null,s=0,c=0}return{init:function(){i.add(e,"visibilitychange",(()=>{e.hidden&&(a=null,s=0)}))},destroy:function(){u(),i.clear()},start:function(){c||(c=t.requestAnimationFrame(l))},stop:u,update:n,render:r}}function T(e,t){void 0===e&&(e=0),void 0===t&&(t=0);const n=p(e-t);function r(t){return tt}function o(e){return r(e)||i(e)}return{length:n,max:t,min:e,constrain:function(n){return o(n)?r(n)?e:t:n},reachedAny:o,reachedMax:i,reachedMin:r,removeOffset:function(e){return n?e-n*Math.ceil((e-t)/n):e}}}function C(e,t,n){const{constrain:r}=T(0,e),i=e+1;let o=a(t);function a(e){return n?p((i+e)%i):r(e)}function s(){return o}function c(){return C(e,s(),n)}const l={get:s,set:function(e){return o=a(e),l},add:function(e){return c().set(s()+e)},clone:c};return l}function A(e,t,n,r,i,o,a,s,c,l,d,_,g,b,h,x,y,v,S,C){const{cross:A}=e,O=["INPUT","SELECT","TEXTAREA"],I={passive:!1},D=w(),N=w(),L=T(50,225).constrain(h.measure(20)),k={mouse:300,touch:400},R={mouse:500,touch:600},M=x?43:25;let B=!1,j=0,P=0,z=!1,G=!1,U=!1,H=!1;function X(e){const n=a.readPoint(e),r=a.readPoint(e,A),i=m(n,j),s=m(r,P);if(!G&&!H){if(!e.cancelable)return J(e);if(G=i>s,!G)return J(e)}const l=a.pointerMove(e);i>y&&(U=!0),d.useFriction(.3).useDuration(1),c.start(),o.add(t.apply(l)),e.preventDefault()}function J(e){const n=_.byDistance(0,!1).index!==g.get(),r=a.pointerUp(e)*(x?R:k)[H?"mouse":"touch"],i=function(e,t){const n=g.add(-1*f(e)),r=_.byDistance(e,!x).distance;return x||p(e)=2,z=!0,a.pointerDown(e),d.useFriction(0).useDuration(0),o.set(s),function(){const e=H?r:n;N.add(e,"touchmove",X,I).add(e,"touchend",J).add(e,"mousemove",X,I).add(e,"mouseup",J)}(),j=a.readPoint(e),P=a.readPoint(e,A),b.emit("pointerDown")}(t)}const c=n;D.add(c,"dragstart",(e=>e.preventDefault()),I).add(c,"touchmove",(()=>{}),I).add(c,"touchend",(()=>{})).add(c,"touchstart",t).add(c,"mousedown",t).add(c,"touchcancel",J).add(c,"contextmenu",J).add(c,"click",V,!0)},pointerDown:function(){return z},destroy:function(){D.clear(),N.clear()}}}function O(e,t){let n,r;function i(e){return e.timeStamp}function o(n,r){const i="client"+("x"===(r||e.scroll)?"X":"Y");return(E(n,t)?n:n.touches[0])[i]}return{pointerDown:function(e){return n=e,r=e,o(e)},pointerMove:function(e){const t=o(e)-o(r),a=i(e)-i(n)>170;return r=e,a&&(n=e),t},pointerUp:function(e){if(!n||!r)return 0;const t=o(r)-o(n),a=i(e)-i(n),s=i(e)-i(r)>170,c=t/a;return a&&!s&&p(c)>.1?c:0},readPoint:o}}function I(e,t,n,r,i,o,a){let s,c,l=[],d=!1;function f(e){return i.measureSize(a.measure(e))}return{init:function(i){if(!o)return;c=f(e),l=r.map(f),s=new ResizeObserver((a=>{d||(u(o)||o(i,a))&&function(o){for(const a of o){const o=a.target===e,s=r.indexOf(a.target),u=o?c:l[s];if(p(f(o?e:r[s])-u)>=.5){n.requestAnimationFrame((()=>{i.reInit(),t.emit("resize")}));break}}}(a)})),[e].concat(r).forEach((e=>s.observe(e)))},destroy:function(){s&&s.disconnect(),d=!0}}}function D(e,t,n,r,i){const o=i.measure(10),a=i.measure(50),s=T(.1,.99);let c=!1;return{constrain:function(i){if(c||!e.reachedAny(n.get())||!e.reachedAny(t.get()))return;const l=e.reachedMin(t.get())?"min":"max",u=p(e[l]-t.get()),d=n.get()-t.get(),f=s.constrain(u/a);n.subtract(d*f),!i&&p(d)e.add(i)))}}}function L(e,t,n,r,i){const{reachedAny:o,removeOffset:a,constrain:s}=r;function c(e){return e.concat().sort(((e,t)=>p(e)-p(t)))[0]}function l(t,r){const i=[t,t+n,t-n];if(!e)return i[0];if(!r)return c(i);const o=i.filter((e=>f(e)===r));return o.length?c(o):g(i)-n}return{byDistance:function(n,r){const c=i.get()+n,{index:u,distance:d}=function(n){const r=e?a(n):s(n),i=t.map((e=>e-r)).map((e=>l(e,0))).map(((e,t)=>({diff:e,index:t}))).sort(((e,t)=>p(e.diff)-p(t.diff))),{index:o}=i[0];return{index:o,distance:r}}(c),f=!e&&o(c);return!r||f?{index:u,distance:n}:{index:u,distance:n+l(t[u]-d,0)}},byIndex:function(e,n){return{index:e,distance:l(t[e]-i.get(),n)}},shortcut:l}}function k(e){let t=e;function n(e){return c(e)?e:e.get()}return{get:function(){return t},set:function(e){t=n(e)},add:function(e){t+=n(e)},subtract:function(e){t-=n(e)}}}function R(e,t,n){const r="x"===e.scroll?function(e){return"translate3d("+e+"px,0px,0px)"}:function(e){return"translate3d(0px,"+e+"px,0px)"},i=n.style;let o=!1;return{clear:function(){o||(i.transform="",n.getAttribute("style")||n.removeAttribute("style"))},to:function(e){o||(i.transform=r(t.apply(e)))},toggleActive:function(e){o=!e}}}function M(e,t,n,r,i,o,a,s,c,l){const u=_(o),d=_(o).reverse(),p=function(){const e=s[0];return g(m(d,e),r,!1)}().concat(function(){const e=n-s[0]-1;return g(m(u,e),-r,!0)}());function f(e,t){return e.reduce(((e,t)=>e-o[t]),t)}function m(e,t){return e.reduce(((e,n)=>f(e,t)>0?e.concat([n]):e),[])}function g(o,s,u){const d=function(e){return a.map(((t,r)=>({start:t-i[r]+.5+e,end:t+n-.5+e})))}(s);return o.map((n=>{const i=u?0:-r,o=u?r:0,a=u?"end":"start",s=d[n][a];return{index:n,loopPoint:s,slideLocation:k(-1),translate:R(e,t,l[n]),target:()=>c.get()>s?i:o}}))}return{canLoop:function(){return p.every((e=>{let{index:t}=e;return f(u.filter((e=>e!==t)),n)<=.1}))},clear:function(){p.forEach((e=>e.translate.clear()))},loop:function(){p.forEach((e=>{const{target:t,translate:n,slideLocation:r}=e,i=t();i!==r.get()&&(n.to(i),r.set(i))}))},loopPoints:p}}function B(e,t,n){let r,i=!1;return{init:function(o){n&&(r=new MutationObserver((e=>{i||(u(n)||n(o,e))&&function(e){for(const n of e)if("childList"===n.type){o.reInit(),t.emit("slidesChanged");break}}(e)})),r.observe(e,{childList:!0}))},destroy:function(){r&&r.disconnect(),i=!0}}}function j(e,t,n,r){const i={};let o,a=null,s=null,c=!1;return{init:function(){o=new IntersectionObserver((e=>{c||(e.forEach((e=>{const n=t.indexOf(e.target);i[n]=e})),a=null,s=null,n.emit("slidesInView"))}),{root:e.parentElement,threshold:r}),t.forEach((e=>o.observe(e)))},destroy:function(){o&&o.disconnect(),c=!0},get:function(e){if(void 0===e&&(e=!0),e&&a)return a;if(!e&&s)return s;const t=function(e){return y(i).reduce(((t,n)=>{const r=parseInt(n),{isIntersecting:o}=i[r];return(e&&o||!e&&!o)&&t.push(r),t}),[])}(e);return e&&(a=t),e||(s=t),t}}}function P(e,t,n,r,i,o,a,s,l,u){const{startEdge:d,endEdge:f}=e,m=c(r);return{groupSlides:function(e){return m?function(e,t){return _(e).filter((e=>e%t==0)).map((n=>e.slice(n,n+t)))}(e,r):function(e){return e.length?_(e).reduce(((r,c)=>{const m=g(r)||0,_=0===m,h=c===b(e),x=o[d]-a[m][d],y=o[d]-a[c][f],v=!i&&_?t.apply(s):0;return p(y-(!i&&h?t.apply(l):0)-(x+v))>n+u&&r.push(c),h&&r.push(e.length),r}),[]).map(((t,n,r)=>{const i=Math.max(r[n-1]||0);return e.slice(i,t)})):[]}(e)}}}function z(e,t,n,r,i,o,a){const{align:s,axis:u,direction:d,startIndex:m,loop:y,duration:v,dragFree:E,dragThreshold:z,inViewThreshold:G,slidesToScroll:U,skipSnaps:H,containScroll:X,watchResize:J,watchSlides:V,watchDrag:W}=o,F={measure:function(e){const{offsetTop:t,offsetLeft:n,offsetWidth:r,offsetHeight:i}=e;return{top:t,right:n+r,bottom:t+i,left:n,width:r,height:i}}},K=F.measure(t),Y=n.map(F.measure),Z=function(e){const t="rtl"===e?-1:1;return{apply:function(e){return e*t}}}(d),q=function(e,t){const n="y"===e?"y":"x";return{scroll:n,cross:"y"===e?"x":"y",startEdge:"y"===n?"top":"rtl"===t?"right":"left",endEdge:"y"===n?"bottom":"rtl"===t?"left":"right",measureSize:function(e){const{width:t,height:r}=e;return"x"===n?t:r}}}(u,d),$=q.measureSize(K),Q=function(e){return{measure:function(t){return e*(t/100)}}}($),ee=function(e,t){const n={start:function(){return 0},center:function(e){return r(e)/2},end:r};function r(e){return t-e}return{measure:function(r,i){return l(e)?n[e](r):e(t,r,i)}}}(s,$),te=!y&&!!X,ne=y||!!X,{slideSizes:re,slideSizesWithGaps:ie,startGap:oe,endGap:ae}=function(e,t,n,r,i,o){const{measureSize:a,startEdge:s,endEdge:c}=e,l=n[0]&&i,u=function(){if(!l)return 0;const e=n[0];return p(t[s]-e[s])}(),d=function(){if(!l)return 0;const e=o.getComputedStyle(g(r));return parseFloat(e.getPropertyValue("margin-"+c))}(),f=n.map(a),m=n.map(((e,t,n)=>{const r=!t,i=h(n,t);return r?f[t]+u:i?f[t]+d:n[t+1][s]-e[s]})).map(p);return{slideSizes:f,slideSizesWithGaps:m,startGap:u,endGap:d}}(q,K,Y,n,ne,i),se=P(q,Z,$,U,y,K,Y,oe,ae,2),{snaps:ce,snapsAligned:le}=function(e,t,n,r,i){const{startEdge:o,endEdge:a}=e,{groupSlides:s}=i,c=s(r).map((e=>g(e)[a]-e[0][o])).map(p).map(t.measure),l=r.map((e=>n[o]-e[o])).map((e=>-p(e))),u=s(l).map((e=>e[0])).map(((e,t)=>e+c[t]));return{snaps:l,snapsAligned:u}}(q,ee,K,Y,se),ue=-g(ce)+g(ie),{snapsContained:de,scrollContainLimit:pe}=function(e,t,n,r,i){const o=T(-t+e,0),a=n.map(((e,t)=>{const r=!t,i=h(n,t);return r?o.max:i?o.min:o.constrain(e)})).map((e=>parseFloat(e.toFixed(3)))),s=function(){const e=a[0],t=g(a);return T(a.lastIndexOf(e),a.indexOf(t)+1)}();return{snapsContained:function(){if(t<=e+i)return[o.max];if("keepSnaps"===r)return a;const{min:n,max:c}=s;return a.slice(n,c)}(),scrollContainLimit:s}}($,ue,le,X,2),fe=te?de:le,{limit:me}=function(e,t,n){const r=t[0];return{limit:T(n?r-e:g(t),r)}}(ue,fe,y),_e=C(b(fe),m,y),ge=_e.clone(),be=_(n),he=S(r,i,(()=>(e=>{let{dragHandler:t,scrollBody:n,scrollBounds:r,options:{loop:i}}=e;i||r.constrain(t.pointerDown()),n.seek()})(Ne)),(e=>((e,t)=>{let{scrollBody:n,translate:r,location:i,offsetLocation:o,scrollLooper:a,slideLooper:s,dragHandler:c,animation:l,eventHandler:u,options:{loop:d}}=e;const p=n.velocity(),f=n.settled();f&&!c.pointerDown()&&(l.stop(),u.emit("settle")),f||u.emit("scroll"),o.set(i.get()-p+p*t),d&&(a.loop(n.direction()),s.loop()),r.to(o.get())})(Ne,e))),xe=fe[_e.get()],ye=k(xe),ve=k(xe),Ee=k(xe),we=function(e,t,n,r,i){let o=0,a=0,s=r,c=i,l=e.get(),u=0;function d(e){return s=e,_}function m(e){return c=e,_}const _={direction:function(){return a},duration:function(){return s},velocity:function(){return o},seek:function(){const t=n.get()-e.get();let r=0;return s?(o+=t/s,o*=c,l+=o,e.add(o),r=l-u):(o=0,e.set(n),r=t),a=f(r),u=l,_},settled:function(){return p(n.get()-t.get())<.001},useBaseFriction:function(){return m(i)},useBaseDuration:function(){return d(r)},useFriction:m,useDuration:d};return _}(ye,ve,Ee,v,.68),Se=L(y,fe,ue,me,Ee),Te=function(e,t,n,r,i,o,a){function s(i){const s=i.distance,c=i.index!==t.get();o.add(s),s&&(r.duration()?e.start():(e.update(),e.render(1),e.update())),c&&(n.set(t.get()),t.set(i.index),a.emit("select"))}return{distance:function(e,t){s(i.byDistance(e,t))},index:function(e,n){const r=t.clone().set(e);s(i.byIndex(r.get(),n))}}}(he,_e,ge,we,Se,Ee,a),Ce=function(e){const{max:t,length:n}=e;return{get:function(e){return n?(e-t)/-n:0}}}(me),Ae=w(),Oe=j(t,n,a,G),{slideRegistry:Ie}=function(e,t,n,r,i,o){const{groupSlides:a}=i,{min:s,max:c}=r;return{slideRegistry:function(){const r=a(o),i=!e||"keepSnaps"===t;return 1===n.length?[o]:i?r:r.slice(s,c).map(((e,t,n)=>{const r=!t,i=h(n,t);return r?x(g(n[0])+1):i?x(b(o)-g(n)[0]+1,g(n)[0]):e}))}()}}(te,X,fe,pe,se,be),De=function(e,t,n,r,i,o){let a=0;function s(e){"Tab"===e.code&&(a=(new Date).getTime())}function l(s){o.add(s,"focus",(()=>{if((new Date).getTime()-a>10)return;e.scrollLeft=0;const o=t.indexOf(s),l=n.findIndex((e=>e.includes(o)));c(l)&&(i.useDuration(0),r.index(l,0))}),{passive:!0,capture:!0})}return{init:function(){o.add(document,"keydown",s,!1),t.forEach(l)}}}(e,n,Ie,Te,we,Ae),Ne={ownerDocument:r,ownerWindow:i,eventHandler:a,containerRect:K,slideRects:Y,animation:he,axis:q,direction:Z,dragHandler:A(q,Z,e,r,i,Ee,O(q,i),ye,he,Te,we,Se,_e,a,Q,E,z,H,.68,W),eventStore:Ae,percentOfView:Q,index:_e,indexPrevious:ge,limit:me,location:ye,offsetLocation:ve,options:o,resizeHandler:I(t,a,i,n,q,J,F),scrollBody:we,scrollBounds:D(me,ye,Ee,we,Q),scrollLooper:N(ue,me,ve,[ye,ve,Ee]),scrollProgress:Ce,scrollSnapList:fe.map(Ce.get),scrollSnaps:fe,scrollTarget:Se,scrollTo:Te,slideLooper:M(q,Z,$,ue,re,ie,ce,fe,ve,n),slideFocus:De,slidesHandler:B(t,a,V),slidesInView:Oe,slideIndexes:be,slideRegistry:Ie,slidesToScroll:se,target:Ee,translate:R(q,Z,t)};return Ne}const G={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0};function U(e){function t(e,t){return v(e,t||{})}const n={mergeOptions:t,optionsAtMedia:function(n){const r=n.breakpoints||{},i=y(r).filter((t=>e.matchMedia(t).matches)).map((e=>r[e])).reduce(((e,n)=>t(e,n)),{});return t(n,i)},optionsMediaQueries:function(t){return t.map((e=>y(e.breakpoints||{}))).reduce(((e,t)=>e.concat(t)),[]).map(e.matchMedia)}};return n}function H(e,t,n){const r=e.ownerDocument,i=r.defaultView,o=U(i),a=function(e){let t=[];return{init:function(n,r){return t=r.filter((t=>{let{options:n}=t;return!1!==e.optionsAtMedia(n).active})),t.forEach((t=>t.init(n,e))),r.reduce(((e,t)=>Object.assign(e,{[t.name]:t})),{})},destroy:function(){t=t.filter((e=>e.destroy()))}}}(o),c=w(),u=function(){const e={};let t;function n(t){return e[t]||[]}const r={init:function(e){t=e},emit:function(e){return n(e).forEach((n=>n(t,e))),r},off:function(t,i){return e[t]=n(t).filter((e=>e!==i)),r},on:function(t,i){return e[t]=n(t).concat([i]),r}};return r}(),{mergeOptions:d,optionsAtMedia:p,optionsMediaQueries:f}=o,{on:m,off:_,emit:g}=u,b=I;let h,x,y,v,E=!1,S=d(G,H.globalOptions),T=d(S),C=[];function A(t){const n=z(e,y,v,r,i,t,u);if(t.loop&&!n.slideLooper.canLoop()){return A(Object.assign({},t,{loop:!1}))}return n}function O(t,n){E||(S=d(S,t),T=p(S),C=n||C,function(){const{container:t,slides:n}=T,r=l(t)?e.querySelector(t):t;y=r||e.children[0];const i=l(n)?y.querySelectorAll(n):n;v=[].slice.call(i||y.children)}(),h=A(T),f([S].concat((0,s.Z)(C.map((e=>{let{options:t}=e;return t}))))).forEach((e=>c.add(e,"change",I))),T.active&&(h.translate.to(h.location.get()),h.animation.init(),h.slidesInView.init(),h.slideFocus.init(),h.eventHandler.init(k),h.resizeHandler.init(k),h.slidesHandler.init(k),h.options.loop&&h.slideLooper.loop(),y.offsetParent&&v.length&&h.dragHandler.init(k),x=a.init(k,C)))}function I(e,t){const n=L();D(),O(d({startIndex:n},e),t),u.emit("reInit")}function D(){h.dragHandler.destroy(),h.eventStore.clear(),h.translate.clear(),h.slideLooper.clear(),h.resizeHandler.destroy(),h.slidesHandler.destroy(),h.slidesInView.destroy(),h.animation.destroy(),a.destroy(),c.clear()}function N(e,t,n){T.active&&!E&&(h.scrollBody.useBaseFriction().useDuration(!0===t?0:T.duration),h.scrollTo.index(e,n||0))}function L(){return h.index.get()}const k={canScrollNext:function(){return h.index.add(1).get()!==L()},canScrollPrev:function(){return h.index.add(-1).get()!==L()},containerNode:function(){return y},internalEngine:function(){return h},destroy:function(){E||(E=!0,c.clear(),D(),u.emit("destroy"))},off:_,on:m,emit:g,plugins:function(){return x},previousScrollSnap:function(){return h.indexPrevious.get()},reInit:b,rootNode:function(){return e},scrollNext:function(e){N(h.index.add(1).get(),e,-1)},scrollPrev:function(e){N(h.index.add(-1).get(),e,1)},scrollProgress:function(){return h.scrollProgress.get(h.location.get())},scrollSnapList:function(){return h.scrollSnapList},scrollTo:N,selectedScrollSnap:L,slideNodes:function(){return v},slidesInView:function(){return h.slidesInView.get()},slidesNotInView:function(){return h.slidesInView.get(!1)}};return O(t,n),setTimeout((()=>u.emit("init")),0),k}function X(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);const n=(0,r.useRef)(e),i=(0,r.useRef)(t),{0:s,1:c}=(0,r.useState)(),{0:l,1:u}=(0,r.useState)(),d=(0,r.useCallback)((()=>{s&&s.reInit(n.current,i.current)}),[s]);return(0,r.useEffect)((()=>{if("undefined"!=typeof window&&window.document&&window.document.createElement&&l){H.globalOptions=X.globalOptions;const e=H(l,n.current,i.current);return c(e),()=>e.destroy()}c(void 0)}),[l,c]),(0,r.useEffect)((()=>{o(n.current,e)||(n.current=e,d())}),[e,d]),(0,r.useEffect)((()=>{(function(e,t){if(e.length!==t.length)return!1;const n=a(e),r=a(t);return n.every(((e,t)=>o(e,r[t])))})(i.current,t)||(i.current=t,d())}),[t,d]),[u,s]}H.globalOptions=void 0,X.globalOptions=void 0},6954:function(e,t,n){var r,i=function(){var e=String.fromCharCode,t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",r={};function i(e,t){if(!r[e]){r[e]={};for(var n=0;n>>8,n[2*r+1]=a%256}return n},decompressFromUint8Array:function(t){if(null==t)return o.decompress(t);for(var n=new Array(t.length/2),r=0,i=n.length;r>=1}else{for(i=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(i=a[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++),a[l]=p++,u=String(c)}if(""!==u){if(Object.prototype.hasOwnProperty.call(s,u)){if(u.charCodeAt(0)<256){for(r=0;r>=1}else{for(i=1,r=0;r>=1}0==--d&&(d=Math.pow(2,f),f++),delete s[u]}else for(i=a[u],r=0;r>=1;0==--d&&(d=Math.pow(2,f),f++)}for(i=2,r=0;r>=1;for(;;){if(_<<=1,g==t-1){m.push(n(_));break}g++}return m.join("")},decompress:function(e){return null==e?"":""==e?null:o._decompress(e.length,32768,(function(t){return e.charCodeAt(t)}))},_decompress:function(t,n,r){var i,o,a,s,c,l,u,d=[],p=4,f=4,m=3,_="",g=[],b={val:r(0),position:n,index:1};for(i=0;i<3;i+=1)d[i]=i;for(a=0,c=Math.pow(2,2),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;switch(a){case 0:for(a=0,c=Math.pow(2,8),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;u=e(a);break;case 1:for(a=0,c=Math.pow(2,16),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;u=e(a);break;case 2:return""}for(d[3]=u,o=u,g.push(u);;){if(b.index>t)return"";for(a=0,c=Math.pow(2,m),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;switch(u=a){case 0:for(a=0,c=Math.pow(2,8),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;d[f++]=e(a),u=f-1,p--;break;case 1:for(a=0,c=Math.pow(2,16),l=1;l!=c;)s=b.val&b.position,b.position>>=1,0==b.position&&(b.position=n,b.val=r(b.index++)),a|=(s>0?1:0)*l,l<<=1;d[f++]=e(a),u=f-1,p--;break;case 2:return g.join("")}if(0==p&&(p=Math.pow(2,m),m++),d[u])_=d[u];else{if(u!==f)return null;_=o+o.charAt(0)}g.push(_),d[f++]=o+_.charAt(0),o=_,0==--p&&(p=Math.pow(2,m),m++)}}};return o}();void 0===(r=function(){return i}.call(t,n,t,e))||(e.exports=r)},3785:function(e,t,n){"use strict";t.Z=n.p+"static/maskable-36b9e327abc26d5d02e9350d184a058f.png"}}]); +//# sourceMappingURL=8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js.map \ No newline at end of file diff --git a/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js.map b/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js.map new file mode 100644 index 000000000..451362b9b --- /dev/null +++ b/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js.map @@ -0,0 +1 @@ +{"version":3,"file":"8f5f0cd04ffec97d1554747721fca69c239d75f0-15801db6452422d7955b.js","mappings":"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","sources":["webpack://embla-carousel-docs/../../node_modules/codesandbox-import-utils/lib/api/define.js","webpack://embla-carousel-docs/../../node_modules/codesandbox/lib/api/define.js","webpack://embla-carousel-docs/../../.prettierrc.js","webpack://embla-carousel-docs/./src/components/Examples/carouselWrapperStyles.ts","webpack://embla-carousel-docs/./src/components/Examples/createCarouselStyles.ts","webpack://embla-carousel-docs/./src/components/Input/InputRadio.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxCard.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxDefault.tsx","webpack://embla-carousel-docs/./src/components/Page/PageBreadcrumbs.tsx","webpack://embla-carousel-docs/./src/hooks/useRouteBreadcrumbs.ts","webpack://embla-carousel-docs/./src/components/Page/PageEditThisPage.tsx","webpack://embla-carousel-docs/./src/components/Page/PagePagination.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Default/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/imageByIndex.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactIndexHtml.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactHeader.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactFooter.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImages.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImagePath.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsDeclarations.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReact.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/sandboxReactFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionInput.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsDeclarations.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanilla.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaOptions.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/sandboxVanillaFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStyles.ts","webpack://embla-carousel-docs/./src/components/Seo/Seo.tsx","webpack://embla-carousel-docs/./src/consts/sandbox.ts","webpack://embla-carousel-docs/./src/utils/arrayFromNumber.ts","webpack://embla-carousel-docs/./src/utils/getThemeFromDocument.ts","webpack://embla-carousel-docs/./src/utils/kebabCaseToPascalCase.ts","webpack://embla-carousel-docs/./src/utils/loadPrettier.ts","webpack://embla-carousel-docs/./src/utils/removeProtocol.ts","webpack://embla-carousel-docs/./src/utils/sandbox.ts","webpack://embla-carousel-docs/./src/utils/styledComponentStylesToString.ts","webpack://embla-carousel-docs/./.prettierrc.js","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Alignment.ts","webpack://embla-carousel-docs/../src/components/EventStore.ts","webpack://embla-carousel-docs/../src/components/Animations.ts","webpack://embla-carousel-docs/../src/components/Axis.ts","webpack://embla-carousel-docs/../src/components/Limit.ts","webpack://embla-carousel-docs/../src/components/Counter.ts","webpack://embla-carousel-docs/../src/components/Direction.ts","webpack://embla-carousel-docs/../src/components/DragHandler.ts","webpack://embla-carousel-docs/../src/components/DragTracker.ts","webpack://embla-carousel-docs/../src/components/ResizeHandler.ts","webpack://embla-carousel-docs/../src/components/ScrollBounds.ts","webpack://embla-carousel-docs/../src/components/ScrollLooper.ts","webpack://embla-carousel-docs/../src/components/ScrollTarget.ts","webpack://embla-carousel-docs/../src/components/Vector1d.ts","webpack://embla-carousel-docs/../src/components/Translate.ts","webpack://embla-carousel-docs/../src/components/SlideLooper.ts","webpack://embla-carousel-docs/../src/components/SlidesHandler.ts","webpack://embla-carousel-docs/../src/components/SlidesInView.ts","webpack://embla-carousel-docs/../src/components/SlidesToScroll.ts","webpack://embla-carousel-docs/../src/components/Engine.ts","webpack://embla-carousel-docs/../src/components/NodeRects.ts","webpack://embla-carousel-docs/../src/components/PercentOfView.ts","webpack://embla-carousel-docs/../src/components/SlideSizes.ts","webpack://embla-carousel-docs/../src/components/ScrollSnaps.ts","webpack://embla-carousel-docs/../src/components/ScrollContain.ts","webpack://embla-carousel-docs/../src/components/ScrollLimit.ts","webpack://embla-carousel-docs/../src/components/ScrollBody.ts","webpack://embla-carousel-docs/../src/components/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.ts","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/OptionsHandler.ts","webpack://embla-carousel-docs/../src/components/EmblaCarousel.ts","webpack://embla-carousel-docs/../src/components/PluginsHandler.ts","webpack://embla-carousel-docs/../src/components/EventHandler.ts","webpack://embla-carousel-docs/../src/components/useEmblaCarousel.ts","webpack://embla-carousel-docs/../../node_modules/lz-string/libs/lz-string.js","webpack://embla-carousel-docs/./src/assets/images/maskable.png"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LZString = require(\"lz-string\");\nfunction compress(input) {\n return LZString.compressToBase64(input)\n .replace(/\\+/g, \"-\") // Convert '+' to '-'\n .replace(/\\//g, \"_\") // Convert '/' to '_'\n .replace(/=+$/, \"\"); // Remove ending '='\n}\nfunction getParameters(parameters) {\n return compress(JSON.stringify(parameters));\n}\nexports.getParameters = getParameters;\n//# sourceMappingURL=define.js.map","\"use strict\";\nexports.__esModule = true;\nexports.getParameters = void 0;\nvar define_1 = require(\"codesandbox-import-utils/lib/api/define\");\nexports.getParameters = define_1.getParameters;\n//# sourceMappingURL=define.js.map","module.exports = {\n bracketSpacing: true,\n printWidth: 80,\n semi: false,\n singleQuote: true,\n trailingComma: 'none',\n tabWidth: 2,\n useTabs: false\n}\n","import { pageFrameCollapseStyles } from 'components/Page/PageFrameCollapse'\nimport { css } from 'styled-components'\nimport { MEDIA } from 'consts/breakpoints'\nimport { COLORS } from 'consts/themes'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { LAYERS } from 'consts/layers'\n\nexport const CAROUSEL_DEFAULT_HEIGHT = '19rem'\nexport const CAROUSEL_THUMB_SLIDES_HEIGHT = '9rem'\nexport const CAROUSEL_THUMB_SLIDES_SPACING = '0.8rem'\nexport const CAROUSEL_IOS_PICKER_HEIGHT = '22.2rem'\nexport const CAROUSEL_SLIDES_SPACING = '1rem'\nexport const CAROUSEL_WRAPPER_SPACING = '1.6rem'\nexport const CAROUSEL_WRAPPER_RADIUS = BORDER_RADIUSES.BOX\n\nconst borderStyles = css`\n position: relative;\n\n ${MEDIA.MIN_XS} {\n border-radius: ${CAROUSEL_WRAPPER_RADIUS};\n }\n\n &:after {\n z-index: ${LAYERS.STEP};\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: inherit;\n\n ${MEDIA.MIN_XS} {\n border: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n ${MEDIA.MAX_XS} {\n border-top: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n border-bottom: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n`\n\nconst baseWrapperStyles = css`\n ${pageFrameCollapseStyles};\n ${borderStyles};\n background-color: ${COLORS.BACKGROUND_CODE};\n`\n\nexport const carouselDefaultWrapperStyles = css`\n ${baseWrapperStyles};\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + ${CAROUSEL_WRAPPER_SPACING} * 2);\n`\n\nexport const carouselThumbsWrapperStyles = css`\n ${baseWrapperStyles};\n height: calc(\n ${CAROUSEL_DEFAULT_HEIGHT} + ${CAROUSEL_THUMB_SLIDES_HEIGHT} +\n ${CAROUSEL_THUMB_SLIDES_SPACING} + ${CAROUSEL_WRAPPER_SPACING} * 2\n );\n`\n\nexport const iosPickerWrapperStyles = css`\n ${pageFrameCollapseStyles};\n ${borderStyles};\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n background-color: ${COLORS.BACKGROUND_CODE};\n padding-left: ${CAROUSEL_WRAPPER_SPACING};\n padding-right: ${CAROUSEL_WRAPPER_SPACING};\n touch-action: none;\n`\n","import { css, FlattenSimpleInterpolation } from 'styled-components'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { MEDIA } from 'consts/breakpoints'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport {\n BRAND_GRADIENT_TEXT_STYLES,\n BRAND_GRADIENT_BACKGROUND_STYLES\n} from 'consts/gradients'\nimport {\n CAROUSEL_DEFAULT_HEIGHT,\n CAROUSEL_THUMB_SLIDES_HEIGHT,\n CAROUSEL_IOS_PICKER_HEIGHT,\n CAROUSEL_THUMB_SLIDES_SPACING,\n CAROUSEL_WRAPPER_SPACING,\n CAROUSEL_SLIDES_SPACING\n} from './carouselWrapperStyles'\n\nexport const BASE_STYLES = css`\n .embla {\n --slide-spacing: __replace_axis_spacing_amount__;\n --slide-size: __replace_slide_size__;\n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n padding: ${CAROUSEL_WRAPPER_SPACING};\n }\n\n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n .embla__slide {\n flex: 0 0 var(--slide-size);\n min-__replace-axis-size__: 0;\n padding-__replace_axis_spacing__: var(--slide-spacing);\n position: relative;\n }\n\n .embla__slide__img {\n display: block;\n height: __replace_image_height__;\n width: 100%;\n object-fit: cover;\n }\n\n .embla__slide__number {\n ${createSquareSizeStyles('4.6rem')}\n z-index: ${LAYERS.STEP};\n position: absolute;\n top: __replace_axis_slide_number_spacing__;\n right: 0.6rem;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n background-color: rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.85);\n line-height: 4.6rem;\n font-weight: ${FONT_WEIGHTS.BLACK};\n text-align: center;\n pointer-events: none;\n }\n\n .embla__slide__number > span {\n ${BRAND_GRADIENT_TEXT_STYLES}\n font-size: 1.6rem;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n`\n\nexport const VARIABLE_WIDTH_STYLES = css`\n .embla__slide:nth-child(1) {\n flex: 0 0 60%;\n }\n .embla__slide:nth-child(2) {\n flex: 0 0 40%;\n }\n .embla__slide:nth-child(3) {\n flex: 0 0 30%;\n }\n .embla__slide:nth-child(4) {\n flex: 0 0 90%;\n }\n .embla__slide:nth-child(5) {\n flex: 0 0 35%;\n }\n .embla__slide:nth-child(6) {\n flex: 0 0 55%;\n }\n .embla__slide:nth-child(7) {\n flex: 0 0 85%;\n }\n .embla__slide:nth-child(8) {\n flex: 0 0 46%;\n }\n .embla__slide:nth-child(9) {\n flex: 0 0 30%;\n }\n`\n\nexport const ARROWS_STYLES = css`\n .embla__button {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .embla__buttons {\n display: flex;\n align-items: center;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: __replace_axis_arrows_position__;\n __replace_axis_arrows__\n }\n\n .embla__button {\n z-index: ${LAYERS.STEP};\n color: ${COLORS.BACKGROUND_SITE};\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n ${createSquareSizeStyles('4rem')}\n }\n\n .embla__button:disabled {\n opacity: 0.3;\n }\n\n .embla__button__svg {\n ${createSquareSizeStyles('65%')}\n }\n`\n\nexport const DOTS_STYLES = css`\n .embla__dot {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .embla__dots {\n z-index: ${LAYERS.STEP};\n bottom: ${CAROUSEL_WRAPPER_SPACING};\n position: absolute;\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .embla__dot {\n ${createSquareSizeStyles('2.4rem')}\n display: flex;\n align-items: center;\n margin-right: 0.75rem;\n margin-left: 0.75rem;\n }\n\n .embla__dot:after {\n background: ${COLORS.BACKGROUND_SITE};\n border-radius: ${BORDER_RADIUSES.LINE};\n width: 100%;\n height: 0.3rem;\n content: '';\n }\n\n .embla__dot--selected:after {\n background: ${`linear-gradient(45deg, ${COLORS.BRAND_PRIMARY}, ${COLORS.BRAND_SECONDARY})`};\n }\n`\n\nexport const ARROWS_DOTS_STYLES = css`\n ${ARROWS_STYLES}\n ${DOTS_STYLES}\n`\n\nexport const THUMBS_STYLES = css`\n .embla-thumbs {\n --thumbs-slide-spacing: ${CAROUSEL_THUMB_SLIDES_SPACING};\n --thumbs-slide-height: ${CAROUSEL_THUMB_SLIDES_HEIGHT};\n margin-top: var(--thumbs-slide-spacing);\n }\n\n .embla-thumbs__viewport {\n overflow: hidden;\n }\n\n .embla-thumbs__container {\n display: flex;\n flex-direction: row;\n margin-left: calc(var(--thumbs-slide-spacing) * -1);\n }\n\n .embla-thumbs__slide {\n flex: 0 0 28%;\n min-__replace-axis-size__: 0;\n padding-left: var(--thumbs-slide-spacing);\n position: relative;\n }\n\n ${MEDIA.MIN_XS} {\n .embla-thumbs__slide {\n flex: 0 0 18%;\n }\n }\n\n .embla-thumbs__slide__button {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: block;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n width: 100%;\n opacity: 0.2;\n transition: opacity 0.2s;\n }\n\n .embla-thumbs__slide--selected .embla-thumbs__slide__button {\n opacity: 1;\n }\n\n .embla-thumbs__slide__img {\n display: block;\n height: var(--thumbs-slide-height);\n width: 100%;\n object-fit: cover;\n }\n\n .embla-thumbs__slide__number {\n ${createSquareSizeStyles('3rem')}\n z-index: ${LAYERS.STEP};\n position: absolute;\n top: 0.3rem;\n right: 0.3rem;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n background-color: rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.85);\n line-height: 3rem;\n font-weight: ${FONT_WEIGHTS.BLACK};\n text-align: center;\n pointer-events: none;\n }\n\n .embla-thumbs__slide__number > span {\n ${BRAND_GRADIENT_TEXT_STYLES}\n font-size: 1.4rem;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n`\n\nconst PROGRESS_STYLES = css`\n .embla__progress {\n z-index: ${LAYERS.STEP};\n background-color: ${COLORS.BACKGROUND_SITE};\n position: absolute;\n height: 0.3rem;\n border-radius: ${BORDER_RADIUSES.LINE};\n left: 0;\n right: 0;\n bottom: 2.6rem;\n margin-left: auto;\n margin-right: auto;\n pointer-events: none;\n width: 21rem;\n max-width: 90%;\n overflow: hidden;\n }\n\n .embla__progress__bar {\n ${BRAND_GRADIENT_BACKGROUND_STYLES}\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n left: -100%;\n }\n`\n\nconst PARALLAX_STYLES = css`\n .embla__parallax {\n height: 100%;\n overflow: hidden;\n }\n\n .embla__parallax__layer {\n position: relative;\n height: 100%;\n width: 100%;\n }\n\n .embla__parallax__img {\n max-width: none;\n width: calc(100% + (var(--slide-spacing) * 2));\n margin-left: calc(var(--slide-spacing) * -1);\n }\n`\n\nconst SCALE_STYLES = css`\n .embla__scale {\n height: 100%;\n position: relative;\n backface-visibility: hidden;\n }\n`\n\nconst LAZY_LOAD_STYLES = css`\n .embla__lazy-load {\n position: relative;\n height: 100%;\n }\n\n .embla__lazy-load__spinner {\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__img {\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__lazy-load--has-loaded .embla__lazy-load__img {\n opacity: 1;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nconst CLASS_NAMES_STYLES = css`\n .embla__class-names {\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__class-names:not(.is-snapped) {\n opacity: 0.16;\n }\n`\n\nconst INFINITE_SCROLL_STYLES = css`\n .embla-infinite-scroll {\n position: relative;\n flex: 0 0 15rem;\n min-__replace-axis-size__: 0;\n height: var(--slide-height);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla-infinite-scroll__spinner {\n display: none;\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner {\n display: inline-flex;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nconst IOS_PICKER_STYLES = css`\n .embla {\n position: relative;\n display: flex;\n width: 100%;\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n max-width: 30rem;\n margin-left: auto;\n margin-right: auto;\n }\n\n .embla:before,\n .embla:after {\n position: absolute;\n left: 0;\n right: 0;\n content: '';\n display: block;\n height: calc(50% - 32px / 2);\n z-index: ${LAYERS.STEP};\n pointer-events: none;\n }\n\n .embla:before {\n top: -0.5px;\n border-bottom: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to top,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla:after {\n bottom: -0.5px;\n border-top: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to bottom,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla__ios-picker {\n height: 100%;\n display: flex;\n align-items: center;\n min-width: 50%;\n justify-content: center;\n line-height: 1;\n font-size: 1.8rem;\n }\n\n .embla__ios-picker__scene {\n min-width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n touch-action: pan-x;\n }\n\n .embla__ios-picker__viewport {\n height: 32px;\n width: 100%;\n position: relative;\n perspective: 1000px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .embla__ios-picker__viewport--perspective-left {\n perspective-origin: calc(50% + 130px) 50%;\n transform: translateX(27px);\n }\n\n .embla__ios-picker__viewport--perspective-right {\n perspective-origin: calc(50% - 130px) 50%;\n transform: translateX(-27px);\n }\n\n .embla__ios-picker__container {\n height: 100%;\n width: 100%;\n position: absolute;\n transform-style: preserve-3d;\n will-change: transform;\n }\n\n .embla__ios-picker__slide {\n position: absolute;\n top: 0 !important;\n left: 0 !important;\n width: 100%;\n height: 100%;\n font-size: 19px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n backface-visibility: hidden;\n opacity: 0;\n }\n\n .embla__ios-picker__label {\n font-weight: ${FONT_WEIGHTS.BOLD};\n transform: translateX(-55px);\n pointer-events: none;\n }\n`\n\nexport const createCarouselDefaultStyles = (\n slideSize: string = '100%',\n spacingSize: string = CAROUSEL_SLIDES_SPACING,\n axis: EmblaOptionsType['axis'] = 'x',\n customStyles: FlattenSimpleInterpolation | string = []\n): string => {\n const horizontal = axis === 'x'\n const flexDirection = horizontal ? '' : 'flex-direction: column;'\n const spacingDirection = horizontal ? 'left' : 'top'\n const panDirection = `pan-${horizontal ? 'y' : 'x'}`\n const sizeDimention = horizontal ? 'width' : 'height'\n const imageHeight = horizontal ? 'var(--slide-height)' : '100%'\n const arrowsPosition = horizontal ? '1.6rem' : '2.4rem'\n const containerHeight = horizontal\n ? ''\n : 'height: calc(var(--slide-spacing) + var(--slide-height));'\n const slideNumberSpacing = horizontal\n ? '0.6rem'\n : 'calc(var(--slide-spacing) + 0.6rem)'\n\n const baseStyles = styledComponentsStylesToString(BASE_STYLES)\n const additionalStyles =\n typeof customStyles === 'string'\n ? customStyles\n : styledComponentsStylesToString(customStyles)\n\n const mergedStyles = baseStyles + additionalStyles\n\n return mergedStyles\n .replace(/__replace_axis_flex__/gi, flexDirection)\n .replace(/__replace-axis-size__/gi, sizeDimention)\n .replace(/__replace_axis_arrows_position__/gi, arrowsPosition)\n .replace(/__replace_axis_arrows__/gi, flexDirection)\n .replace(/__replace-axis-touch_action__/gi, panDirection)\n .replace(/__replace_axis_spacing__/gi, spacingDirection)\n .replace(/__replace_axis_spacing_amount__/gi, spacingSize)\n .replace(/__replace_axis_height__/gi, containerHeight)\n .replace(/__replace_image_height__/gi, imageHeight)\n .replace(/__replace_axis_slide_number_spacing__/gi, slideNumberSpacing)\n .replace(/__replace_slide_size__/gi, slideSize)\n}\n\nexport const createCarouselVariableWidthStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n VARIABLE_WIDTH_STYLES\n )\n}\n\nexport const createCarouselArrowsDotsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n ARROWS_DOTS_STYLES\n )\n}\n\nexport const createCarouselThumbsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n THUMBS_STYLES\n )\n}\n\nexport const createCarouselProgressStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n PROGRESS_STYLES\n )\n}\n\nexport const createCarouselParallaxStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n PARALLAX_STYLES\n )\n}\n\nexport const createCarouselScaleStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(slideSize, spacingSize, axis, SCALE_STYLES)\n}\n\nexport const createCarouselClassNamesStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n CLASS_NAMES_STYLES\n )\n}\n\nexport const createCarouselLazyLoadStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n LAZY_LOAD_STYLES\n )\n}\n\nexport const createCarouselInfiniteScrollStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n INFINITE_SCROLL_STYLES\n )\n}\n\nexport const createCarouselIosPickerStyles = (): string => {\n return styledComponentsStylesToString(IOS_PICKER_STYLES)\n}\n","import { createRadioOrCheckboxDefault } from './createRadioOrCheckboxDefault'\nimport { createRadioOrCheckboxCard } from './createRadioOrCheckboxCard'\n\nexport const InputRadioDefault = createRadioOrCheckboxDefault('radio')\n\nexport const InputRadioCard = createRadioOrCheckboxCard('radio')\n","import React from 'react'\nimport styled from 'styled-components'\nimport { CARD_STYLES } from 'consts/card'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { PropType } from './createRadioOrCheckboxDefault'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst RadioOrCheckboxCardWrapper = styled.label`\n ${TAP_HIGHLIGHT_STYLES};\n ${CARD_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n height: 100%;\n`\n\nconst LabelContent = styled.span`\n z-index: ${LAYERS.STEP};\n position: relative;\n display: block;\n width: 100%;\n cursor: pointer;\n`\n\nconst Highlight = styled.span`\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n top: -${BORDER_SIZES.DETAIL};\n left: -${BORDER_SIZES.DETAIL};\n bottom: -${BORDER_SIZES.DETAIL};\n right: -${BORDER_SIZES.DETAIL};\n display: block;\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n visibility: hidden;\n\n &:after {\n background-color: ${COLORS.BACKGROUND_CODE};\n border-radius: inherit;\n position: absolute;\n top: ${BORDER_SIZES.OUTLINE};\n left: ${BORDER_SIZES.OUTLINE};\n bottom: ${BORDER_SIZES.OUTLINE};\n right: ${BORDER_SIZES.OUTLINE};\n content: '';\n }\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n position: absolute;\n border-radius: ${BORDER_RADIUSES.CARD};\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n appearance: none;\n -webkit-appearance: none;\n border: 0;\n background-color: transparent;\n pointer-events: none;\n\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n }\n\n &:checked + ${Highlight} {\n visibility: visible;\n }\n\n &[disabled] + ${Highlight} + ${LabelContent} {\n cursor: not-allowed;\n }\n\n &[disabled]:checked + ${Highlight} {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n`\n\nexport const createRadioOrCheckboxCard = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const displayName = kebabCaseToPascalCase(`input-${type}-card`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n \n {children}\n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { PropsWithRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { BORDER_RADIUSES } from 'consts/border'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst INPUT_SIZE = '2.5rem'\nconst CHECK_SIZE = '1.2rem'\n\nconst RadioOrCheckboxDefaultWrapper = styled.span`\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n`\n\nconst InputWrapper = styled.span`\n flex: 0 0 ${INPUT_SIZE};\n position: relative;\n min-width: 0;\n`\n\nconst InputLineHeight = styled.span`\n color: ${COLORS.BACKGROUND_SITE};\n width: ${INPUT_SIZE};\n display: inline-block;\n line-height: inherit;\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${createSquareSizeStyles(INPUT_SIZE)};\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n top: 50%;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n background-color: ${COLORS.DETAIL_MEDIUM_CONTRAST};\n cursor: pointer;\n\n &:before,\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:before {\n ${createSquareSizeStyles('2rem')};\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n &:after {\n ${createSquareSizeStyles(CHECK_SIZE)};\n }\n\n &:checked {\n &:after {\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &[disabled]:checked {\n &:after {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n }\n`\n\nconst InputRadio = styled(Input)`\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n &:after {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n`\n\nconst InputCheckbox = styled(Input)`\n border-radius: ${BORDER_RADIUSES.LINE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.LINE};\n }\n\n &:after {\n border-radius: 0;\n }\n`\n\nconst Label = styled.label<{ $disabled?: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n padding-left: ${SPACINGS.TWO};\n min-width: 0;\n flex: 0 0 calc(100% - ${INPUT_SIZE});\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n `};\n`\n\nexport type PropType = PropsWithRef<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >\n>\n\nexport const createRadioOrCheckboxDefault = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const InputComponent = type === 'radio' ? InputRadio : InputCheckbox\n const displayName = kebabCaseToPascalCase(`input-${type}-default`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n -\n \n \n \n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { Fragment } from 'react'\nimport styled, { css } from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { useRouteBreadcrumbs } from 'hooks/useRouteBreadcrumbs'\nimport { Icon } from 'components/Icon/Icon'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\n\nconst PageBreadcrumbsWrapper = styled.nav`\n display: flex;\n align-items: center;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin-bottom: ${SPACINGS.THREE};\n`\n\nconst itemStyles = css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding: ${SPACINGS.ONE} 0;\n`\n\nconst Link = styled(LinkBare)`\n ${itemStyles};\n`\n\nconst ActiveTitle = styled.span`\n ${itemStyles};\n`\n\nconst Separator = styled(Icon)`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n margin: 0 ${SPACINGS.ONE};\n`\n\ntype PropType = { id: string }\n\nexport const PageBreadcrumbs = (props: PropType) => {\n const { id } = props\n const breadcrumbs = useRouteBreadcrumbs(id)\n\n if (breadcrumbs.length === 0) return null\n\n return (\n \n {breadcrumbs.map(({ id, slug, title }, index) =>\n index !== breadcrumbs.length - 1 ? (\n \n {title}\n \n \n ) : (\n {title}\n )\n )}\n \n )\n}\n","import { RouteType } from 'components/Routes/RoutesContext'\nimport { isRoutePartiallyActive } from 'utils/isRoutePartiallyActive'\nimport { useRoutes } from './useRoutes'\n\nexport const useRouteBreadcrumbs = (id: string): RouteType[] => {\n const { flat: routes } = useRoutes()\n const currentRoute = routes.find((route) => route.id === id)\n\n return routes\n .filter((route) =>\n isRoutePartiallyActive(route.slug, currentRoute?.slug || '')\n )\n .sort((a, b) => a.level - b.level)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { URLS } from 'consts/urls'\nimport { IconWithText } from 'components/Icon/IconWithText'\n\nconst PageEditThisPageWrapper = styled(LinkBare)`\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding-top: ${SPACINGS.ONE};\n padding-bottom: ${SPACINGS.ONE};\n margin-top: ${SPACINGS.EIGHT};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n`\n\ntype PropType = {\n pageUrl: string\n}\n\nexport const PageEditThisPage = (props: PropType) => {\n const { pageUrl } = props\n const url = `${URLS.GITHUB_DOCUMENTATION}/${pageUrl}`\n\n return (\n \n \n Edit this page on GitHub\n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { PropType as PageDefaultType } from 'templates/Default'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { BRAND_GRADIENT_TEXT_STYLES } from 'consts/gradients'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { IconWithText, IconWithTextText } from 'components/Icon/IconWithText'\nimport { createGapStyles } from 'utils/createGapStyles'\n\nconst ITEM_SPACING = SPACINGS.FOUR\n\nconst PagePaginationWrapper = styled.nav`\n ${createGapStyles(ITEM_SPACING, '', 'div')};\n display: flex;\n justify-content: space-between;\n margin-top: ${SPACINGS.EIGHT};\n`\n\nconst Item = styled.div`\n > a {\n color: ${COLORS.BRAND_PRIMARY};\n }\n\n &:nth-child(2) > a {\n text-align: right;\n color: ${COLORS.BRAND_SECONDARY};\n }\n`\n\nconst ItemLabel = styled.div`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding-bottom: ${SPACINGS.ONE};\n`\n\nconst ItemTitle = styled.div`\n display: inline-flex;\n align-items: center;\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n\n ${IconWithTextText} {\n ${BRAND_GRADIENT_TEXT_STYLES};\n }\n`\n\ntype PropType = {\n next: PageDefaultType['pageContext']['next']\n previous: PageDefaultType['pageContext']['previous']\n}\n\nexport const PagePagination = (props: PropType) => {\n const { next, previous } = props\n\n return (\n \n \n {previous && (\n \n Previous\n \n {previous.title}\n \n \n )}\n \n \n {next && (\n \n Next\n \n \n {next.title}\n \n \n \n )}\n \n \n )\n}\n","import React from 'react'\nimport useEmblaCarousel, { EmblaOptionsType } from 'embla-carousel-react'\nimport imageByIndex from '../imageByIndex'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef] = useEmblaCarousel(options)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n \n
\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\n\nexport const images: string[] = [image1, image2, image3, image4]\n\nconst imageByIndex = (index: number): string => images[index % images.length]\n\nexport default imageByIndex\n","export default __webpack_public_path__ + \"static/slide-1-ae1074a2ded156f4bb23fc2cbf269223.jpg\";","export default __webpack_public_path__ + \"static/slide-2-4a3fdf56a1fd7125dc80f4574dae6bbf.jpg\";","export default __webpack_public_path__ + \"static/slide-3-90be65c116762a9e53a2ddf8b625feec.jpg\";","export default __webpack_public_path__ + \"static/slide-4-f352d7c20aee3f1a7868858247d7dbb7.jpg\";","import { THEME_PREFIX } from 'consts/themes'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SANDBOX_REGEX_THEME, SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactIndexHtml = async (\n id: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n}\n","import { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactHeader = async (\n isTypeScript: boolean,\n id: string\n): Promise => {\n let header: SandboxModuleType\n\n if (isTypeScript) {\n header = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.tsx'\n )\n } else {\n header = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.jsx'\n )\n }\n\n const formattedTitle = kebabCaseToPascalCase(id, ' ')\n return header.default.replace(SANDBOX_REGEX_TITLE, formattedTitle)\n}\n","import { URLS } from 'consts/urls'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_REPOSITORY_URL } from 'consts/sandbox'\n\nexport const createSandboxReactFooter = async (\n isTypeScript: boolean\n): Promise => {\n let footer: SandboxModuleType\n\n if (isTypeScript) {\n footer = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.tsx'\n )\n } else {\n footer = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.jsx'\n )\n }\n\n return footer.default.replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n}\n","import { SandboxModuleType } from 'consts/sandbox'\n\nconst IMAGE_BY_INDEX_IMPORT_REGEX = /import(.*)from\\s'assets/g\n\nexport const createSandboxReactImages = async (\n isTypeScript: boolean\n): Promise => {\n let imageByIndex: SandboxModuleType\n\n if (isTypeScript) {\n imageByIndex = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/imageByIndex.ts'\n )\n } else {\n imageByIndex = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/imageByIndex.js'\n )\n }\n return imageByIndex.default.replace(IMAGE_BY_INDEX_IMPORT_REGEX, (match) =>\n match.replace('assets', '..')\n )\n}\n","const IMAGE_BY_INDEX_IMPORT_REGEX = /import(.*)from\\s'..\\/imageByIndex/\n\nexport const createSandboxReactImagePath = (carouselScript: string): string => {\n return carouselScript.replace(IMAGE_BY_INDEX_IMPORT_REGEX, (match) =>\n match.replace('../', './')\n )\n}\n","export const createSandboxReactTsDeclarations = async (): Promise => {\n const declarations = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/declarations.d.ts'\n )\n return declarations.default\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { BASE_CSS, SANDBOX_CSS } from 'components/Sandbox/sandboxStyles'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { createSandboxImages } from '../sandboxImages'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxReactPackageJson } from './createSandboxReactPackageJson'\nimport { createSandboxReactIndexHtml } from './createSandboxReactIndexHtml'\nimport { createSandboxReactDefaultEntry } from './createSandboxReactEntry'\nimport { createSandboxReactHeader } from './createSandboxReactHeader'\nimport { createSandboxReactFooter } from './createSandboxReactFooter'\nimport { createSandboxReactImages } from './createSandboxReactImages'\nimport { createSandboxReactImagePath } from './createSandboxReactImagePath'\nimport { createSandboxReactTsConfig } from './createSandboxReactTsConfig'\nimport { createSandboxReactTsDeclarations } from './createSandboxReactTsDeclarations'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxConfigType,\n SandboxReactCreateType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxReact = async (\n config: SandboxReactCreateType\n): Promise => {\n const {\n id,\n carouselScript: carouselScriptRaw,\n indexScript,\n slides,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-react`\n const sandboxImages = createSandboxImages(SANDBOX_REACT_FOLDERS.IMAGES)\n const { prettierConfig, formatCss } = await loadPrettier()\n const {\n isTypeScript,\n reactScriptExtension,\n vanillaScriptExtension,\n formatScript\n } = await sandboxLanguageUtils(language)\n const packageJson = await createSandboxReactPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxReactTsConfig()\n const carouselScript = createSandboxReactImagePath(carouselScriptRaw)\n const [\n entryHtml,\n entryScript,\n headerScript,\n footerScript,\n imagesScript,\n tsDeclarations\n ] = await Promise.all([\n createSandboxReactIndexHtml(title),\n indexScript ||\n createSandboxReactDefaultEntry(isTypeScript, slides, options),\n createSandboxReactHeader(isTypeScript, title),\n createSandboxReactFooter(isTypeScript),\n createSandboxReactImages(isTypeScript),\n createSandboxReactTsDeclarations()\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`${SANDBOX_REACT_FOLDERS.PUBLIC}/index.html`]: {\n isBinary: false,\n content: entryHtml\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(BASE_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Header.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(headerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Footer.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(footerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/EmblaCarousel.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(carouselScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/imageByIndex.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(imagesScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n },\n [`declarations.d.ts`]: {\n isBinary: false,\n content: tsDeclarations\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxImages, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxLanguageType,\n SandboxPluginsType,\n PackageJsonType\n} from 'consts/sandbox'\n\nexport const createSandboxReactPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { dependencies, devDependencies } = docsPackageJson\n const { isJavaScript, reactScriptExtension } = await sandboxLanguageUtils(\n language\n )\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: `${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`,\n scripts: {\n start: 'react-scripts start',\n build: 'react-scripts build',\n test: 'react-scripts test --env=jsdom',\n eject: 'react-scripts eject'\n },\n dependencies: {\n react: dependencies.react,\n 'react-dom': dependencies['react-dom'],\n 'react-scripts': '4.0.0',\n 'embla-carousel-react': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/runtime': '7.13.8' }\n : {\n '@types/react': devDependencies['@types/react'],\n '@types/react-dom': devDependencies['@types/react-dom'],\n typescript: devDependencies.typescript\n },\n browserslist: ['>0.2%', 'not dead', 'not ie <= 11', 'not op_mini all']\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxReactTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*', './declarations.d.ts'],\n compilerOptions: {\n strict: true,\n esModuleInterop: true,\n lib: ['dom', 'es2015'],\n jsx: 'react-jsx'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nconst CAROUSEL_IMPORT_REGEX = /import\\sEmblaCarousel\\sfrom\\s'(.*)'/\nconst SLIDE_COUNT_REGEX = /const\\sSLIDE_COUNT\\s=\\s\\d{1,}/\nconst CAROUSEL_IMPORT_REPLACE = 'import EmblaCarousel from \"./EmblaCarousel\"'\n\nexport const createSandboxReactDefaultEntry = async (\n isTypeScript: boolean,\n slides: number[],\n options: EmblaOptionsType\n): Promise => {\n const slideCount = slides.length.toString()\n let entry: SandboxModuleType\n\n if (isTypeScript) {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.tsx'\n )\n } else {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.jsx'\n )\n }\n\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SLIDE_COUNT_REGEX, (match) => match.replace(/\\d{1,}/, slideCount))\n}\n\nexport const createSandboxReactIosPickerEntry = async (\n isTypeScript: boolean,\n loop: boolean\n): Promise => {\n let entry: SandboxModuleType\n\n if (isTypeScript) {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.tsx'\n )\n } else {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.jsx'\n )\n }\n\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_REACT_FOLDERS = {\n PUBLIC: 'public',\n CSS: 'src/css',\n JS: 'src/js',\n IMAGES: 'src/images'\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Icon } from 'components/Icon/Icon'\nimport { InputRadioCard } from 'components/Input/InputRadio'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { PropType as RadioOrCheckboxPropType } from 'components/Input/createRadioOrCheckboxDefault'\nimport { SandboxLabelKeyType } from 'consts/sandbox'\nimport { IconType } from 'assets/icons'\n\nconst ICONS_BY_LABEL: {\n [key in SandboxLabelKeyType]: Extract<\n IconType,\n 'javascript' | 'typescript' | 'react'\n >\n} = {\n VANILLA_JS: 'javascript',\n VANILLA_TS: 'typescript',\n REACT_JS: 'react',\n REACT_TS: 'react'\n}\n\nconst RadioLabelContent = styled.span`\n display: flex;\n flex-direction: column;\n padding: ${SPACINGS.TWO};\n line-height: 1;\n text-align: center;\n align-items: center;\n font-size: ${FONT_SIZES.DETAIL};\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n`\n\nconst RadioLabelSvg = styled(Icon)`\n ${createSquareSizeStyles('3rem')};\n margin-bottom: ${SPACINGS.TWO};\n`\n\ntype PropType = RadioOrCheckboxPropType & {\n framework: SandboxLabelKeyType\n}\n\nexport const SandboxSelectionInput = (props: PropType) => {\n const { children, framework, ...restProps } = props\n\n return (\n \n \n \n {children}\n \n \n )\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n PackageJsonType,\n SandboxLanguageType,\n SandboxPluginsType\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { isJavaScript } = await sandboxLanguageUtils(language)\n const { dependencies, devDependencies } = docsPackageJson\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: 'index.html',\n scripts: {\n start: 'parcel index.html --open',\n build: 'parcel build index.html'\n },\n dependencies: {\n 'parcel-bundler': '^1.6.1',\n 'embla-carousel': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/core': '7.2.0' }\n : {\n typescript: devDependencies.typescript\n },\n resolutions: {\n '@babel/preset-env': '7.13.8'\n }\n }\n}\n","export const createSandboxVanillaTsDeclarations = async (): Promise => {\n const declarations = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/declarations.d.ts'\n )\n return declarations.default\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { URLS } from 'consts/urls'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SandboxVanillaExtensionType } from 'consts/sandbox'\nimport {\n SANDBOX_REGEX_THEME,\n SANDBOX_REGEX_TITLE,\n SANDBOX_REGEX_REPOSITORY_URL\n} from 'consts/sandbox'\n\nconst SANDBOX_SCRIPT_SRC_REGEX = /__replace_sandbox_script_src__/g\nconst SANDBOX_CODE_REGEX = /__replace_sandbox_code__/g\n\nexport const createSandboxVanillaEntry = async (\n id: string,\n languageExtension: SandboxVanillaExtensionType,\n carouselHtml: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n const scriptSrc = `${SANDBOX_VANILLA_FOLDERS.JS}/index.${languageExtension}`\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n .replace(SANDBOX_SCRIPT_SRC_REGEX, scriptSrc)\n .replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n .replace(SANDBOX_CODE_REGEX, carouselHtml)\n}\n","import { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\n\nconst IMG_SRC_WITH_HASH_REGEX = /\\/static\\/slide-\\d{1,}-.+?\\./g\nconst IMG_SLIDE_WITH_NUMBER_REGEX = /slide-\\d{1,}/\n\nexport const createSandboxVanillaImagePaths = (\n carouselHtml: string\n): string => {\n return carouselHtml.replace(IMG_SRC_WITH_HASH_REGEX, (match) => {\n const slideWithNumber = match.match(IMG_SLIDE_WITH_NUMBER_REGEX) || []\n return `${SANDBOX_VANILLA_FOLDERS.IMAGES}/${slideWithNumber}.`\n })\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { BASE_CSS, SANDBOX_CSS } from '../sandboxStyles'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { createSandboxImages } from '../sandboxImages'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxVanillaPackageJson } from './createSandboxVanillaPackageJson'\nimport { createSandboxVanillaTsConfig } from './createSandboxVanillaTsConfig'\nimport { createSandboxVanillaTsDeclarations } from './createSandboxVanillaTsDeclarations'\nimport { createSandboxVanillaEntry } from './createSandboxVanillaEntry'\nimport { createSandboxVanillaImagePaths } from './createSandboxVanillaImagePaths'\nimport { createSandboxVanillaOptions } from './createSandboxVanillaOptions'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxVanillaCreateType,\n SandboxConfigType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxVanilla = async (\n config: SandboxVanillaCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n carouselHtml,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-vanilla`\n const sandboxImages = createSandboxImages(SANDBOX_VANILLA_FOLDERS.IMAGES)\n const { prettierConfig, formatHtml, formatCss } = await loadPrettier()\n const { isTypeScript, vanillaScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxVanillaPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxVanillaTsConfig()\n const entryScript = createSandboxVanillaOptions(carouselScript, options)\n const [entryHtml, tsDeclarations] = await Promise.all([\n createSandboxVanillaEntry(\n title,\n vanillaScriptExtension,\n createSandboxVanillaImagePaths(carouselHtml)\n ),\n createSandboxVanillaTsDeclarations()\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`index.html`]: {\n isBinary: false,\n content: formatHtml(entryHtml)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(BASE_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_VANILLA_FOLDERS.JS}/index.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n },\n [`declarations.d.ts`]: {\n isBinary: false,\n content: tsDeclarations\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxImages, sandboxOverrides)\n })\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxVanillaTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*', './declarations.d.ts'],\n compilerOptions: {\n strict: true,\n module: 'commonjs',\n jsx: 'preserve',\n esModuleInterop: true,\n sourceMap: true,\n allowJs: true,\n lib: ['es6', 'dom'],\n rootDir: 'src',\n moduleResolution: 'node'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaOptions = (\n carouselScript: string,\n options: EmblaOptionsType\n): string => {\n const loop = options?.loop\n return carouselScript\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_VANILLA_FOLDERS = {\n CSS: 'src/css',\n JS: 'src/js',\n IMAGES: 'src/images'\n}\n","import { URLS } from 'consts/urls'\nimport { arrayFromNumber } from 'utils/arrayFromNumber'\nimport { SandboxConfigType } from 'consts/sandbox'\n\nconst SANDBOX_IMAGE_URLS: string[] = arrayFromNumber(4).map((index) => {\n return `${URLS.GITHUB_DOCUMENTATION_RAW}/src/assets/images/slide-${\n index + 1\n }.jpg`\n})\n\nexport const createSandboxImages = (\n pathToImageFolder: string\n): SandboxConfigType['files'] => {\n return SANDBOX_IMAGE_URLS.reduce(\n (allImages, imageUrl, index) => ({\n ...allImages,\n [`${pathToImageFolder}/slide-${index + 1}.jpg`]: {\n isBinary: true,\n content: imageUrl\n }\n }),\n {}\n )\n}\n","import { css } from 'styled-components'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { RESET_STYLES } from 'components/Layout/GlobalStyles/reset'\nimport { BASE_STYLES } from 'components/Layout/GlobalStyles/base'\nimport { FONT_STYLES } from 'components/Layout/GlobalStyles/font'\nimport { CAROUSEL_WRAPPER_RADIUS } from '../Examples/carouselWrapperStyles'\nimport { MEDIA } from 'consts/breakpoints'\nimport { BORDER_SIZES } from 'consts/border'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { COLORS, THEME_STYLES } from 'consts/themes'\n\nconst SANDBOX_WRAPPER_STYLES = css`\n .sandbox {\n width: 100%;\n }\n\n ${MEDIA.MIN_SM} {\n .sandbox {\n margin-left: auto;\n margin-right: auto;\n max-width: 67rem;\n }\n }\n`\n\nconst SANDBOX_CAROUSEL_STYLES = css`\n .sandbox__carousel {\n position: relative;\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n ${MEDIA.MAX_SM} {\n .sandbox__carousel {\n border-top: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n border-bottom: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n\n ${MEDIA.MIN_SM} {\n .sandbox__carousel {\n border-radius: ${CAROUSEL_WRAPPER_RADIUS};\n border: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n`\n\nconst SANDBOX_HEADER_STYLES = css`\n .sandbox__header {\n font-size: 2rem;\n font-weight: ${FONT_WEIGHTS.BOLD};\n text-align: center;\n padding: 4rem 2rem 2rem 2rem;\n }\n`\n\nconst SANDBOX_FOOTER_STYLES = css`\n .sandbox__footer {\n display: flex;\n justify-content: center;\n padding: 2rem 2rem 4rem 2rem;\n }\n\n .sandbox__footer__link {\n display: flex;\n align-items: center;\n background-color: transparent;\n text-decoration: none;\n text-align: center;\n font-weight: ${FONT_WEIGHTS.BOLD};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: 1.4rem;\n }\n\n .sandbox__footer__link__svg {\n display: block;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: currentColor;\n }\n`\n\nexport const BASE_CSS = styledComponentsStylesToString(\n THEME_STYLES,\n RESET_STYLES,\n BASE_STYLES,\n FONT_STYLES\n)\n\nexport const SANDBOX_CSS = styledComponentsStylesToString(\n SANDBOX_WRAPPER_STYLES,\n SANDBOX_CAROUSEL_STYLES,\n SANDBOX_HEADER_STYLES,\n SANDBOX_FOOTER_STYLES\n)\n","import React, { PropsWithChildren } from 'react'\nimport { useSiteMetadata } from 'hooks/useSiteMetadata'\nimport { removeProtocol } from 'utils/removeProtocol'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\n\ntype PropType = PropsWithChildren<{\n title: string\n description?: string\n lang?: string\n url: string\n}>\n\nexport const Seo = (props: PropType) => {\n const { title, description, lang = 'en', url, children } = props\n const siteMetadata = useSiteMetadata()\n const pageTitle = `${title} | ${kebabCaseToPascalCase(siteMetadata.title)}`\n const metaDescription = description || siteMetadata.description\n\n return (\n <>\n \n {pageTitle}\n \n \n \n \n \n \n \n \n \n \n \n \n\n {children}\n \n )\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { SPACINGS } from './spacings'\nimport {\n PackageJson as BasePackageJsonType,\n TsConfigJson as TsConfigType\n} from 'type-fest'\n\nexport type PackageJsonType = BasePackageJsonType & {\n browserslist?: string[]\n}\n\nexport type { TsConfigType }\n\nexport type SandboxConfigType = {\n files: {\n [key: string]: {\n content: string\n isBinary: boolean\n }\n }\n}\n\nexport type SandboxModuleType = { default: string }\n\nexport type SandboxVanillaExtensionType = 'js' | 'ts'\n\nexport type SandboxReactExtensionType = 'jsx' | 'tsx'\n\nexport type SandboxPluginNameType =\n (typeof SANDBOX_PLUGINS)[keyof typeof SANDBOX_PLUGINS]\n\nexport type SandboxLanguageType =\n (typeof SANDBOX_LANGUAGES)[keyof typeof SANDBOX_LANGUAGES]\n\nexport type SandboxPluginsType = {\n [key in SandboxPluginNameType]?: string\n}\n\nexport type SandboxSharedCreateType = {\n id: string\n options: EmblaOptionsType\n styles: string\n plugins?: SandboxPluginsType\n language?: SandboxLanguageType\n sandboxOverrides?: SandboxConfigType['files']\n}\n\nexport type SandboxVanillaCreateType = SandboxSharedCreateType & {\n carouselScript: string\n carouselHtml: string\n}\n\nexport type SandboxReactCreateType = SandboxSharedCreateType & {\n carouselScript: string\n slides: number[]\n indexScript?: string\n}\n\nexport type SandboxSelectionType = {\n key: SandboxLabelKeyType\n label: SandboxLabelValueType\n createSandbox: (settings?: SettingsType) => Promise\n}\n\nexport type SandboxLabelValueType = (typeof SANDBOX_LABELS)[SandboxLabelKeyType]\nexport type SandboxLabelKeyType = keyof typeof SANDBOX_LABELS\nexport type SandboxCreateFunctionType =\n SandboxSelectionType['createSandbox']\n\nexport const SANDBOX_LABELS = {\n VANILLA_JS: 'Vanilla',\n VANILLA_TS: 'Vanilla + TypeScript',\n REACT_TS: 'React + TypeScript',\n REACT_JS: 'React'\n}\n\nexport const SANDBOX_LANGUAGES = {\n JAVASCRIPT: 'javascript',\n TYPESCRIPT: 'typescript'\n}\n\nexport const SANDBOX_PLUGINS = {\n AUTOPLAY: 'embla-carousel-autoplay',\n CLASS_NAMES: 'embla-carousel-class-names'\n}\n\nexport const SANDBOX_SELECTION_SPACING = SPACINGS.ONE\n\nexport const SANDBOX_REGEX_REPOSITORY_URL =\n /__replace_sandbox_repository_url__/g\n\nexport const SANDBOX_REGEX_TITLE = /__replace_sandbox_title__/g\n\nexport const SANDBOX_REGEX_THEME = /__replace_sandbox_theme__/g\n\nexport const SANDBOX_REGEX_OPTIONS = /const\\sOPTIONS(.*)/\n\nexport const SANDBOX_REGEX_IOS_PICKER_LOOP = /const\\sLOOP\\s=\\sfalse/\n","export const arrayFromNumber = (number: number): number[] =>\n Array.from(Array(number).keys())\n","import { ThemeKeyType, THEME_KEYS, THEME_PREFIX } from 'consts/themes'\nimport { isBrowser } from './isBrowser'\n\nexport const getThemeFromDocument = (): ThemeKeyType => {\n if (!isBrowser) return THEME_KEYS.LIGHT\n\n const lightThemeClass = THEME_PREFIX + THEME_KEYS.LIGHT\n return document.documentElement.classList.contains(lightThemeClass)\n ? THEME_KEYS.LIGHT\n : THEME_KEYS.DARK\n}\n","export const kebabCaseToPascalCase = (\n string: string = '',\n separator: string = ''\n): string => {\n return string.replace(/(^\\w|-\\w)/g, (replaceString) =>\n replaceString.replace(/-/, separator).toUpperCase()\n )\n}\n","import prettierrc from '../../.prettierrc'\nimport { Options as PretterOptions } from 'prettier'\n\ntype LoadPrettierType = {\n prettierConfig: PretterOptions\n formatHtml: (html: string) => string\n formatCss: (css: string) => string\n formatJs: (js: string) => string\n formatTs: (ts: string) => string\n}\n\nconst PRETTIER_CONFIG = prettierrc\n\nexport const loadPrettier = async (): Promise => {\n const [prettier, htmlParser, cssParser, babelParser] = await Promise.all([\n import('prettier'),\n import('prettier/parser-html'),\n import('prettier/parser-postcss'),\n import('prettier/parser-babel')\n ])\n\n const prettierHtmlParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'html',\n plugins: [htmlParser]\n }\n\n const prettierCssParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'css',\n plugins: [cssParser]\n }\n\n const prettierBabelParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel',\n plugins: [babelParser]\n }\n\n const prettierBabeTsParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel-ts',\n plugins: [babelParser]\n }\n\n const prettierFormatSafe = (\n subject: string,\n parser: PretterOptions\n ): string => {\n let formattedString = ''\n try {\n formattedString = prettier.format(subject, parser)\n } catch (error) {\n console.warn('Prettier was not able to format file', error) // eslint-disable-line no-console\n }\n return formattedString\n }\n\n const formatHtml = (html: string): string =>\n prettierFormatSafe(html, prettierHtmlParser)\n\n const formatCss = (css: string): string =>\n prettierFormatSafe(css, prettierCssParser)\n\n const formatJs = (js: string): string =>\n prettierFormatSafe(js, prettierBabelParser)\n\n const formatTs = (ts: string): string =>\n prettierFormatSafe(ts, prettierBabeTsParser)\n\n return {\n prettierConfig: PRETTIER_CONFIG,\n formatHtml,\n formatCss,\n formatJs,\n formatTs\n }\n}\n","export const removeProtocol = (url: string): string =>\n url.replace(/(^\\w+:|^)\\/\\//, '')\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { EmblaOptionsType } from 'embla-carousel-react'\nimport { loadPrettier } from './loadPrettier'\nimport {\n SandboxCreateFunctionType,\n SandboxLabelKeyType,\n SandboxSelectionType,\n SANDBOX_LABELS,\n SandboxLanguageType,\n SandboxReactExtensionType,\n SandboxVanillaExtensionType,\n SANDBOX_LANGUAGES,\n SandboxSharedCreateType,\n SandboxPluginNameType\n} from 'consts/sandbox'\n\ntype SandboxLanguageUtilsType = {\n isJavaScript: boolean\n isTypeScript: boolean\n vanillaScriptExtension: SandboxVanillaExtensionType\n reactScriptExtension: SandboxReactExtensionType\n formatScript: (jsOrTs: string) => string\n}\n\nexport const sandboxLanguageUtils = async (\n language: SandboxLanguageType\n): Promise => {\n const { formatTs, formatJs } = await loadPrettier()\n const isTypeScript = language === SANDBOX_LANGUAGES.TYPESCRIPT\n const isJavaScript = !isTypeScript\n const formatScript = isTypeScript ? formatTs : formatJs\n const reactScriptExtension = isJavaScript ? 'jsx' : 'tsx'\n const vanillaScriptExtension = isJavaScript ? 'js' : 'ts'\n\n return {\n isJavaScript,\n isTypeScript,\n vanillaScriptExtension,\n reactScriptExtension,\n formatScript\n }\n}\n\ntype SandboxCreateType = {\n [key in SandboxLabelKeyType]: SandboxCreateFunctionType\n}\n\nexport const createSandboxFunctionsWithLabels = (\n createSandboxFunction: Partial>\n): SandboxSelectionType[] => {\n return Object.keys(createSandboxFunction).map((sandboxLabelKey) => {\n const key = sandboxLabelKey\n const createSandbox = >(\n createSandboxFunction[key]\n )\n const label = SANDBOX_LABELS[key]\n\n return { key, label, createSandbox }\n })\n}\n\ntype SandboxAddPluginsType = Pick\n\nexport const addSandboxPlugins = (\n pluginNames: SandboxPluginNameType | SandboxPluginNameType[]\n): SandboxAddPluginsType => {\n const pluginsArray = Array.isArray(pluginNames) ? pluginNames : [pluginNames]\n\n return {\n plugins: {\n ...pluginsArray.reduce(\n (allPlugins, pluginName) => ({\n ...allPlugins,\n [pluginName]: docsPackageJson.dependencies[pluginName]\n }),\n {}\n )\n }\n }\n}\n\nexport const sandboxInjectOptions = (\n options: EmblaOptionsType\n): ((match: string) => string) => {\n return (match: string) => match.replace('{}', JSON.stringify(options))\n}\n\nexport const sandboxInjectIosPickerLoop = (\n loop: boolean = false\n): ((match: string) => string) => {\n return (match) => match.replace('false', loop.toString())\n}\n","import { FlattenSimpleInterpolation } from 'styled-components'\n\nexport const styledComponentsStylesToString = (\n ...stylesList: FlattenSimpleInterpolation[]\n): string => {\n return stylesList.reduce(\n (allStyles, styles) => allStyles + styles.join(''),\n ''\n )\n}\n","module.exports = require('../../.prettierrc.js')\n","import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record,\n optionsB: Record\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\n return optionsAKeys.every((key) => {\n const valueA = optionsA[key]\n const valueB = optionsB[key]\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB\n return areOptionsEqual(valueA, valueB)\n })\n}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { mathAbs, WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (\n engine: EngineType,\n lagOffset: number\n) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (lagOffset: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: AnimationsType['update'],\n render: AnimationsType['render']\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const timeStep = 1000 / 60\n let lastTimeStamp: number | null = null\n let lag = 0\n let animationFrame = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!lastTimeStamp) lastTimeStamp = timeStamp\n\n const elapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n lag += elapsed\n\n while (lag >= timeStep) {\n update()\n lag -= timeStep\n }\n\n const lagOffset = mathAbs(lag / timeStep)\n render(lagOffset)\n\n if (animationFrame) ownerWindow.requestAnimationFrame(animate)\n }\n\n function start(): void {\n if (animationFrame) return\n\n animationFrame = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationFrame)\n lastTimeStamp = null\n lag = 0\n animationFrame = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n lag = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { DirectionOptionType } from './Direction'\nimport { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n direction: DirectionOptionType\n): AxisType {\n const scroll = axis === 'y' ? 'y' : 'x'\n const cross = axis === 'y' ? 'x' : 'y'\n const startEdge = getStartEdge()\n const endEdge = getEndEdge()\n\n function measureSize(nodeRect: NodeRectType): number {\n const { width, height } = nodeRect\n return scroll === 'x' ? width : height\n }\n\n function getStartEdge(): AxisEdgeType {\n if (scroll === 'y') return 'top'\n return direction === 'rtl' ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (scroll === 'y') return 'bottom'\n return direction === 'rtl' ? 'left' : 'right'\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","export type DirectionOptionType = 'ltr' | 'rtl'\n\nexport type DirectionType = {\n apply: (n: number) => number\n}\n\nexport function Direction(direction: DirectionOptionType): DirectionType {\n const sign = direction === 'rtl' ? -1 : 1\n\n function apply(n: number): number {\n return n * sign\n }\n\n const self: DirectionType = {\n apply\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DirectionType } from './Direction'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n direction: DirectionType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\n let isMoving = false\n let startScroll = 0\n let startCross = 0\n let pointerIsDown = false\n let preventScroll = false\n let preventClick = false\n let isMouse = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\n const isMouseEvt = isMouseEvent(evt, ownerWindow)\n isMouse = isMouseEvt\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving\n isMoving = deltaAbs(target.get(), location.get()) >= 2\n\n pointerIsDown = true\n dragTracker.pointerDown(evt)\n scrollBody.useFriction(0).useDuration(0)\n target.set(location)\n addDragEvents()\n startScroll = dragTracker.readPoint(evt)\n startCross = dragTracker.readPoint(evt, crossAxis)\n eventHandler.emit('pointerDown')\n }\n\n function move(evt: PointerEventType): void {\n const lastScroll = dragTracker.readPoint(evt)\n const lastCross = dragTracker.readPoint(evt, crossAxis)\n const diffScroll = deltaAbs(lastScroll, startScroll)\n const diffCross = deltaAbs(lastCross, startCross)\n\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt)\n preventScroll = diffScroll > diffCross\n if (!preventScroll) return up(evt)\n }\n const diff = dragTracker.pointerMove(evt)\n if (diffScroll > dragThreshold) preventClick = true\n\n scrollBody.useFriction(0.3).useDuration(1)\n animation.start()\n target.add(direction.apply(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\n const currentLocation = scrollTarget.byDistance(0, false)\n const targetChanged = currentLocation.index !== index.get()\n const rawForce = dragTracker.pointerUp(evt) * forceBoost()\n const force = allowedForce(direction.apply(rawForce), targetChanged)\n const forceFactor = factorAbs(rawForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n preventScroll = false\n pointerIsDown = false\n dragEvents.clear()\n scrollBody.useDuration(speed).useFriction(friction)\n scrollTo.distance(force, !dragFree)\n isMouse = false\n eventHandler.emit('pointerUp')\n }\n\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n pointerDown,\n destroy\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\n if (!startEvent || !lastEvent) return 0\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent)\n const diffTime = readTime(evt) - readTime(startEvent)\n const expired = readTime(evt) - readTime(lastEvent) > logInterval\n const force = diffDrag / diffTime\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1\n\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n ownerWindow.requestAnimationFrame(() => {\n emblaApi.reInit()\n eventHandler.emit('resize')\n })\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (destroyed) return\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n const observeNodes = [container].concat(slides)\n observeNodes.forEach((node) => resizeObserver.observe(node))\n }\n\n function destroy(): void {\n if (resizeObserver) resizeObserver.disconnect()\n destroyed = true\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n location: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\n const pullBackThreshold = percentOfView.measure(10)\n const edgeOffsetTolerance = percentOfView.measure(50)\n const frictionLimit = Limit(0.1, 0.99)\n let disabled = false\n\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - location.get())\n const diffToTarget = target.get() - location.get()\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance)\n\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n offsetLocation: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(offsetLocation.get())\n if (direction === -1) return reachedMin(offsetLocation.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((scrollSnap) => scrollSnap - distance)\n .map((diffToSnap) => shortcut(diffToSnap, 0))\n .map((diff, i) => ({ diff, index: i }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return targets[0]\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { DirectionType } from './Direction'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n direction: DirectionType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n containerStyle.transform = translate(direction.apply(target))\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\nimport { DirectionType } from './Direction'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n direction: DirectionType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n offsetLocation: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize\n const altered = isEndEdge ? contentSize : 0\n const boundEdge = isEndEdge ? 'end' : 'start'\n const loopPoint = slideBounds[index][boundEdge]\n\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, direction, slides[index]),\n target: () => (offsetLocation.get() > loopPoint ? initial : altered)\n }\n })\n }\n\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\n }\n }\n\n mutationObserver = new MutationObserver((mutations) => {\n if (destroyed) return\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations)\n }\n })\n\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { DirectionType } from './Direction'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: (array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n direction: DirectionType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge]\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge]\n const gapA = !loop && isFirst ? direction.apply(startGap) : 0\n const gapB = !loop && isLast ? direction.apply(endGap) : 0\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA))\n\n if (chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { Direction, DirectionType } from './Direction'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n direction: DirectionType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction: contentDirection,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag\n } = options\n\n // Measurements\n const pixelTolerance = 2\n const nodeRects = NodeRects()\n const containerRect = nodeRects.measure(container)\n const slideRects = slides.map(nodeRects.measure)\n const direction = Direction(contentDirection)\n const axis = Axis(scrollAxis, contentDirection)\n const viewSize = axis.measureSize(containerRect)\n const percentOfView = PercentOfView(viewSize)\n const alignment = Alignment(align, viewSize)\n const containSnaps = !loop && !!containScroll\n const readEdgeGap = loop || !!containScroll\n const { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n direction,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n options: { loop }\n },\n lagOffset\n ) => {\n const velocity = scrollBody.velocity()\n const hasSettled = scrollBody.settled()\n\n if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop()\n eventHandler.emit('settle')\n }\n if (!hasSettled) eventHandler.emit('scroll')\n\n offsetLocation.set(location.get() - velocity + velocity * lagOffset)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (lagOffset: number) => render(engine, lagOffset)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollBody,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n direction,\n dragHandler: DragHandler(\n axis,\n direction,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n location,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n direction,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, direction, container)\n }\n\n return engine\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = axis\n const withEdgeGap = slideRects[0] && readEdgeGap\n const startGap = measureStartGap()\n const endGap = measureEndGap()\n const slideSizes = slideRects.map(measureSize)\n const slideSizesWithGaps = measureWithGaps()\n\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .map((rect, index, rects) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(rects, index)\n if (isFirst) return slideSizes[index] + startGap\n if (isLast) return slideSizes[index] + endGap\n return rects[index + 1][startEdge] - rect[startEdge]\n })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function findScrollContainLimit(): LimitType {\n const startSnap = snapsBounded[0]\n const endSnap = arrayLast(snapsBounded)\n const min = snapsBounded.lastIndexOf(startSnap)\n const max = snapsBounded.indexOf(endSnap) + 1\n return Limit(min, max)\n }\n\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(snapsAligned, index)\n if (isFirst) return scrollBounds.max\n if (isLast) return scrollBounds.min\n return scrollBounds.constrain(snapAligned)\n })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let bodyVelocity = 0\n let scrollDirection = 0\n let scrollDuration = baseDuration\n let scrollFriction = baseFriction\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n\n function seek(): ScrollBodyType {\n const diff = target.get() - location.get()\n const isInstant = !scrollDuration\n let directionDiff = 0\n\n if (isInstant) {\n bodyVelocity = 0\n location.set(target)\n\n directionDiff = diff\n } else {\n bodyVelocity += diff / scrollDuration\n bodyVelocity *= scrollFriction\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n\n directionDiff = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(directionDiff)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return bodyVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start()\n } else {\n animation.update()\n animation.render(1)\n animation.update()\n }\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1\n return arrayFromNumber(range)\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1\n return arrayFromNumber(range, arrayLast(groups)[0])\n }\n return group\n })\n }\n\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isNumber } from './utils'\n\nexport type SlideFocusType = {\n init: () => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType\n): SlideFocusType {\n let lastTabPressTime = 0\n\n function init(): void {\n eventStore.add(document, 'keydown', registerTabPress, false)\n slides.forEach(addSlideFocusEvent)\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n function addSlideFocusEvent(slide: HTMLElement): void {\n const focus = (): void => {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n root.scrollLeft = 0\n const index = slides.indexOf(slide)\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n }\n\n eventStore.add(slide, 'focus', focus, {\n passive: true,\n capture: true\n })\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { DirectionOptionType } from './Direction'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf | null\n containScroll: ScrollContainOptionType\n direction: DirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true\n}\n\nexport type EmblaOptionsType = Partial\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial>\n\nexport type OptionsHandlerType = {\n mergeOptions: (\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: (options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = (customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = [].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\n engine.translate.to(engine.location.get())\n engine.animation.init()\n engine.slidesInView.init()\n engine.slideFocus.init()\n engine.eventHandler.init(self)\n engine.resizeHandler.init(self)\n engine.slidesHandler.init(self)\n\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\n engine.dragHandler.destroy()\n engine.eventStore.clear()\n engine.translate.clear()\n engine.slideLooper.clear()\n engine.resizeHandler.destroy()\n engine.slidesHandler.destroy()\n engine.slidesInView.destroy()\n engine.animation.destroy()\n pluginsHandler.destroy()\n mediaHandlers.clear()\n }\n\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.location.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n }\n\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n}\n\nexport function EventHandler(): EventHandlerType {\n const listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on\n }\n return self\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n areOptionsEqual,\n arePluginsEqual,\n canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType\n} from 'embla-carousel'\n\ntype EmblaViewportRefType = (\n instance: ViewportElement | null\n) => void\n\nexport type UseEmblaCarouselType = [\n EmblaViewportRefType,\n EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n options: EmblaOptionsType = {},\n plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n const storedOptions = useRef(options)\n const storedPlugins = useRef(plugins)\n const [emblaApi, setEmblaApi] = useState()\n const [viewport, setViewport] = useState()\n\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n }, [emblaApi])\n\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n const newEmblaApi = EmblaCarousel(\n viewport,\n storedOptions.current,\n storedPlugins.current\n )\n setEmblaApi(newEmblaApi)\n return () => newEmblaApi.destroy()\n } else {\n setEmblaApi(undefined)\n }\n }, [viewport, setEmblaApi])\n\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return\n storedOptions.current = options\n reInit()\n }, [options, reInit])\n\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return\n storedPlugins.current = plugins\n reInit()\n }, [plugins, reInit])\n\n return [setViewport, emblaApi]\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n","export default __webpack_public_path__ + \"static/maskable-36b9e327abc26d5d02e9350d184a058f.png\";"],"names":["Object","defineProperty","exports","value","LZString","getParameters","parameters","input","JSON","stringify","compressToBase64","replace","define_1","module","bracketSpacing","printWidth","semi","singleQuote","trailingComma","tabWidth","useTabs","CAROUSEL_DEFAULT_HEIGHT","CAROUSEL_THUMB_SLIDES_HEIGHT","CAROUSEL_THUMB_SLIDES_SPACING","CAROUSEL_IOS_PICKER_HEIGHT","CAROUSEL_SLIDES_SPACING","CAROUSEL_WRAPPER_SPACING","CAROUSEL_WRAPPER_RADIUS","BORDER_RADIUSES","borderStyles","css","MEDIA","LAYERS","BORDER_SIZES","COLORS","baseWrapperStyles","pageFrameCollapseStyles","carouselDefaultWrapperStyles","carouselThumbsWrapperStyles","iosPickerWrapperStyles","BASE_STYLES","createSquareSizeStyles","FONT_WEIGHTS","BRAND_GRADIENT_TEXT_STYLES","VARIABLE_WIDTH_STYLES","ARROWS_STYLES","DOTS_STYLES","ARROWS_DOTS_STYLES","THUMBS_STYLES","PROGRESS_STYLES","BRAND_GRADIENT_BACKGROUND_STYLES","PARALLAX_STYLES","SCALE_STYLES","LAZY_LOAD_STYLES","CLASS_NAMES_STYLES","INFINITE_SCROLL_STYLES","IOS_PICKER_STYLES","createCarouselDefaultStyles","slideSize","spacingSize","axis","customStyles","horizontal","flexDirection","spacingDirection","panDirection","sizeDimention","imageHeight","arrowsPosition","containerHeight","slideNumberSpacing","styledComponentsStylesToString","createCarouselVariableWidthStyles","createCarouselArrowsDotsStyles","createCarouselThumbsStyles","createCarouselProgressStyles","createCarouselParallaxStyles","createCarouselScaleStyles","createCarouselClassNamesStyles","createCarouselLazyLoadStyles","createCarouselInfiniteScrollStyles","createCarouselIosPickerStyles","InputRadioDefault","createRadioOrCheckboxDefault","InputRadioCard","createRadioOrCheckboxCard","RadioOrCheckboxCardWrapper","styled","TAP_HIGHLIGHT_STYLES","CARD_STYLES","LabelContent","Highlight","Input","KEY_NAVIGATING_STYLES","type","displayName","kebabCaseToPascalCase","InputSelectionComponent","props","children","restProps","isKeyNavigating","useKeyNavigating","React","htmlFor","id","$isKeyNavigating","INPUT_SIZE","RadioOrCheckboxDefaultWrapper","InputWrapper","InputLineHeight","InputRadio","InputCheckbox","Label","SPACINGS","_ref","$disabled","InputComponent","disabled","PageBreadcrumbsWrapper","FONT_SIZES","itemStyles","Link","LinkBare","ActiveTitle","Separator","Icon","PageBreadcrumbs","breadcrumbs","flat","routes","useRoutes","currentRoute","find","route","filter","isRoutePartiallyActive","slug","sort","a","b","level","useRouteBreadcrumbs","length","map","index","title","Fragment","key","to","size","svg","role","PageEditThisPageWrapper","PageEditThisPage","pageUrl","url","URLS","IconWithText","iconSvg","iconSize","ITEM_SPACING","PagePaginationWrapper","createGapStyles","Item","ItemLabel","ItemTitle","IconWithTextText","PagePagination","next","previous","iconSide","slides","options","emblaRef","useEmblaCarousel","className","ref","src","imageByIndex","alt","images","createSandboxReactIndexHtml","async","indexHTML","theme","THEME_PREFIX","getThemeFromDocument","default","SANDBOX_REGEX_THEME","SANDBOX_REGEX_TITLE","createSandboxReactHeader","isTypeScript","header","formattedTitle","createSandboxReactFooter","footer","SANDBOX_REGEX_REPOSITORY_URL","IMAGE_BY_INDEX_IMPORT_REGEX","createSandboxReactImages","match","createSandboxReactTsDeclarations","createSandboxReact","carouselScript","carouselScriptRaw","indexScript","styles","plugins","sandboxOverrides","language","SANDBOX_LANGUAGES","config","sandboxImages","createSandboxImages","SANDBOX_REACT_FOLDERS","prettierConfig","formatCss","loadPrettier","reactScriptExtension","vanillaScriptExtension","formatScript","sandboxLanguageUtils","packageJson","dependencies","devDependencies","docsPackageJson","isJavaScript","name","version","description","main","scripts","start","build","test","eject","react","typescript","browserslist","createSandboxReactPackageJson","tsConfig","include","compilerOptions","strict","esModuleInterop","lib","jsx","createSandboxReactImagePath","entryHtml","entryScript","headerScript","footerScript","imagesScript","tsDeclarations","Promise","all","createSandboxReactDefaultEntry","sandboxConfig","isBinary","content","BASE_CSS","SANDBOX_CSS","assign","files","CAROUSEL_IMPORT_REGEX","SLIDE_COUNT_REGEX","CAROUSEL_IMPORT_REPLACE","slideCount","toString","entry","SANDBOX_REGEX_OPTIONS","sandboxInjectOptions","createSandboxReactIosPickerEntry","loop","SANDBOX_REGEX_IOS_PICKER_LOOP","sandboxInjectIosPickerLoop","PUBLIC","CSS","JS","IMAGES","ICONS_BY_LABEL","VANILLA_JS","VANILLA_TS","REACT_JS","REACT_TS","RadioLabelContent","RadioLabelSvg","SandboxSelectionInput","framework","createSandboxVanillaTsDeclarations","SANDBOX_SCRIPT_SRC_REGEX","SANDBOX_CODE_REGEX","createSandboxVanillaEntry","languageExtension","carouselHtml","scriptSrc","SANDBOX_VANILLA_FOLDERS","IMG_SRC_WITH_HASH_REGEX","IMG_SLIDE_WITH_NUMBER_REGEX","createSandboxVanillaImagePaths","slideWithNumber","createSandboxVanilla","formatHtml","resolutions","createSandboxVanillaPackageJson","sourceMap","allowJs","rootDir","moduleResolution","createSandboxVanillaOptions","SANDBOX_IMAGE_URLS","arrayFromNumber","pathToImageFolder","reduce","allImages","imageUrl","SANDBOX_WRAPPER_STYLES","SANDBOX_CAROUSEL_STYLES","SANDBOX_HEADER_STYLES","SANDBOX_FOOTER_STYLES","THEME_STYLES","RESET_STYLES","FONT_STYLES","Seo","lang","siteMetadata","useSiteMetadata","pageTitle","metaDescription","rel","href","removeProtocol","siteUrl","author","SANDBOX_LABELS","JAVASCRIPT","TYPESCRIPT","SANDBOX_PLUGINS","AUTOPLAY","CLASS_NAMES","SANDBOX_SELECTION_SPACING","number","Array","from","keys","isBrowser","THEME_KEYS","lightThemeClass","document","documentElement","classList","contains","string","separator","replaceString","toUpperCase","PRETTIER_CONFIG","prettierrc","prettier","htmlParser","cssParser","babelParser","prettierHtmlParser","parser","prettierCssParser","prettierBabelParser","prettierBabeTsParser","prettierFormatSafe","subject","formattedString","format","error","console","warn","html","formatJs","js","formatTs","ts","createSandboxFunctionsWithLabels","createSandboxFunction","sandboxLabelKey","createSandbox","label","addSandboxPlugins","pluginNames","isArray","allPlugins","pluginName","stylesList","allStyles","join","isRecord","prototype","call","isObject","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpoints","every","valueA","valueB","sortAndMapPluginToOptions","concat","plugin","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","startAt","_","i","object","objectA","objectB","mergedObjects","currentObject","forEach","areObjects","objectsMergeDeep","evt","ownerWindow","MouseEvent","EventStore","listeners","self","add","node","handler","removeListener","passive","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","timeStep","lastTimeStamp","lag","animationFrame","animate","timeStamp","elapsed","lagOffset","requestAnimationFrame","stop","cancelAnimationFrame","init","hidden","destroy","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loopEnd","counter","withinLimit","get","clone","set","DragHandler","direction","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","cross","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","measure","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","move","lastScroll","readPoint","lastCross","diffScroll","deltaAbs","diffCross","cancelable","up","diff","pointerMove","useFriction","useDuration","apply","preventDefault","targetChanged","byDistance","rawForce","pointerUp","force","baseForce","distance","byIndex","allowedForce","forceFactor","factorAbs","speed","friction","emit","click","stopPropagation","emblaApi","downIfAllowed","isMouseEvt","isMouseEvent","button","nodeName","includes","isFocusNode","buttons","pointerDown","addDragEvents","down","DragTracker","startEvent","lastEvent","readTime","evtAxis","coord","scroll","touches","expired","diffDrag","diffTime","ResizeHandler","container","watchResize","nodeRects","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","edge","diffToEdge","diffToTarget","subtract","useBaseFriction","toggleActive","active","ScrollLooper","contentSize","offsetLocation","vectors","shouldLoop","loopDistance","v","ScrollTarget","scrollSnaps","targetVector","minDistance","distances","shortcut","targets","matchingTargets","t","snap","targetSnapDistance","ascDiffsToSnaps","scrollSnap","diffToSnap","d1","d2","findTargetSnap","reachedBound","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","transform","getAttribute","removeAttribute","SlideLooper","viewSize","slideSizesWithGaps","snaps","ascItems","descItems","reverse","loopPoints","gap","findLoopPoints","slidesInGap","startPoints","endPoints","removeSlideSizes","indexes","offset","isEndEdge","slideBounds","end","findSlideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","shiftLocation","SlidesHandler","watchSlides","mutationObserver","MutationObserver","mutations","mutation","childList","SlidesInView","threshold","intersectionEntryMap","intersectionObserver","inViewCache","notInViewCache","IntersectionObserver","root","parentElement","slide","inView","slideIndexes","list","parseInt","isIntersecting","createInViewList","SlidesToScroll","slidesToScroll","containerRect","slideRects","startGap","endGap","pixelTolerance","startEdge","endEdge","groupByNumber","groupSlides","groupSize","slice","byNumber","groups","rectB","rectA","isFirst","isLast","edgeA","edgeB","gapA","currentSize","previousSize","bySize","Engine","align","scrollAxis","contentDirection","startIndex","duration","inViewThreshold","containScroll","offsetTop","offsetLeft","offsetWidth","offsetHeight","top","right","bottom","left","width","height","Direction","nodeRect","Axis","PercentOfView","alignment","predefined","center","Alignment","containSnaps","readEdgeGap","withEdgeGap","slideRect","measureStartGap","getComputedStyle","parseFloat","getPropertyValue","measureEndGap","rect","rects","arrayIsLastIndex","SlideSizes","snapsAligned","alignments","g","ScrollSnaps","snapsContained","scrollContainLimit","scrollBounds","snapsBounded","snapAligned","scrollBound","toFixed","startSnap","endSnap","lastIndexOf","findScrollContainLimit","measureContained","ScrollContain","ScrollLimit","indexPrevious","dragHandler","seek","engine","scrollLooper","slideLooper","velocity","hasSettled","settled","startLocation","baseDuration","bodyVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","directionDiff","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","eventStore","slidesInView","slideRegistry","groupedSlideIndexes","doNotContain","group","createSlideRegistry","SlideRegistry","slideFocus","lastTabPressTime","registerTabPress","event","code","Date","getTime","addSlideFocusEvent","focus","scrollLeft","findIndex","capture","SlideFocus","resizeHandler","scrollSnapList","slidesHandler","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","EmblaCarousel","userOptions","userPlugins","defaultView","optionsHandler","pluginsHandler","activePlugins","PluginsHandler","mediaHandlers","api","getListeners","e","off","cb","on","EventHandler","reActivate","pluginApis","optionsBase","globalOptions","pluginList","createEngine","activate","withOptions","withPlugins","userContainer","userSlides","customContainer","querySelector","customSlides","querySelectorAll","storeElements","query","offsetParent","selectedScrollSnap","deActivate","jump","canScrollNext","canScrollPrev","containerNode","internalEngine","previousScrollSnap","scrollNext","scrollPrev","slideNodes","slidesNotInView","setTimeout","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","window","createElement","newEmblaApi","undefined","pluginsA","pluginsB","optionA","arePluginsEqual","f","String","fromCharCode","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","res","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","result","c","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","hasOwnProperty","pow","resetValue","getNextValue","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","data","val","position"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js.map b/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js.map deleted file mode 100644 index b53b462e6..000000000 --- a/docs/8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"8f5f0cd04ffec97d1554747721fca69c239d75f0-98783272c6aa402222bd.js","mappings":"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","sources":["webpack://embla-carousel-docs/../../node_modules/codesandbox-import-utils/lib/api/define.js","webpack://embla-carousel-docs/../../node_modules/codesandbox/lib/api/define.js","webpack://embla-carousel-docs/../../.prettierrc.js","webpack://embla-carousel-docs/./src/components/Examples/carouselWrapperStyles.ts","webpack://embla-carousel-docs/./src/components/Examples/createCarouselStyles.ts","webpack://embla-carousel-docs/./src/components/Input/InputRadio.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxCard.tsx","webpack://embla-carousel-docs/./src/components/Input/createRadioOrCheckboxDefault.tsx","webpack://embla-carousel-docs/./src/components/Page/PageBreadcrumbs.tsx","webpack://embla-carousel-docs/./src/hooks/useRouteBreadcrumbs.ts","webpack://embla-carousel-docs/./src/components/Page/PageEditThisPage.tsx","webpack://embla-carousel-docs/./src/components/Page/PagePagination.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/Default/EmblaCarousel.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/React/SandboxFilesSrc/imageByIndex.ts","webpack://embla-carousel-docs/./src/assets/images/slide-1.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-2.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-3.jpg","webpack://embla-carousel-docs/./src/assets/images/slide-4.jpg","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactIndexHtml.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactHeader.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactFooter.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImages.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactImagePath.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsDeclarations.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReact.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/createSandboxReactEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/React/sandboxReactFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/SandboxSelectionInput.tsx","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaPackageJson.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsDeclarations.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaEntry.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaImagePaths.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanilla.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaTsConfig.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/createSandboxVanillaOptions.ts","webpack://embla-carousel-docs/./src/components/Sandbox/Vanilla/sandboxVanillaFolders.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxImages.ts","webpack://embla-carousel-docs/./src/components/Sandbox/sandboxStyles.ts","webpack://embla-carousel-docs/./src/components/Seo/Seo.tsx","webpack://embla-carousel-docs/./src/consts/sandbox.ts","webpack://embla-carousel-docs/./src/utils/arrayFromNumber.ts","webpack://embla-carousel-docs/./src/utils/getThemeFromDocument.ts","webpack://embla-carousel-docs/./src/utils/kebabCaseToPascalCase.ts","webpack://embla-carousel-docs/./src/utils/loadPrettier.ts","webpack://embla-carousel-docs/./src/utils/removeProtocol.ts","webpack://embla-carousel-docs/./src/utils/sandbox.ts","webpack://embla-carousel-docs/./src/utils/styledComponentStylesToString.ts","webpack://embla-carousel-docs/./.prettierrc.js","webpack://embla-carousel-docs/../src/components/utils.ts","webpack://embla-carousel-docs/../src/components/Alignment.ts","webpack://embla-carousel-docs/../src/components/EventStore.ts","webpack://embla-carousel-docs/../src/components/Animations.ts","webpack://embla-carousel-docs/../src/components/Axis.ts","webpack://embla-carousel-docs/../src/components/Limit.ts","webpack://embla-carousel-docs/../src/components/Counter.ts","webpack://embla-carousel-docs/../src/components/Direction.ts","webpack://embla-carousel-docs/../src/components/DragHandler.ts","webpack://embla-carousel-docs/../src/components/DragTracker.ts","webpack://embla-carousel-docs/../src/components/ResizeHandler.ts","webpack://embla-carousel-docs/../src/components/ScrollBounds.ts","webpack://embla-carousel-docs/../src/components/ScrollLooper.ts","webpack://embla-carousel-docs/../src/components/ScrollTarget.ts","webpack://embla-carousel-docs/../src/components/Vector1d.ts","webpack://embla-carousel-docs/../src/components/Translate.ts","webpack://embla-carousel-docs/../src/components/SlideLooper.ts","webpack://embla-carousel-docs/../src/components/SlidesHandler.ts","webpack://embla-carousel-docs/../src/components/SlidesInView.ts","webpack://embla-carousel-docs/../src/components/SlidesToScroll.ts","webpack://embla-carousel-docs/../src/components/Engine.ts","webpack://embla-carousel-docs/../src/components/NodeRects.ts","webpack://embla-carousel-docs/../src/components/PercentOfView.ts","webpack://embla-carousel-docs/../src/components/SlideSizes.ts","webpack://embla-carousel-docs/../src/components/ScrollSnaps.ts","webpack://embla-carousel-docs/../src/components/ScrollContain.ts","webpack://embla-carousel-docs/../src/components/ScrollLimit.ts","webpack://embla-carousel-docs/../src/components/ScrollBody.ts","webpack://embla-carousel-docs/../src/components/ScrollTo.ts","webpack://embla-carousel-docs/../src/components/ScrollProgress.ts","webpack://embla-carousel-docs/../src/components/SlideRegistry.ts","webpack://embla-carousel-docs/../src/components/SlideFocus.ts","webpack://embla-carousel-docs/../src/components/Options.ts","webpack://embla-carousel-docs/../src/components/OptionsHandler.ts","webpack://embla-carousel-docs/../src/components/EmblaCarousel.ts","webpack://embla-carousel-docs/../src/components/PluginsHandler.ts","webpack://embla-carousel-docs/../src/components/EventHandler.ts","webpack://embla-carousel-docs/../src/components/useEmblaCarousel.ts","webpack://embla-carousel-docs/../../node_modules/lz-string/libs/lz-string.js","webpack://embla-carousel-docs/./src/assets/images/maskable.png"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LZString = require(\"lz-string\");\nfunction compress(input) {\n return LZString.compressToBase64(input)\n .replace(/\\+/g, \"-\") // Convert '+' to '-'\n .replace(/\\//g, \"_\") // Convert '/' to '_'\n .replace(/=+$/, \"\"); // Remove ending '='\n}\nfunction getParameters(parameters) {\n return compress(JSON.stringify(parameters));\n}\nexports.getParameters = getParameters;\n//# sourceMappingURL=define.js.map","\"use strict\";\nexports.__esModule = true;\nexports.getParameters = void 0;\nvar define_1 = require(\"codesandbox-import-utils/lib/api/define\");\nexports.getParameters = define_1.getParameters;\n//# sourceMappingURL=define.js.map","module.exports = {\n bracketSpacing: true,\n printWidth: 80,\n semi: false,\n singleQuote: true,\n trailingComma: 'none',\n tabWidth: 2,\n useTabs: false\n}\n","import { pageFrameCollapseStyles } from 'components/Page/PageFrameCollapse'\nimport { css } from 'styled-components'\nimport { MEDIA } from 'consts/breakpoints'\nimport { COLORS } from 'consts/themes'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { LAYERS } from 'consts/layers'\n\nexport const CAROUSEL_DEFAULT_HEIGHT = '19rem'\nexport const CAROUSEL_THUMB_SLIDES_HEIGHT = '9rem'\nexport const CAROUSEL_THUMB_SLIDES_SPACING = '0.8rem'\nexport const CAROUSEL_IOS_PICKER_HEIGHT = '22.2rem'\nexport const CAROUSEL_SLIDES_SPACING = '1rem'\nexport const CAROUSEL_WRAPPER_SPACING = '1.6rem'\nexport const CAROUSEL_WRAPPER_RADIUS = BORDER_RADIUSES.BOX\n\nconst borderStyles = css`\n position: relative;\n\n ${MEDIA.MIN_XS} {\n border-radius: ${CAROUSEL_WRAPPER_RADIUS};\n }\n\n &:after {\n z-index: ${LAYERS.STEP};\n content: '';\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n border-radius: inherit;\n\n ${MEDIA.MIN_XS} {\n border: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n ${MEDIA.MAX_XS} {\n border-top: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n border-bottom: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n`\n\nconst baseWrapperStyles = css`\n ${pageFrameCollapseStyles};\n ${borderStyles};\n background-color: ${COLORS.BACKGROUND_CODE};\n`\n\nexport const carouselDefaultWrapperStyles = css`\n ${baseWrapperStyles};\n height: calc(${CAROUSEL_DEFAULT_HEIGHT} + ${CAROUSEL_WRAPPER_SPACING} * 2);\n`\n\nexport const carouselThumbsWrapperStyles = css`\n ${baseWrapperStyles};\n height: calc(\n ${CAROUSEL_DEFAULT_HEIGHT} + ${CAROUSEL_THUMB_SLIDES_HEIGHT} +\n ${CAROUSEL_THUMB_SLIDES_SPACING} + ${CAROUSEL_WRAPPER_SPACING} * 2\n );\n`\n\nexport const iosPickerWrapperStyles = css`\n ${pageFrameCollapseStyles};\n ${borderStyles};\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n background-color: ${COLORS.BACKGROUND_CODE};\n padding-left: ${CAROUSEL_WRAPPER_SPACING};\n padding-right: ${CAROUSEL_WRAPPER_SPACING};\n touch-action: none;\n`\n","import { css, FlattenSimpleInterpolation } from 'styled-components'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { MEDIA } from 'consts/breakpoints'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { EmblaOptionsType } from 'embla-carousel'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport {\n BRAND_GRADIENT_TEXT_STYLES,\n BRAND_GRADIENT_BACKGROUND_STYLES\n} from 'consts/gradients'\nimport {\n CAROUSEL_DEFAULT_HEIGHT,\n CAROUSEL_THUMB_SLIDES_HEIGHT,\n CAROUSEL_IOS_PICKER_HEIGHT,\n CAROUSEL_THUMB_SLIDES_SPACING,\n CAROUSEL_WRAPPER_SPACING,\n CAROUSEL_SLIDES_SPACING\n} from './carouselWrapperStyles'\n\nexport const BASE_STYLES = css`\n .embla {\n --slide-spacing: __replace_axis_spacing_amount__;\n --slide-size: __replace_slide_size__;\n --slide-height: ${CAROUSEL_DEFAULT_HEIGHT};\n padding: ${CAROUSEL_WRAPPER_SPACING};\n }\n\n .embla__viewport {\n overflow: hidden;\n }\n\n .embla__container {\n backface-visibility: hidden;\n display: flex;\n touch-action: __replace-axis-touch_action__;\n margin-__replace_axis_spacing__: calc(var(--slide-spacing) * -1);\n __replace_axis_height__\n __replace_axis_flex__\n }\n\n .embla__slide {\n flex: 0 0 var(--slide-size);\n min-__replace-axis-size__: 0;\n padding-__replace_axis_spacing__: var(--slide-spacing);\n position: relative;\n }\n\n .embla__slide__img {\n display: block;\n height: __replace_image_height__;\n width: 100%;\n object-fit: cover;\n }\n\n .embla__slide__number {\n ${createSquareSizeStyles('4.6rem')}\n z-index: ${LAYERS.STEP};\n position: absolute;\n top: __replace_axis_slide_number_spacing__;\n right: 0.6rem;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n background-color: rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.85);\n line-height: 4.6rem;\n font-weight: ${FONT_WEIGHTS.BLACK};\n text-align: center;\n pointer-events: none;\n }\n\n .embla__slide__number > span {\n ${BRAND_GRADIENT_TEXT_STYLES}\n font-size: 1.6rem;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n`\n\nexport const VARIABLE_WIDTH_STYLES = css`\n .embla__slide:nth-child(1) {\n flex: 0 0 60%;\n }\n .embla__slide:nth-child(2) {\n flex: 0 0 40%;\n }\n .embla__slide:nth-child(3) {\n flex: 0 0 30%;\n }\n .embla__slide:nth-child(4) {\n flex: 0 0 90%;\n }\n .embla__slide:nth-child(5) {\n flex: 0 0 35%;\n }\n .embla__slide:nth-child(6) {\n flex: 0 0 55%;\n }\n .embla__slide:nth-child(7) {\n flex: 0 0 85%;\n }\n .embla__slide:nth-child(8) {\n flex: 0 0 46%;\n }\n .embla__slide:nth-child(9) {\n flex: 0 0 30%;\n }\n`\n\nexport const ARROWS_STYLES = css`\n .embla__button {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .embla__buttons {\n display: flex;\n align-items: center;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: __replace_axis_arrows_position__;\n __replace_axis_arrows__\n }\n\n .embla__button {\n z-index: ${LAYERS.STEP};\n color: ${COLORS.BACKGROUND_SITE};\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n ${createSquareSizeStyles('4rem')}\n }\n\n .embla__button:disabled {\n opacity: 0.3;\n }\n\n .embla__button__svg {\n ${createSquareSizeStyles('65%')}\n }\n`\n\nexport const DOTS_STYLES = css`\n .embla__dot {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: inline-flex;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n }\n\n .embla__dots {\n z-index: ${LAYERS.STEP};\n bottom: ${CAROUSEL_WRAPPER_SPACING};\n position: absolute;\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .embla__dot {\n ${createSquareSizeStyles('2.4rem')}\n display: flex;\n align-items: center;\n margin-right: 0.75rem;\n margin-left: 0.75rem;\n }\n\n .embla__dot:after {\n background: ${COLORS.BACKGROUND_SITE};\n border-radius: ${BORDER_RADIUSES.LINE};\n width: 100%;\n height: 0.3rem;\n content: '';\n }\n\n .embla__dot--selected:after {\n background: ${`linear-gradient(45deg, ${COLORS.BRAND_PRIMARY}, ${COLORS.BRAND_SECONDARY})`};\n }\n`\n\nexport const ARROWS_DOTS_STYLES = css`\n ${ARROWS_STYLES}\n ${DOTS_STYLES}\n`\n\nexport const THUMBS_STYLES = css`\n .embla-thumbs {\n --thumbs-slide-spacing: ${CAROUSEL_THUMB_SLIDES_SPACING};\n --thumbs-slide-height: ${CAROUSEL_THUMB_SLIDES_HEIGHT};\n margin-top: var(--thumbs-slide-spacing);\n }\n\n .embla-thumbs__viewport {\n overflow: hidden;\n }\n\n .embla-thumbs__container {\n display: flex;\n flex-direction: row;\n margin-left: calc(var(--thumbs-slide-spacing) * -1);\n }\n\n .embla-thumbs__slide {\n flex: 0 0 28%;\n min-__replace-axis-size__: 0;\n padding-left: var(--thumbs-slide-spacing);\n position: relative;\n }\n\n ${MEDIA.MIN_XS} {\n .embla-thumbs__slide {\n flex: 0 0 18%;\n }\n }\n\n .embla-thumbs__slide__button {\n -webkit-appearance: none;\n background-color: transparent;\n touch-action: manipulation;\n display: block;\n text-decoration: none;\n cursor: pointer;\n border: 0;\n padding: 0;\n margin: 0;\n width: 100%;\n opacity: 0.2;\n transition: opacity 0.2s;\n }\n\n .embla-thumbs__slide--selected .embla-thumbs__slide__button {\n opacity: 1;\n }\n\n .embla-thumbs__slide__img {\n display: block;\n height: var(--thumbs-slide-height);\n width: 100%;\n object-fit: cover;\n }\n\n .embla-thumbs__slide__number {\n ${createSquareSizeStyles('3rem')}\n z-index: ${LAYERS.STEP};\n position: absolute;\n top: 0.3rem;\n right: 0.3rem;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n background-color: rgba(${COLORS.BACKGROUND_SITE_RGB_VALUE}, 0.85);\n line-height: 3rem;\n font-weight: ${FONT_WEIGHTS.BLACK};\n text-align: center;\n pointer-events: none;\n }\n\n .embla-thumbs__slide__number > span {\n ${BRAND_GRADIENT_TEXT_STYLES}\n font-size: 1.4rem;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n }\n`\n\nconst PROGRESS_STYLES = css`\n .embla__progress {\n z-index: ${LAYERS.STEP};\n background-color: ${COLORS.BACKGROUND_SITE};\n position: absolute;\n height: 0.3rem;\n border-radius: ${BORDER_RADIUSES.LINE};\n left: 0;\n right: 0;\n bottom: 2.6rem;\n margin-left: auto;\n margin-right: auto;\n pointer-events: none;\n width: 21rem;\n max-width: 90%;\n overflow: hidden;\n }\n\n .embla__progress__bar {\n ${BRAND_GRADIENT_BACKGROUND_STYLES}\n position: absolute;\n width: 100%;\n top: 0;\n bottom: 0;\n left: -100%;\n }\n`\n\nconst PARALLAX_STYLES = css`\n .embla__parallax {\n height: 100%;\n overflow: hidden;\n }\n\n .embla__parallax__layer {\n position: relative;\n height: 100%;\n width: 100%;\n }\n\n .embla__parallax__img {\n max-width: none;\n width: calc(100% + (var(--slide-spacing) * 2));\n margin-left: calc(var(--slide-spacing) * -1);\n }\n`\n\nconst SCALE_STYLES = css`\n .embla__scale {\n height: 100%;\n position: relative;\n backface-visibility: hidden;\n }\n`\n\nconst LAZY_LOAD_STYLES = css`\n .embla__lazy-load {\n position: relative;\n height: 100%;\n }\n\n .embla__lazy-load__spinner {\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n display: inline-flex;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla__lazy-load__img {\n opacity: 0;\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__lazy-load--has-loaded .embla__lazy-load__img {\n opacity: 1;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nconst CLASS_NAMES_STYLES = css`\n .embla__class-names {\n transition: opacity 0.2s ease-in-out;\n }\n\n .embla__class-names:not(.is-snapped) {\n opacity: 0.16;\n }\n`\n\nconst INFINITE_SCROLL_STYLES = css`\n .embla-infinite-scroll {\n position: relative;\n flex: 0 0 15rem;\n min-__replace-axis-size__: 0;\n height: var(--slide-height);\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .embla-infinite-scroll__spinner {\n display: none;\n border: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.2);\n border-left: ${BORDER_SIZES.ACCENT_VERTICAL} solid\n ${COLORS.TEXT_HIGH_CONTRAST};\n font-size: 1rem;\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n margin: auto;\n text-indent: -9999em;\n animation: loading 1.1s infinite linear;\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll__spinner:after {\n border-radius: inherit;\n ${createSquareSizeStyles('5rem')}\n }\n\n .embla-infinite-scroll--loading-more > .embla-infinite-scroll__spinner {\n display: inline-flex;\n }\n\n @keyframes loading {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`\n\nconst IOS_PICKER_STYLES = css`\n .embla {\n position: relative;\n display: flex;\n width: 100%;\n height: ${CAROUSEL_IOS_PICKER_HEIGHT};\n max-width: 30rem;\n margin-left: auto;\n margin-right: auto;\n }\n\n .embla:before,\n .embla:after {\n position: absolute;\n left: 0;\n right: 0;\n content: '';\n display: block;\n height: calc(50% - 32px / 2);\n z-index: ${LAYERS.STEP};\n pointer-events: none;\n }\n\n .embla:before {\n top: -0.5px;\n border-bottom: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to top,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla:after {\n bottom: -0.5px;\n border-top: 0.5px solid rgba(${COLORS.TEXT_HIGH_CONTRAST_RGB_VALUE}, 0.3);\n background: linear-gradient(\n to bottom,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 0.65) 0%,\n rgba(${COLORS.BACKGROUND_CODE_RGB_VALUE}, 1) 100%\n );\n }\n\n .embla__ios-picker {\n height: 100%;\n display: flex;\n align-items: center;\n min-width: 50%;\n justify-content: center;\n line-height: 1;\n font-size: 1.8rem;\n }\n\n .embla__ios-picker__scene {\n min-width: 100%;\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n touch-action: pan-x;\n }\n\n .embla__ios-picker__viewport {\n height: 32px;\n width: 100%;\n position: relative;\n perspective: 1000px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n -khtml-user-select: none;\n -webkit-tap-highlight-color: transparent;\n }\n\n .embla__ios-picker__viewport--perspective-left {\n perspective-origin: calc(50% + 130px) 50%;\n transform: translateX(27px);\n }\n\n .embla__ios-picker__viewport--perspective-right {\n perspective-origin: calc(50% - 130px) 50%;\n transform: translateX(-27px);\n }\n\n .embla__ios-picker__container {\n height: 100%;\n width: 100%;\n position: absolute;\n transform-style: preserve-3d;\n will-change: transform;\n }\n\n .embla__ios-picker__slide {\n position: absolute;\n top: 0 !important;\n left: 0 !important;\n width: 100%;\n height: 100%;\n font-size: 19px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n backface-visibility: hidden;\n opacity: 0;\n }\n\n .embla__ios-picker__label {\n font-weight: ${FONT_WEIGHTS.BOLD};\n transform: translateX(-55px);\n pointer-events: none;\n }\n`\n\nexport const createCarouselDefaultStyles = (\n slideSize: string = '100%',\n spacingSize: string = CAROUSEL_SLIDES_SPACING,\n axis: EmblaOptionsType['axis'] = 'x',\n customStyles: FlattenSimpleInterpolation | string = []\n): string => {\n const horizontal = axis === 'x'\n const flexDirection = horizontal ? '' : 'flex-direction: column;'\n const spacingDirection = horizontal ? 'left' : 'top'\n const panDirection = `pan-${horizontal ? 'y' : 'x'}`\n const sizeDimention = horizontal ? 'width' : 'height'\n const imageHeight = horizontal ? 'var(--slide-height)' : '100%'\n const arrowsPosition = horizontal ? '1.6rem' : '2.4rem'\n const containerHeight = horizontal\n ? ''\n : 'height: calc(var(--slide-spacing) + var(--slide-height));'\n const slideNumberSpacing = horizontal\n ? '0.6rem'\n : 'calc(var(--slide-spacing) + 0.6rem)'\n\n const baseStyles = styledComponentsStylesToString(BASE_STYLES)\n const additionalStyles =\n typeof customStyles === 'string'\n ? customStyles\n : styledComponentsStylesToString(customStyles)\n\n const mergedStyles = baseStyles + additionalStyles\n\n return mergedStyles\n .replace(/__replace_axis_flex__/gi, flexDirection)\n .replace(/__replace-axis-size__/gi, sizeDimention)\n .replace(/__replace_axis_arrows_position__/gi, arrowsPosition)\n .replace(/__replace_axis_arrows__/gi, flexDirection)\n .replace(/__replace-axis-touch_action__/gi, panDirection)\n .replace(/__replace_axis_spacing__/gi, spacingDirection)\n .replace(/__replace_axis_spacing_amount__/gi, spacingSize)\n .replace(/__replace_axis_height__/gi, containerHeight)\n .replace(/__replace_image_height__/gi, imageHeight)\n .replace(/__replace_axis_slide_number_spacing__/gi, slideNumberSpacing)\n .replace(/__replace_slide_size__/gi, slideSize)\n}\n\nexport const createCarouselVariableWidthStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n VARIABLE_WIDTH_STYLES\n )\n}\n\nexport const createCarouselArrowsDotsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n ARROWS_DOTS_STYLES\n )\n}\n\nexport const createCarouselThumbsStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n THUMBS_STYLES\n )\n}\n\nexport const createCarouselProgressStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n PROGRESS_STYLES\n )\n}\n\nexport const createCarouselParallaxStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n PARALLAX_STYLES\n )\n}\n\nexport const createCarouselScaleStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(slideSize, spacingSize, axis, SCALE_STYLES)\n}\n\nexport const createCarouselClassNamesStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n CLASS_NAMES_STYLES\n )\n}\n\nexport const createCarouselLazyLoadStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n LAZY_LOAD_STYLES\n )\n}\n\nexport const createCarouselInfiniteScrollStyles = (\n slideSize?: string,\n spacingSize?: string,\n axis?: EmblaOptionsType['axis']\n): string => {\n return createCarouselDefaultStyles(\n slideSize,\n spacingSize,\n axis,\n INFINITE_SCROLL_STYLES\n )\n}\n\nexport const createCarouselIosPickerStyles = (): string => {\n return styledComponentsStylesToString(IOS_PICKER_STYLES)\n}\n","import { createRadioOrCheckboxDefault } from './createRadioOrCheckboxDefault'\nimport { createRadioOrCheckboxCard } from './createRadioOrCheckboxCard'\n\nexport const InputRadioDefault = createRadioOrCheckboxDefault('radio')\n\nexport const InputRadioCard = createRadioOrCheckboxCard('radio')\n","import React from 'react'\nimport styled from 'styled-components'\nimport { CARD_STYLES } from 'consts/card'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { PropType } from './createRadioOrCheckboxDefault'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { BORDER_RADIUSES, BORDER_SIZES } from 'consts/border'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { LAYERS } from 'consts/layers'\nimport { COLORS } from 'consts/themes'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst RadioOrCheckboxCardWrapper = styled.label`\n ${TAP_HIGHLIGHT_STYLES};\n ${CARD_STYLES};\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n height: 100%;\n`\n\nconst LabelContent = styled.span`\n z-index: ${LAYERS.STEP};\n position: relative;\n display: block;\n width: 100%;\n cursor: pointer;\n`\n\nconst Highlight = styled.span`\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n top: -${BORDER_SIZES.DETAIL};\n left: -${BORDER_SIZES.DETAIL};\n bottom: -${BORDER_SIZES.DETAIL};\n right: -${BORDER_SIZES.DETAIL};\n display: block;\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n visibility: hidden;\n\n &:after {\n background-color: ${COLORS.BACKGROUND_CODE};\n border-radius: inherit;\n position: absolute;\n top: ${BORDER_SIZES.OUTLINE};\n left: ${BORDER_SIZES.OUTLINE};\n bottom: ${BORDER_SIZES.OUTLINE};\n right: ${BORDER_SIZES.OUTLINE};\n content: '';\n }\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n position: absolute;\n border-radius: ${BORDER_RADIUSES.CARD};\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n appearance: none;\n -webkit-appearance: none;\n border: 0;\n background-color: transparent;\n pointer-events: none;\n\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n ${createSquareSizeStyles('100%')};\n }\n\n &:checked + ${Highlight} {\n visibility: visible;\n }\n\n &[disabled] + ${Highlight} + ${LabelContent} {\n cursor: not-allowed;\n }\n\n &[disabled]:checked + ${Highlight} {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n`\n\nexport const createRadioOrCheckboxCard = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const displayName = kebabCaseToPascalCase(`input-${type}-card`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n \n {children}\n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { PropsWithRef } from 'react'\nimport styled, { css } from 'styled-components'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { useKeyNavigating } from 'hooks/useKeyNavigating'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { BORDER_RADIUSES } from 'consts/border'\nimport { BRAND_GRADIENT_BACKGROUND_STYLES } from 'consts/gradients'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { TAP_HIGHLIGHT_STYLES } from 'consts/tapHighlight'\nimport { KEY_NAVIGATING_STYLES } from 'consts/keyNavigatingStyles'\n\nconst INPUT_SIZE = '2.5rem'\nconst CHECK_SIZE = '1.2rem'\n\nconst RadioOrCheckboxDefaultWrapper = styled.span`\n display: flex;\n align-items: flex-start;\n flex-wrap: wrap;\n`\n\nconst InputWrapper = styled.span`\n flex: 0 0 ${INPUT_SIZE};\n position: relative;\n min-width: 0;\n`\n\nconst InputLineHeight = styled.span`\n color: ${COLORS.BACKGROUND_SITE};\n width: ${INPUT_SIZE};\n display: inline-block;\n line-height: inherit;\n`\n\nconst Input = styled.input<{ $isKeyNavigating: boolean }>`\n ${createSquareSizeStyles(INPUT_SIZE)};\n ${TAP_HIGHLIGHT_STYLES};\n ${KEY_NAVIGATING_STYLES};\n appearance: none;\n -webkit-appearance: none;\n position: absolute;\n top: 50%;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n background-color: ${COLORS.DETAIL_MEDIUM_CONTRAST};\n cursor: pointer;\n\n &:before,\n &:after {\n display: block;\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:before {\n ${createSquareSizeStyles('2rem')};\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n &:after {\n ${createSquareSizeStyles(CHECK_SIZE)};\n }\n\n &:checked {\n &:after {\n ${BRAND_GRADIENT_BACKGROUND_STYLES};\n }\n }\n\n &[disabled] {\n cursor: not-allowed;\n }\n\n &[disabled]:checked {\n &:after {\n background-image: none;\n background-color: ${COLORS.DETAIL_HIGH_CONTRAST};\n }\n }\n`\n\nconst InputRadio = styled(Input)`\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n &:after {\n border-radius: ${BORDER_RADIUSES.CIRCLE};\n }\n`\n\nconst InputCheckbox = styled(Input)`\n border-radius: ${BORDER_RADIUSES.LINE};\n\n &:before {\n border-radius: ${BORDER_RADIUSES.LINE};\n }\n\n &:after {\n border-radius: 0;\n }\n`\n\nconst Label = styled.label<{ $disabled?: boolean }>`\n ${TAP_HIGHLIGHT_STYLES};\n padding-left: ${SPACINGS.TWO};\n min-width: 0;\n flex: 0 0 calc(100% - ${INPUT_SIZE});\n\n ${({ $disabled }) =>\n $disabled &&\n css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n `};\n`\n\nexport type PropType = PropsWithRef<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes,\n HTMLInputElement\n >\n>\n\nexport const createRadioOrCheckboxDefault = (\n type: 'radio' | 'checkbox'\n): ((props: PropType) => JSX.Element) => {\n const InputComponent = type === 'radio' ? InputRadio : InputCheckbox\n const displayName = kebabCaseToPascalCase(`input-${type}-default`)\n\n const InputSelectionComponent = (props: PropType) => {\n const { children, ...restProps } = props\n const { isKeyNavigating } = useKeyNavigating()\n\n return (\n \n \n -\n \n \n \n \n )\n }\n\n InputSelectionComponent.displayName = displayName\n return InputSelectionComponent\n}\n","import React, { Fragment } from 'react'\nimport styled, { css } from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { useRouteBreadcrumbs } from 'hooks/useRouteBreadcrumbs'\nimport { Icon } from 'components/Icon/Icon'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\n\nconst PageBreadcrumbsWrapper = styled.nav`\n display: flex;\n align-items: center;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n margin-bottom: ${SPACINGS.THREE};\n`\n\nconst itemStyles = css`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding: ${SPACINGS.ONE} 0;\n`\n\nconst Link = styled(LinkBare)`\n ${itemStyles};\n`\n\nconst ActiveTitle = styled.span`\n ${itemStyles};\n`\n\nconst Separator = styled(Icon)`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n margin: 0 ${SPACINGS.ONE};\n`\n\ntype PropType = { id: string }\n\nexport const PageBreadcrumbs = (props: PropType) => {\n const { id } = props\n const breadcrumbs = useRouteBreadcrumbs(id)\n\n if (breadcrumbs.length === 0) return null\n\n return (\n \n {breadcrumbs.map(({ id, slug, title }, index) =>\n index !== breadcrumbs.length - 1 ? (\n \n {title}\n \n \n ) : (\n {title}\n )\n )}\n \n )\n}\n","import { RouteType } from 'components/Routes/RoutesContext'\nimport { isRoutePartiallyActive } from 'utils/isRoutePartiallyActive'\nimport { useRoutes } from './useRoutes'\n\nexport const useRouteBreadcrumbs = (id: string): RouteType[] => {\n const { flat: routes } = useRoutes()\n const currentRoute = routes.find((route) => route.id === id)\n\n return routes\n .filter((route) =>\n isRoutePartiallyActive(route.slug, currentRoute?.slug || '')\n )\n .sort((a, b) => a.level - b.level)\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { COLORS } from 'consts/themes'\nimport { FONT_SIZES } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { URLS } from 'consts/urls'\nimport { IconWithText } from 'components/Icon/IconWithText'\n\nconst PageEditThisPageWrapper = styled(LinkBare)`\n display: inline-flex;\n align-items: center;\n text-decoration: none;\n font-size: ${FONT_SIZES.COMPLEMENTARY};\n padding-top: ${SPACINGS.ONE};\n padding-bottom: ${SPACINGS.ONE};\n margin-top: ${SPACINGS.EIGHT};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n`\n\ntype PropType = {\n pageUrl: string\n}\n\nexport const PageEditThisPage = (props: PropType) => {\n const { pageUrl } = props\n const url = `${URLS.GITHUB_DOCUMENTATION}/${pageUrl}`\n\n return (\n \n \n Edit this page on GitHub\n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { PropType as PageDefaultType } from 'templates/Default'\nimport { LinkBare } from 'components/Link/LinkBare'\nimport { BRAND_GRADIENT_TEXT_STYLES } from 'consts/gradients'\nimport { COLORS } from 'consts/themes'\nimport { SPACINGS } from 'consts/spacings'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { IconWithText, IconWithTextText } from 'components/Icon/IconWithText'\nimport { createGapStyles } from 'utils/createGapStyles'\n\nconst ITEM_SPACING = SPACINGS.FOUR\n\nconst PagePaginationWrapper = styled.nav`\n ${createGapStyles(ITEM_SPACING, '', 'div')};\n display: flex;\n justify-content: space-between;\n margin-top: ${SPACINGS.EIGHT};\n`\n\nconst Item = styled.div`\n > a {\n color: ${COLORS.BRAND_PRIMARY};\n }\n\n &:nth-child(2) > a {\n text-align: right;\n color: ${COLORS.BRAND_SECONDARY};\n }\n`\n\nconst ItemLabel = styled.div`\n color: ${COLORS.TEXT_LOW_CONTRAST};\n padding-bottom: ${SPACINGS.ONE};\n`\n\nconst ItemTitle = styled.div`\n display: inline-flex;\n align-items: center;\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n\n ${IconWithTextText} {\n ${BRAND_GRADIENT_TEXT_STYLES};\n }\n`\n\ntype PropType = {\n next: PageDefaultType['pageContext']['next']\n previous: PageDefaultType['pageContext']['previous']\n}\n\nexport const PagePagination = (props: PropType) => {\n const { next, previous } = props\n\n return (\n \n \n {previous && (\n \n Previous\n \n {previous.title}\n \n \n )}\n \n \n {next && (\n \n Next\n \n \n {next.title}\n \n \n \n )}\n \n \n )\n}\n","import React from 'react'\nimport useEmblaCarousel, { EmblaOptionsType } from 'embla-carousel-react'\nimport imageByIndex from '../imageByIndex'\n\ntype PropType = {\n slides: number[]\n options?: EmblaOptionsType\n}\n\nconst EmblaCarousel: React.FC = (props) => {\n const { slides, options } = props\n const [emblaRef] = useEmblaCarousel(options)\n\n return (\n
\n
\n
\n {slides.map((index) => (\n
\n
\n {index + 1}\n
\n \n
\n ))}\n
\n
\n
\n )\n}\n\nexport default EmblaCarousel\n","import image1 from 'assets/images/slide-1.jpg'\nimport image2 from 'assets/images/slide-2.jpg'\nimport image3 from 'assets/images/slide-3.jpg'\nimport image4 from 'assets/images/slide-4.jpg'\n\nexport const images: string[] = [image1, image2, image3, image4]\n\nconst imageByIndex = (index: number): string => images[index % images.length]\n\nexport default imageByIndex\n","export default __webpack_public_path__ + \"static/slide-1-ae1074a2ded156f4bb23fc2cbf269223.jpg\";","export default __webpack_public_path__ + \"static/slide-2-4a3fdf56a1fd7125dc80f4574dae6bbf.jpg\";","export default __webpack_public_path__ + \"static/slide-3-90be65c116762a9e53a2ddf8b625feec.jpg\";","export default __webpack_public_path__ + \"static/slide-4-f352d7c20aee3f1a7868858247d7dbb7.jpg\";","import { THEME_PREFIX } from 'consts/themes'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SANDBOX_REGEX_THEME, SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactIndexHtml = async (\n id: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n}\n","import { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_TITLE } from 'consts/sandbox'\n\nexport const createSandboxReactHeader = async (\n isTypeScript: boolean,\n id: string\n): Promise => {\n let header: SandboxModuleType\n\n if (isTypeScript) {\n header = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.tsx'\n )\n } else {\n header = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Header.jsx'\n )\n }\n\n const formattedTitle = kebabCaseToPascalCase(id, ' ')\n return header.default.replace(SANDBOX_REGEX_TITLE, formattedTitle)\n}\n","import { URLS } from 'consts/urls'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { SANDBOX_REGEX_REPOSITORY_URL } from 'consts/sandbox'\n\nexport const createSandboxReactFooter = async (\n isTypeScript: boolean\n): Promise => {\n let footer: SandboxModuleType\n\n if (isTypeScript) {\n footer = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.tsx'\n )\n } else {\n footer = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/Footer.jsx'\n )\n }\n\n return footer.default.replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n}\n","import { SandboxModuleType } from 'consts/sandbox'\n\nconst IMAGE_BY_INDEX_IMPORT_REGEX = /import(.*)from\\s'assets/g\n\nexport const createSandboxReactImages = async (\n isTypeScript: boolean\n): Promise => {\n let imageByIndex: SandboxModuleType\n\n if (isTypeScript) {\n imageByIndex = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/imageByIndex.ts'\n )\n } else {\n imageByIndex = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/imageByIndex.js'\n )\n }\n return imageByIndex.default.replace(IMAGE_BY_INDEX_IMPORT_REGEX, (match) =>\n match.replace('assets', '..')\n )\n}\n","const IMAGE_BY_INDEX_IMPORT_REGEX = /import(.*)from\\s'..\\/imageByIndex/\n\nexport const createSandboxReactImagePath = (carouselScript: string): string => {\n return carouselScript.replace(IMAGE_BY_INDEX_IMPORT_REGEX, (match) =>\n match.replace('../', './')\n )\n}\n","export const createSandboxReactTsDeclarations = async (): Promise => {\n const declarations = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/declarations.d.ts'\n )\n return declarations.default\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { BASE_CSS, SANDBOX_CSS } from 'components/Sandbox/sandboxStyles'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { createSandboxImages } from '../sandboxImages'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxReactPackageJson } from './createSandboxReactPackageJson'\nimport { createSandboxReactIndexHtml } from './createSandboxReactIndexHtml'\nimport { createSandboxReactDefaultEntry } from './createSandboxReactEntry'\nimport { createSandboxReactHeader } from './createSandboxReactHeader'\nimport { createSandboxReactFooter } from './createSandboxReactFooter'\nimport { createSandboxReactImages } from './createSandboxReactImages'\nimport { createSandboxReactImagePath } from './createSandboxReactImagePath'\nimport { createSandboxReactTsConfig } from './createSandboxReactTsConfig'\nimport { createSandboxReactTsDeclarations } from './createSandboxReactTsDeclarations'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxConfigType,\n SandboxReactCreateType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxReact = async (\n config: SandboxReactCreateType\n): Promise => {\n const {\n id,\n carouselScript: carouselScriptRaw,\n indexScript,\n slides,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-react`\n const sandboxImages = createSandboxImages(SANDBOX_REACT_FOLDERS.IMAGES)\n const { prettierConfig, formatCss } = await loadPrettier()\n const {\n isTypeScript,\n reactScriptExtension,\n vanillaScriptExtension,\n formatScript\n } = await sandboxLanguageUtils(language)\n const packageJson = await createSandboxReactPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxReactTsConfig()\n const carouselScript = createSandboxReactImagePath(carouselScriptRaw)\n const [\n entryHtml,\n entryScript,\n headerScript,\n footerScript,\n imagesScript,\n tsDeclarations\n ] = await Promise.all([\n createSandboxReactIndexHtml(title),\n indexScript ||\n createSandboxReactDefaultEntry(isTypeScript, slides, options),\n createSandboxReactHeader(isTypeScript, title),\n createSandboxReactFooter(isTypeScript),\n createSandboxReactImages(isTypeScript),\n createSandboxReactTsDeclarations()\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`${SANDBOX_REACT_FOLDERS.PUBLIC}/index.html`]: {\n isBinary: false,\n content: entryHtml\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(BASE_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_REACT_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Header.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(headerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/Footer.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(footerScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/EmblaCarousel.${reactScriptExtension}`]: {\n isBinary: false,\n content: formatScript(carouselScript)\n },\n [`${SANDBOX_REACT_FOLDERS.JS}/imageByIndex.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(imagesScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n },\n [`declarations.d.ts`]: {\n isBinary: false,\n content: tsDeclarations\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxImages, sandboxOverrides)\n })\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { SANDBOX_REACT_FOLDERS } from './sandboxReactFolders'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxLanguageType,\n SandboxPluginsType,\n PackageJsonType\n} from 'consts/sandbox'\n\nexport const createSandboxReactPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { dependencies, devDependencies } = docsPackageJson\n const { isJavaScript, reactScriptExtension } = await sandboxLanguageUtils(\n language\n )\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: `${SANDBOX_REACT_FOLDERS.JS}/index.${reactScriptExtension}`,\n scripts: {\n start: 'react-scripts start',\n build: 'react-scripts build',\n test: 'react-scripts test --env=jsdom',\n eject: 'react-scripts eject'\n },\n dependencies: {\n react: dependencies.react,\n 'react-dom': dependencies['react-dom'],\n 'react-scripts': '4.0.0',\n 'embla-carousel-react': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/runtime': '7.13.8' }\n : {\n '@types/react': devDependencies['@types/react'],\n '@types/react-dom': devDependencies['@types/react-dom'],\n typescript: devDependencies.typescript\n },\n browserslist: ['>0.2%', 'not dead', 'not ie <= 11', 'not op_mini all']\n }\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxReactTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*', './declarations.d.ts'],\n compilerOptions: {\n strict: true,\n esModuleInterop: true,\n lib: ['dom', 'es2015'],\n jsx: 'react-jsx'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { SandboxModuleType } from 'consts/sandbox'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nconst CAROUSEL_IMPORT_REGEX = /import\\sEmblaCarousel\\sfrom\\s'(.*)'/\nconst SLIDE_COUNT_REGEX = /const\\sSLIDE_COUNT\\s=\\s\\d{1,}/\nconst CAROUSEL_IMPORT_REPLACE = 'import EmblaCarousel from \"./EmblaCarousel\"'\n\nexport const createSandboxReactDefaultEntry = async (\n isTypeScript: boolean,\n slides: number[],\n options: EmblaOptionsType\n): Promise => {\n const slideCount = slides.length.toString()\n let entry: SandboxModuleType\n\n if (isTypeScript) {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.tsx'\n )\n } else {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselDefaultEntry.jsx'\n )\n }\n\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SLIDE_COUNT_REGEX, (match) => match.replace(/\\d{1,}/, slideCount))\n}\n\nexport const createSandboxReactIosPickerEntry = async (\n isTypeScript: boolean,\n loop: boolean\n): Promise => {\n let entry: SandboxModuleType\n\n if (isTypeScript) {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.tsx'\n )\n } else {\n entry = await import(\n '!!raw-loader!components/Sandbox/React/SandboxFilesDist/CarouselIosPickerEntry.jsx'\n )\n }\n\n return entry.default\n .replace(CAROUSEL_IMPORT_REGEX, CAROUSEL_IMPORT_REPLACE)\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_REACT_FOLDERS = {\n PUBLIC: 'public',\n CSS: 'src/css',\n JS: 'src/js',\n IMAGES: 'src/images'\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { Icon } from 'components/Icon/Icon'\nimport { InputRadioCard } from 'components/Input/InputRadio'\nimport { FONT_SIZES, FONT_WEIGHTS } from 'consts/fontSizes'\nimport { SPACINGS } from 'consts/spacings'\nimport { createSquareSizeStyles } from 'utils/createSquareSizeStyles'\nimport { PropType as RadioOrCheckboxPropType } from 'components/Input/createRadioOrCheckboxDefault'\nimport { SandboxLabelKeyType } from 'consts/sandbox'\nimport { IconType } from 'assets/icons'\n\nconst ICONS_BY_LABEL: {\n [key in SandboxLabelKeyType]: Extract<\n IconType,\n 'javascript' | 'typescript' | 'react'\n >\n} = {\n VANILLA_JS: 'javascript',\n VANILLA_TS: 'typescript',\n REACT_JS: 'react',\n REACT_TS: 'react'\n}\n\nconst RadioLabelContent = styled.span`\n display: flex;\n flex-direction: column;\n padding: ${SPACINGS.TWO};\n line-height: 1;\n text-align: center;\n align-items: center;\n font-size: ${FONT_SIZES.DETAIL};\n font-weight: ${FONT_WEIGHTS.MEDIUM};\n`\n\nconst RadioLabelSvg = styled(Icon)`\n ${createSquareSizeStyles('3rem')};\n margin-bottom: ${SPACINGS.TWO};\n`\n\ntype PropType = RadioOrCheckboxPropType & {\n framework: SandboxLabelKeyType\n}\n\nexport const SandboxSelectionInput = (props: PropType) => {\n const { children, framework, ...restProps } = props\n\n return (\n \n \n \n {children}\n \n \n )\n}\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n PackageJsonType,\n SandboxLanguageType,\n SandboxPluginsType\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaPackageJson = async (\n language: SandboxLanguageType,\n id: string,\n plugins?: SandboxPluginsType\n): Promise => {\n const { isJavaScript } = await sandboxLanguageUtils(language)\n const { dependencies, devDependencies } = docsPackageJson\n\n return {\n name: id,\n version: '1.0.0',\n description: `${kebabCaseToPascalCase(id, ' ')} Example`,\n main: 'index.html',\n scripts: {\n start: 'parcel index.html --open',\n build: 'parcel build index.html'\n },\n dependencies: {\n 'parcel-bundler': '^1.6.1',\n 'embla-carousel': dependencies['embla-carousel-react'],\n ...(plugins && plugins)\n },\n devDependencies: isJavaScript\n ? { '@babel/core': '7.2.0' }\n : {\n typescript: devDependencies.typescript\n },\n resolutions: {\n '@babel/preset-env': '7.13.8'\n }\n }\n}\n","export const createSandboxVanillaTsDeclarations = async (): Promise => {\n const declarations = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/declarations.d.ts'\n )\n return declarations.default\n}\n","import { THEME_PREFIX } from 'consts/themes'\nimport { URLS } from 'consts/urls'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { getThemeFromDocument } from 'utils/getThemeFromDocument'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\nimport { SandboxVanillaExtensionType } from 'consts/sandbox'\nimport {\n SANDBOX_REGEX_THEME,\n SANDBOX_REGEX_TITLE,\n SANDBOX_REGEX_REPOSITORY_URL\n} from 'consts/sandbox'\n\nconst SANDBOX_SCRIPT_SRC_REGEX = /__replace_sandbox_script_src__/g\nconst SANDBOX_CODE_REGEX = /__replace_sandbox_code__/g\n\nexport const createSandboxVanillaEntry = async (\n id: string,\n languageExtension: SandboxVanillaExtensionType,\n carouselHtml: string\n): Promise => {\n const indexHTML = await import(\n '!!raw-loader!components/Sandbox/Vanilla/SandboxFilesDist/index.html'\n )\n const theme = THEME_PREFIX + getThemeFromDocument()\n const title = kebabCaseToPascalCase(id, ' ')\n const scriptSrc = `${SANDBOX_VANILLA_FOLDERS.JS}/index.${languageExtension}`\n return indexHTML.default\n .replace(SANDBOX_REGEX_THEME, theme)\n .replace(SANDBOX_REGEX_TITLE, title)\n .replace(SANDBOX_SCRIPT_SRC_REGEX, scriptSrc)\n .replace(SANDBOX_REGEX_REPOSITORY_URL, URLS.GITHUB_ROOT)\n .replace(SANDBOX_CODE_REGEX, carouselHtml)\n}\n","import { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\n\nconst IMG_SRC_WITH_HASH_REGEX = /\\/static\\/slide-\\d{1,}-.+?\\./g\nconst IMG_SLIDE_WITH_NUMBER_REGEX = /slide-\\d{1,}/\n\nexport const createSandboxVanillaImagePaths = (\n carouselHtml: string\n): string => {\n return carouselHtml.replace(IMG_SRC_WITH_HASH_REGEX, (match) => {\n const slideWithNumber = match.match(IMG_SLIDE_WITH_NUMBER_REGEX) || []\n return `${SANDBOX_VANILLA_FOLDERS.IMAGES}/${slideWithNumber}.`\n })\n}\n","import { getParameters } from 'codesandbox/lib/api/define'\nimport { BASE_CSS, SANDBOX_CSS } from '../sandboxStyles'\nimport { SANDBOX_VANILLA_FOLDERS } from './sandboxVanillaFolders'\nimport { createSandboxImages } from '../sandboxImages'\nimport { loadPrettier } from 'utils/loadPrettier'\nimport { createSandboxVanillaPackageJson } from './createSandboxVanillaPackageJson'\nimport { createSandboxVanillaTsConfig } from './createSandboxVanillaTsConfig'\nimport { createSandboxVanillaTsDeclarations } from './createSandboxVanillaTsDeclarations'\nimport { createSandboxVanillaEntry } from './createSandboxVanillaEntry'\nimport { createSandboxVanillaImagePaths } from './createSandboxVanillaImagePaths'\nimport { createSandboxVanillaOptions } from './createSandboxVanillaOptions'\nimport { sandboxLanguageUtils } from 'utils/sandbox'\nimport {\n SandboxVanillaCreateType,\n SandboxConfigType,\n SANDBOX_LANGUAGES\n} from 'consts/sandbox'\n\nexport const createSandboxVanilla = async (\n config: SandboxVanillaCreateType\n): Promise => {\n const {\n id,\n carouselScript,\n carouselHtml,\n options,\n styles,\n plugins,\n sandboxOverrides,\n language = SANDBOX_LANGUAGES.JAVASCRIPT\n } = config\n const title = `${id}-vanilla`\n const sandboxImages = createSandboxImages(SANDBOX_VANILLA_FOLDERS.IMAGES)\n const { prettierConfig, formatHtml, formatCss } = await loadPrettier()\n const { isTypeScript, vanillaScriptExtension, formatScript } =\n await sandboxLanguageUtils(language)\n const packageJson = await createSandboxVanillaPackageJson(\n language,\n title,\n plugins\n )\n const tsConfig = createSandboxVanillaTsConfig()\n const entryScript = createSandboxVanillaOptions(carouselScript, options)\n const [entryHtml, tsDeclarations] = await Promise.all([\n createSandboxVanillaEntry(\n title,\n vanillaScriptExtension,\n createSandboxVanillaImagePaths(carouselHtml)\n ),\n createSandboxVanillaTsDeclarations()\n ])\n\n const sandboxConfig: SandboxConfigType['files'] = {\n [`.prettierrc`]: {\n isBinary: false,\n content: JSON.stringify(prettierConfig, null, '\\t')\n },\n [`package.json`]: {\n isBinary: false,\n content: JSON.stringify(packageJson, null, '\\t')\n },\n [`index.html`]: {\n isBinary: false,\n content: formatHtml(entryHtml)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/base.css`]: {\n isBinary: false,\n content: formatCss(BASE_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/sandbox.css`]: {\n isBinary: false,\n content: formatCss(SANDBOX_CSS)\n },\n [`${SANDBOX_VANILLA_FOLDERS.CSS}/embla.css`]: {\n isBinary: false,\n content: formatCss(styles)\n },\n [`${SANDBOX_VANILLA_FOLDERS.JS}/index.${vanillaScriptExtension}`]: {\n isBinary: false,\n content: formatScript(entryScript)\n }\n }\n\n if (isTypeScript) {\n Object.assign(sandboxConfig, {\n [`tsconfig.json`]: {\n isBinary: false,\n content: JSON.stringify(tsConfig, null, '\\t')\n },\n [`declarations.d.ts`]: {\n isBinary: false,\n content: tsDeclarations\n }\n })\n }\n\n return getParameters({\n files: Object.assign({}, sandboxConfig, sandboxImages, sandboxOverrides)\n })\n}\n","import { TsConfigType } from 'consts/sandbox'\n\nexport const createSandboxVanillaTsConfig = (): TsConfigType => {\n return {\n include: ['./src/**/*', './declarations.d.ts'],\n compilerOptions: {\n strict: true,\n module: 'commonjs',\n jsx: 'preserve',\n esModuleInterop: true,\n sourceMap: true,\n allowJs: true,\n lib: ['es6', 'dom'],\n rootDir: 'src',\n moduleResolution: 'node'\n }\n }\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { sandboxInjectIosPickerLoop, sandboxInjectOptions } from 'utils/sandbox'\nimport {\n SANDBOX_REGEX_IOS_PICKER_LOOP,\n SANDBOX_REGEX_OPTIONS\n} from 'consts/sandbox'\n\nexport const createSandboxVanillaOptions = (\n carouselScript: string,\n options: EmblaOptionsType\n): string => {\n const loop = options?.loop\n return carouselScript\n .replace(SANDBOX_REGEX_OPTIONS, sandboxInjectOptions(options))\n .replace(SANDBOX_REGEX_IOS_PICKER_LOOP, sandboxInjectIosPickerLoop(loop))\n}\n","export const SANDBOX_VANILLA_FOLDERS = {\n CSS: 'src/css',\n JS: 'src/js',\n IMAGES: 'src/images'\n}\n","import { URLS } from 'consts/urls'\nimport { arrayFromNumber } from 'utils/arrayFromNumber'\nimport { SandboxConfigType } from 'consts/sandbox'\n\nconst SANDBOX_IMAGE_URLS: string[] = arrayFromNumber(4).map((index) => {\n return `${URLS.GITHUB_DOCUMENTATION_RAW}/src/assets/images/slide-${\n index + 1\n }.jpg`\n})\n\nexport const createSandboxImages = (\n pathToImageFolder: string\n): SandboxConfigType['files'] => {\n return SANDBOX_IMAGE_URLS.reduce(\n (allImages, imageUrl, index) => ({\n ...allImages,\n [`${pathToImageFolder}/slide-${index + 1}.jpg`]: {\n isBinary: true,\n content: imageUrl\n }\n }),\n {}\n )\n}\n","import { css } from 'styled-components'\nimport { styledComponentsStylesToString } from 'utils/styledComponentStylesToString'\nimport { RESET_STYLES } from 'components/Layout/GlobalStyles/reset'\nimport { BASE_STYLES } from 'components/Layout/GlobalStyles/base'\nimport { FONT_STYLES } from 'components/Layout/GlobalStyles/font'\nimport { CAROUSEL_WRAPPER_RADIUS } from '../Examples/carouselWrapperStyles'\nimport { MEDIA } from 'consts/breakpoints'\nimport { BORDER_SIZES } from 'consts/border'\nimport { FONT_WEIGHTS } from 'consts/fontSizes'\nimport { COLORS, THEME_STYLES } from 'consts/themes'\n\nconst SANDBOX_WRAPPER_STYLES = css`\n .sandbox {\n width: 100%;\n }\n\n ${MEDIA.MIN_SM} {\n .sandbox {\n margin-left: auto;\n margin-right: auto;\n max-width: 67rem;\n }\n }\n`\n\nconst SANDBOX_CAROUSEL_STYLES = css`\n .sandbox__carousel {\n position: relative;\n background-color: ${COLORS.BACKGROUND_CODE};\n }\n\n ${MEDIA.MAX_SM} {\n .sandbox__carousel {\n border-top: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n border-bottom: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n\n ${MEDIA.MIN_SM} {\n .sandbox__carousel {\n border-radius: ${CAROUSEL_WRAPPER_RADIUS};\n border: ${BORDER_SIZES.DETAIL} solid ${COLORS.DETAIL_LOW_CONTRAST};\n }\n }\n`\n\nconst SANDBOX_HEADER_STYLES = css`\n .sandbox__header {\n font-size: 2rem;\n font-weight: ${FONT_WEIGHTS.BOLD};\n text-align: center;\n padding: 4rem 2rem 2rem 2rem;\n }\n`\n\nconst SANDBOX_FOOTER_STYLES = css`\n .sandbox__footer {\n display: flex;\n justify-content: center;\n padding: 2rem 2rem 4rem 2rem;\n }\n\n .sandbox__footer__link {\n display: flex;\n align-items: center;\n background-color: transparent;\n text-decoration: none;\n text-align: center;\n font-weight: ${FONT_WEIGHTS.BOLD};\n color: ${COLORS.TEXT_LOW_CONTRAST};\n font-size: 1.4rem;\n }\n\n .sandbox__footer__link__svg {\n display: block;\n width: 2rem;\n height: 2rem;\n margin-right: 1rem;\n fill: currentColor;\n }\n`\n\nexport const BASE_CSS = styledComponentsStylesToString(\n THEME_STYLES,\n RESET_STYLES,\n BASE_STYLES,\n FONT_STYLES\n)\n\nexport const SANDBOX_CSS = styledComponentsStylesToString(\n SANDBOX_WRAPPER_STYLES,\n SANDBOX_CAROUSEL_STYLES,\n SANDBOX_HEADER_STYLES,\n SANDBOX_FOOTER_STYLES\n)\n","import React, { PropsWithChildren } from 'react'\nimport { useSiteMetadata } from 'hooks/useSiteMetadata'\nimport { removeProtocol } from 'utils/removeProtocol'\nimport { kebabCaseToPascalCase } from 'utils/kebabCaseToPascalCase'\n\ntype PropType = PropsWithChildren<{\n title: string\n description?: string\n lang?: string\n url: string\n}>\n\nexport const Seo = (props: PropType) => {\n const { title, description, lang = 'en', url, children } = props\n const siteMetadata = useSiteMetadata()\n const pageTitle = `${title} | ${kebabCaseToPascalCase(siteMetadata.title)}`\n const metaDescription = description || siteMetadata.description\n\n return (\n <>\n \n {pageTitle}\n \n \n \n \n \n \n \n \n \n \n \n \n\n {children}\n \n )\n}\n","import { EmblaOptionsType } from 'embla-carousel-react'\nimport { SPACINGS } from './spacings'\nimport {\n PackageJson as BasePackageJsonType,\n TsConfigJson as TsConfigType\n} from 'type-fest'\n\nexport type PackageJsonType = BasePackageJsonType & {\n browserslist?: string[]\n}\n\nexport type { TsConfigType }\n\nexport type SandboxConfigType = {\n files: {\n [key: string]: {\n content: string\n isBinary: boolean\n }\n }\n}\n\nexport type SandboxModuleType = { default: string }\n\nexport type SandboxVanillaExtensionType = 'js' | 'ts'\n\nexport type SandboxReactExtensionType = 'jsx' | 'tsx'\n\nexport type SandboxPluginNameType =\n (typeof SANDBOX_PLUGINS)[keyof typeof SANDBOX_PLUGINS]\n\nexport type SandboxLanguageType =\n (typeof SANDBOX_LANGUAGES)[keyof typeof SANDBOX_LANGUAGES]\n\nexport type SandboxPluginsType = {\n [key in SandboxPluginNameType]?: string\n}\n\nexport type SandboxSharedCreateType = {\n id: string\n options: EmblaOptionsType\n styles: string\n plugins?: SandboxPluginsType\n language?: SandboxLanguageType\n sandboxOverrides?: SandboxConfigType['files']\n}\n\nexport type SandboxVanillaCreateType = SandboxSharedCreateType & {\n carouselScript: string\n carouselHtml: string\n}\n\nexport type SandboxReactCreateType = SandboxSharedCreateType & {\n carouselScript: string\n slides: number[]\n indexScript?: string\n}\n\nexport type SandboxSelectionType = {\n key: SandboxLabelKeyType\n label: SandboxLabelValueType\n createSandbox: (settings?: SettingsType) => Promise\n}\n\nexport type SandboxLabelValueType = (typeof SANDBOX_LABELS)[SandboxLabelKeyType]\nexport type SandboxLabelKeyType = keyof typeof SANDBOX_LABELS\nexport type SandboxCreateFunctionType =\n SandboxSelectionType['createSandbox']\n\nexport const SANDBOX_LABELS = {\n VANILLA_JS: 'Vanilla',\n VANILLA_TS: 'Vanilla + TypeScript',\n REACT_TS: 'React + TypeScript',\n REACT_JS: 'React'\n}\n\nexport const SANDBOX_LANGUAGES = {\n JAVASCRIPT: 'javascript',\n TYPESCRIPT: 'typescript'\n}\n\nexport const SANDBOX_PLUGINS = {\n AUTOPLAY: 'embla-carousel-autoplay',\n CLASS_NAMES: 'embla-carousel-class-names'\n}\n\nexport const SANDBOX_SELECTION_SPACING = SPACINGS.ONE\n\nexport const SANDBOX_REGEX_REPOSITORY_URL =\n /__replace_sandbox_repository_url__/g\n\nexport const SANDBOX_REGEX_TITLE = /__replace_sandbox_title__/g\n\nexport const SANDBOX_REGEX_THEME = /__replace_sandbox_theme__/g\n\nexport const SANDBOX_REGEX_OPTIONS = /const\\sOPTIONS(.*)/\n\nexport const SANDBOX_REGEX_IOS_PICKER_LOOP = /const\\sLOOP\\s=\\sfalse/\n","export const arrayFromNumber = (number: number): number[] =>\n Array.from(Array(number).keys())\n","import { ThemeKeyType, THEME_KEYS, THEME_PREFIX } from 'consts/themes'\nimport { isBrowser } from './isBrowser'\n\nexport const getThemeFromDocument = (): ThemeKeyType => {\n if (!isBrowser) return THEME_KEYS.LIGHT\n\n const lightThemeClass = THEME_PREFIX + THEME_KEYS.LIGHT\n return document.documentElement.classList.contains(lightThemeClass)\n ? THEME_KEYS.LIGHT\n : THEME_KEYS.DARK\n}\n","export const kebabCaseToPascalCase = (\n string: string = '',\n separator: string = ''\n): string => {\n return string.replace(/(^\\w|-\\w)/g, (replaceString) =>\n replaceString.replace(/-/, separator).toUpperCase()\n )\n}\n","import prettierrc from '../../.prettierrc'\nimport { Options as PretterOptions } from 'prettier'\n\ntype LoadPrettierType = {\n prettierConfig: PretterOptions\n formatHtml: (html: string) => string\n formatCss: (css: string) => string\n formatJs: (js: string) => string\n formatTs: (ts: string) => string\n}\n\nconst PRETTIER_CONFIG = prettierrc\n\nexport const loadPrettier = async (): Promise => {\n const [prettier, htmlParser, cssParser, babelParser] = await Promise.all([\n import('prettier'),\n import('prettier/parser-html'),\n import('prettier/parser-postcss'),\n import('prettier/parser-babel')\n ])\n\n const prettierHtmlParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'html',\n plugins: [htmlParser]\n }\n\n const prettierCssParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'css',\n plugins: [cssParser]\n }\n\n const prettierBabelParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel',\n plugins: [babelParser]\n }\n\n const prettierBabeTsParser: PretterOptions = {\n ...PRETTIER_CONFIG,\n parser: 'babel-ts',\n plugins: [babelParser]\n }\n\n const prettierFormatSafe = (\n subject: string,\n parser: PretterOptions\n ): string => {\n let formattedString = ''\n try {\n formattedString = prettier.format(subject, parser)\n } catch (error) {\n console.warn('Prettier was not able to format file', error) // eslint-disable-line no-console\n }\n return formattedString\n }\n\n const formatHtml = (html: string): string =>\n prettierFormatSafe(html, prettierHtmlParser)\n\n const formatCss = (css: string): string =>\n prettierFormatSafe(css, prettierCssParser)\n\n const formatJs = (js: string): string =>\n prettierFormatSafe(js, prettierBabelParser)\n\n const formatTs = (ts: string): string =>\n prettierFormatSafe(ts, prettierBabeTsParser)\n\n return {\n prettierConfig: PRETTIER_CONFIG,\n formatHtml,\n formatCss,\n formatJs,\n formatTs\n }\n}\n","export const removeProtocol = (url: string): string =>\n url.replace(/(^\\w+:|^)\\/\\//, '')\n","import docsPackageJson from 'embla-carousel-docs/package.json'\nimport { EmblaOptionsType } from 'embla-carousel-react'\nimport { loadPrettier } from './loadPrettier'\nimport {\n SandboxCreateFunctionType,\n SandboxLabelKeyType,\n SandboxSelectionType,\n SANDBOX_LABELS,\n SandboxLanguageType,\n SandboxReactExtensionType,\n SandboxVanillaExtensionType,\n SANDBOX_LANGUAGES,\n SandboxSharedCreateType,\n SandboxPluginNameType\n} from 'consts/sandbox'\n\ntype SandboxLanguageUtilsType = {\n isJavaScript: boolean\n isTypeScript: boolean\n vanillaScriptExtension: SandboxVanillaExtensionType\n reactScriptExtension: SandboxReactExtensionType\n formatScript: (jsOrTs: string) => string\n}\n\nexport const sandboxLanguageUtils = async (\n language: SandboxLanguageType\n): Promise => {\n const { formatTs, formatJs } = await loadPrettier()\n const isTypeScript = language === SANDBOX_LANGUAGES.TYPESCRIPT\n const isJavaScript = !isTypeScript\n const formatScript = isTypeScript ? formatTs : formatJs\n const reactScriptExtension = isJavaScript ? 'jsx' : 'tsx'\n const vanillaScriptExtension = isJavaScript ? 'js' : 'ts'\n\n return {\n isJavaScript,\n isTypeScript,\n vanillaScriptExtension,\n reactScriptExtension,\n formatScript\n }\n}\n\ntype SandboxCreateType = {\n [key in SandboxLabelKeyType]: SandboxCreateFunctionType\n}\n\nexport const createSandboxFunctionsWithLabels = (\n createSandboxFunction: Partial>\n): SandboxSelectionType[] => {\n return Object.keys(createSandboxFunction).map((sandboxLabelKey) => {\n const key = sandboxLabelKey\n const createSandbox = >(\n createSandboxFunction[key]\n )\n const label = SANDBOX_LABELS[key]\n\n return { key, label, createSandbox }\n })\n}\n\ntype SandboxAddPluginsType = Pick\n\nexport const addSandboxPlugins = (\n pluginNames: SandboxPluginNameType | SandboxPluginNameType[]\n): SandboxAddPluginsType => {\n const pluginsArray = Array.isArray(pluginNames) ? pluginNames : [pluginNames]\n\n return {\n plugins: {\n ...pluginsArray.reduce(\n (allPlugins, pluginName) => ({\n ...allPlugins,\n [pluginName]: docsPackageJson.dependencies[pluginName]\n }),\n {}\n )\n }\n }\n}\n\nexport const sandboxInjectOptions = (\n options: EmblaOptionsType\n): ((match: string) => string) => {\n return (match: string) => match.replace('{}', JSON.stringify(options))\n}\n\nexport const sandboxInjectIosPickerLoop = (\n loop: boolean = false\n): ((match: string) => string) => {\n return (match) => match.replace('false', loop.toString())\n}\n","import { FlattenSimpleInterpolation } from 'styled-components'\n\nexport const styledComponentsStylesToString = (\n ...stylesList: FlattenSimpleInterpolation[]\n): string => {\n return stylesList.reduce(\n (allStyles, styles) => allStyles + styles.join(''),\n ''\n )\n}\n","module.exports = require('../../.prettierrc.js')\n","import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record,\n optionsB: Record\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\n return optionsAKeys.every((key) => {\n const valueA = optionsA[key]\n const valueB = optionsB[key]\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB\n return areOptionsEqual(valueA, valueB)\n })\n}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { mathAbs, WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (\n engine: EngineType,\n lagOffset: number\n) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (lagOffset: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: AnimationsType['update'],\n render: AnimationsType['render']\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const timeStep = 1000 / 60\n let lastTimeStamp: number | null = null\n let lag = 0\n let animationFrame = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!lastTimeStamp) lastTimeStamp = timeStamp\n\n const elapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n lag += elapsed\n\n while (lag >= timeStep) {\n update()\n lag -= timeStep\n }\n\n const lagOffset = mathAbs(lag / timeStep)\n render(lagOffset)\n\n if (animationFrame) ownerWindow.requestAnimationFrame(animate)\n }\n\n function start(): void {\n if (animationFrame) return\n\n animationFrame = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationFrame)\n lastTimeStamp = null\n lag = 0\n animationFrame = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n lag = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { DirectionOptionType } from './Direction'\nimport { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n direction: DirectionOptionType\n): AxisType {\n const scroll = axis === 'y' ? 'y' : 'x'\n const cross = axis === 'y' ? 'x' : 'y'\n const startEdge = getStartEdge()\n const endEdge = getEndEdge()\n\n function measureSize(nodeRect: NodeRectType): number {\n const { width, height } = nodeRect\n return scroll === 'x' ? width : height\n }\n\n function getStartEdge(): AxisEdgeType {\n if (scroll === 'y') return 'top'\n return direction === 'rtl' ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (scroll === 'y') return 'bottom'\n return direction === 'rtl' ? 'left' : 'right'\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","export type DirectionOptionType = 'ltr' | 'rtl'\n\nexport type DirectionType = {\n apply: (n: number) => number\n}\n\nexport function Direction(direction: DirectionOptionType): DirectionType {\n const sign = direction === 'rtl' ? -1 : 1\n\n function apply(n: number): number {\n return n * sign\n }\n\n const self: DirectionType = {\n apply\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DirectionType } from './Direction'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n direction: DirectionType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\n let isMoving = false\n let startScroll = 0\n let startCross = 0\n let pointerIsDown = false\n let preventScroll = false\n let preventClick = false\n let isMouse = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\n const isMouseEvt = isMouseEvent(evt, ownerWindow)\n isMouse = isMouseEvt\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving\n isMoving = deltaAbs(target.get(), location.get()) >= 2\n\n pointerIsDown = true\n dragTracker.pointerDown(evt)\n scrollBody.useFriction(0).useDuration(0)\n target.set(location)\n addDragEvents()\n startScroll = dragTracker.readPoint(evt)\n startCross = dragTracker.readPoint(evt, crossAxis)\n eventHandler.emit('pointerDown')\n }\n\n function move(evt: PointerEventType): void {\n const lastScroll = dragTracker.readPoint(evt)\n const lastCross = dragTracker.readPoint(evt, crossAxis)\n const diffScroll = deltaAbs(lastScroll, startScroll)\n const diffCross = deltaAbs(lastCross, startCross)\n\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt)\n preventScroll = diffScroll > diffCross\n if (!preventScroll) return up(evt)\n }\n const diff = dragTracker.pointerMove(evt)\n if (diffScroll > dragThreshold) preventClick = true\n\n scrollBody.useFriction(0.3).useDuration(1)\n animation.start()\n target.add(direction.apply(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\n const currentLocation = scrollTarget.byDistance(0, false)\n const targetChanged = currentLocation.index !== index.get()\n const rawForce = dragTracker.pointerUp(evt) * forceBoost()\n const force = allowedForce(direction.apply(rawForce), targetChanged)\n const forceFactor = factorAbs(rawForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n preventScroll = false\n pointerIsDown = false\n dragEvents.clear()\n scrollBody.useDuration(speed).useFriction(friction)\n scrollTo.distance(force, !dragFree)\n isMouse = false\n eventHandler.emit('pointerUp')\n }\n\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n pointerDown,\n destroy\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\n if (!startEvent || !lastEvent) return 0\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent)\n const diffTime = readTime(evt) - readTime(startEvent)\n const expired = readTime(evt) - readTime(lastEvent) > logInterval\n const force = diffDrag / diffTime\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1\n\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n ownerWindow.requestAnimationFrame(() => {\n emblaApi.reInit()\n eventHandler.emit('resize')\n })\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (destroyed) return\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n const observeNodes = [container].concat(slides)\n observeNodes.forEach((node) => resizeObserver.observe(node))\n }\n\n function destroy(): void {\n if (resizeObserver) resizeObserver.disconnect()\n destroyed = true\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n location: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\n const pullBackThreshold = percentOfView.measure(10)\n const edgeOffsetTolerance = percentOfView.measure(50)\n const frictionLimit = Limit(0.1, 0.99)\n let disabled = false\n\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\n if (!shouldConstrain()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const diffToEdge = mathAbs(limit[edge] - location.get())\n const diffToTarget = target.get() - location.get()\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance)\n\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n offsetLocation: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(offsetLocation.get())\n if (direction === -1) return reachedMin(offsetLocation.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((scrollSnap) => scrollSnap - distance)\n .map((diffToSnap) => shortcut(diffToSnap, 0))\n .map((diff, i) => ({ diff, index: i }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return targets[0]\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { DirectionType } from './Direction'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n direction: DirectionType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n containerStyle.transform = translate(direction.apply(target))\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\nimport { DirectionType } from './Direction'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n direction: DirectionType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n offsetLocation: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\n return indexes.map((index) => {\n const initial = isEndEdge ? 0 : -contentSize\n const altered = isEndEdge ? contentSize : 0\n const boundEdge = isEndEdge ? 'end' : 'start'\n const loopPoint = slideBounds[index][boundEdge]\n\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, direction, slides[index]),\n target: () => (offsetLocation.get() > loopPoint ? initial : altered)\n }\n })\n }\n\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\n }\n }\n\n mutationObserver = new MutationObserver((mutations) => {\n if (destroyed) return\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations)\n }\n })\n\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { DirectionType } from './Direction'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: (array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n direction: DirectionType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge]\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge]\n const gapA = !loop && isFirst ? direction.apply(startGap) : 0\n const gapB = !loop && isLast ? direction.apply(endGap) : 0\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA))\n\n if (chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { Direction, DirectionType } from './Direction'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n direction: DirectionType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction: contentDirection,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag\n } = options\n\n // Measurements\n const pixelTolerance = 2\n const nodeRects = NodeRects()\n const containerRect = nodeRects.measure(container)\n const slideRects = slides.map(nodeRects.measure)\n const direction = Direction(contentDirection)\n const axis = Axis(scrollAxis, contentDirection)\n const viewSize = axis.measureSize(containerRect)\n const percentOfView = PercentOfView(viewSize)\n const alignment = Alignment(align, viewSize)\n const containSnaps = !loop && !!containScroll\n const readEdgeGap = loop || !!containScroll\n const { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n direction,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n options: { loop }\n },\n lagOffset\n ) => {\n const velocity = scrollBody.velocity()\n const hasSettled = scrollBody.settled()\n\n if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop()\n eventHandler.emit('settle')\n }\n if (!hasSettled) eventHandler.emit('scroll')\n\n offsetLocation.set(location.get() - velocity + velocity * lagOffset)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n }\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (lagOffset: number) => render(engine, lagOffset)\n )\n\n // Shared\n const friction = 0.68\n const startLocation = scrollSnaps[index.get()]\n const location = Vector1D(startLocation)\n const offsetLocation = Vector1D(startLocation)\n const target = Vector1D(startLocation)\n const scrollBody = ScrollBody(\n location,\n offsetLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n direction,\n dragHandler: DragHandler(\n axis,\n direction,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n location,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n direction,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, direction, container)\n }\n\n return engine\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = axis\n const withEdgeGap = slideRects[0] && readEdgeGap\n const startGap = measureStartGap()\n const endGap = measureEndGap()\n const slideSizes = slideRects.map(measureSize)\n const slideSizesWithGaps = measureWithGaps()\n\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .map((rect, index, rects) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(rects, index)\n if (isFirst) return slideSizes[index] + startGap\n if (isLast) return slideSizes[index] + endGap\n return rects[index + 1][startEdge] - rect[startEdge]\n })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function findScrollContainLimit(): LimitType {\n const startSnap = snapsBounded[0]\n const endSnap = arrayLast(snapsBounded)\n const min = snapsBounded.lastIndexOf(startSnap)\n const max = snapsBounded.indexOf(endSnap) + 1\n return Limit(min, max)\n }\n\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(snapsAligned, index)\n if (isFirst) return scrollBounds.max\n if (isLast) return scrollBounds.min\n return scrollBounds.constrain(snapAligned)\n })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\n let bodyVelocity = 0\n let scrollDirection = 0\n let scrollDuration = baseDuration\n let scrollFriction = baseFriction\n let rawLocation = location.get()\n let rawLocationPrevious = 0\n\n function seek(): ScrollBodyType {\n const diff = target.get() - location.get()\n const isInstant = !scrollDuration\n let directionDiff = 0\n\n if (isInstant) {\n bodyVelocity = 0\n location.set(target)\n\n directionDiff = diff\n } else {\n bodyVelocity += diff / scrollDuration\n bodyVelocity *= scrollFriction\n rawLocation += bodyVelocity\n location.add(bodyVelocity)\n\n directionDiff = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(directionDiff)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return bodyVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n if (distanceDiff) animation.start()\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1\n return arrayFromNumber(range)\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1\n return arrayFromNumber(range, arrayLast(groups)[0])\n }\n return group\n })\n }\n\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isNumber } from './utils'\n\nexport type SlideFocusType = {\n init: () => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType\n): SlideFocusType {\n let lastTabPressTime = 0\n\n function init(): void {\n eventStore.add(document, 'keydown', registerTabPress, false)\n slides.forEach(addSlideFocusEvent)\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n function addSlideFocusEvent(slide: HTMLElement): void {\n const focus = (): void => {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n root.scrollLeft = 0\n const index = slides.indexOf(slide)\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n }\n\n eventStore.add(slide, 'focus', focus, {\n passive: true,\n capture: true\n })\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { DirectionOptionType } from './Direction'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf | null\n containScroll: ScrollContainOptionType\n direction: DirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true\n}\n\nexport type EmblaOptionsType = Partial\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial>\n\nexport type OptionsHandlerType = {\n mergeOptions: (\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: (options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = (customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = [].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\n engine.translate.to(engine.location.get())\n engine.animation.init()\n engine.slidesInView.init()\n engine.slideFocus.init()\n engine.eventHandler.init(self)\n engine.resizeHandler.init(self)\n engine.slidesHandler.init(self)\n\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\n engine.dragHandler.destroy()\n engine.eventStore.clear()\n engine.translate.clear()\n engine.slideLooper.clear()\n engine.resizeHandler.destroy()\n engine.slidesHandler.destroy()\n engine.slidesInView.destroy()\n engine.animation.destroy()\n pluginsHandler.destroy()\n mediaHandlers.clear()\n }\n\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.location.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n }\n\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n}\n\nexport function EventHandler(): EventHandlerType {\n const listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on\n }\n return self\n}\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n areOptionsEqual,\n arePluginsEqual,\n canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType\n} from 'embla-carousel'\n\ntype EmblaViewportRefType = (\n instance: ViewportElement | null\n) => void\n\nexport type UseEmblaCarouselType = [\n EmblaViewportRefType,\n EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n options: EmblaOptionsType = {},\n plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n const storedOptions = useRef(options)\n const storedPlugins = useRef(plugins)\n const [emblaApi, setEmblaApi] = useState()\n const [viewport, setViewport] = useState()\n\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n }, [emblaApi])\n\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n const newEmblaApi = EmblaCarousel(\n viewport,\n storedOptions.current,\n storedPlugins.current\n )\n setEmblaApi(newEmblaApi)\n return () => newEmblaApi.destroy()\n } else {\n setEmblaApi(undefined)\n }\n }, [viewport, setEmblaApi])\n\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return\n storedOptions.current = options\n reInit()\n }, [options, reInit])\n\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return\n storedPlugins.current = plugins\n reInit()\n }, [plugins, reInit])\n\n return [setViewport, emblaApi]\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n}\n","export default __webpack_public_path__ + \"static/maskable-36b9e327abc26d5d02e9350d184a058f.png\";"],"names":["Object","defineProperty","exports","value","LZString","getParameters","parameters","input","JSON","stringify","compressToBase64","replace","define_1","module","bracketSpacing","printWidth","semi","singleQuote","trailingComma","tabWidth","useTabs","CAROUSEL_DEFAULT_HEIGHT","CAROUSEL_THUMB_SLIDES_HEIGHT","CAROUSEL_THUMB_SLIDES_SPACING","CAROUSEL_IOS_PICKER_HEIGHT","CAROUSEL_SLIDES_SPACING","CAROUSEL_WRAPPER_SPACING","CAROUSEL_WRAPPER_RADIUS","BORDER_RADIUSES","borderStyles","css","MEDIA","LAYERS","BORDER_SIZES","COLORS","baseWrapperStyles","pageFrameCollapseStyles","carouselDefaultWrapperStyles","carouselThumbsWrapperStyles","iosPickerWrapperStyles","BASE_STYLES","createSquareSizeStyles","FONT_WEIGHTS","BRAND_GRADIENT_TEXT_STYLES","VARIABLE_WIDTH_STYLES","ARROWS_STYLES","DOTS_STYLES","ARROWS_DOTS_STYLES","THUMBS_STYLES","PROGRESS_STYLES","BRAND_GRADIENT_BACKGROUND_STYLES","PARALLAX_STYLES","SCALE_STYLES","LAZY_LOAD_STYLES","CLASS_NAMES_STYLES","INFINITE_SCROLL_STYLES","IOS_PICKER_STYLES","createCarouselDefaultStyles","slideSize","spacingSize","axis","customStyles","horizontal","flexDirection","spacingDirection","panDirection","sizeDimention","imageHeight","arrowsPosition","containerHeight","slideNumberSpacing","styledComponentsStylesToString","createCarouselVariableWidthStyles","createCarouselArrowsDotsStyles","createCarouselThumbsStyles","createCarouselProgressStyles","createCarouselParallaxStyles","createCarouselScaleStyles","createCarouselClassNamesStyles","createCarouselLazyLoadStyles","createCarouselInfiniteScrollStyles","createCarouselIosPickerStyles","InputRadioDefault","createRadioOrCheckboxDefault","InputRadioCard","createRadioOrCheckboxCard","RadioOrCheckboxCardWrapper","styled","TAP_HIGHLIGHT_STYLES","CARD_STYLES","LabelContent","Highlight","Input","KEY_NAVIGATING_STYLES","type","displayName","kebabCaseToPascalCase","InputSelectionComponent","props","children","restProps","isKeyNavigating","useKeyNavigating","React","htmlFor","id","$isKeyNavigating","INPUT_SIZE","RadioOrCheckboxDefaultWrapper","InputWrapper","InputLineHeight","InputRadio","InputCheckbox","Label","SPACINGS","_ref","$disabled","InputComponent","disabled","PageBreadcrumbsWrapper","FONT_SIZES","itemStyles","Link","LinkBare","ActiveTitle","Separator","Icon","PageBreadcrumbs","breadcrumbs","flat","routes","useRoutes","currentRoute","find","route","filter","isRoutePartiallyActive","slug","sort","a","b","level","useRouteBreadcrumbs","length","map","index","title","Fragment","key","to","size","svg","role","PageEditThisPageWrapper","PageEditThisPage","pageUrl","url","URLS","IconWithText","iconSvg","iconSize","ITEM_SPACING","PagePaginationWrapper","createGapStyles","Item","ItemLabel","ItemTitle","IconWithTextText","PagePagination","next","previous","iconSide","slides","options","emblaRef","useEmblaCarousel","className","ref","src","imageByIndex","alt","images","createSandboxReactIndexHtml","async","indexHTML","theme","THEME_PREFIX","getThemeFromDocument","default","SANDBOX_REGEX_THEME","SANDBOX_REGEX_TITLE","createSandboxReactHeader","isTypeScript","header","formattedTitle","createSandboxReactFooter","footer","SANDBOX_REGEX_REPOSITORY_URL","IMAGE_BY_INDEX_IMPORT_REGEX","createSandboxReactImages","match","createSandboxReactTsDeclarations","createSandboxReact","carouselScript","carouselScriptRaw","indexScript","styles","plugins","sandboxOverrides","language","SANDBOX_LANGUAGES","config","sandboxImages","createSandboxImages","SANDBOX_REACT_FOLDERS","prettierConfig","formatCss","loadPrettier","reactScriptExtension","vanillaScriptExtension","formatScript","sandboxLanguageUtils","packageJson","dependencies","devDependencies","docsPackageJson","isJavaScript","name","version","description","main","scripts","start","build","test","eject","react","typescript","browserslist","createSandboxReactPackageJson","tsConfig","include","compilerOptions","strict","esModuleInterop","lib","jsx","createSandboxReactImagePath","entryHtml","entryScript","headerScript","footerScript","imagesScript","tsDeclarations","Promise","all","createSandboxReactDefaultEntry","sandboxConfig","isBinary","content","BASE_CSS","SANDBOX_CSS","assign","files","CAROUSEL_IMPORT_REGEX","SLIDE_COUNT_REGEX","CAROUSEL_IMPORT_REPLACE","slideCount","toString","entry","SANDBOX_REGEX_OPTIONS","sandboxInjectOptions","createSandboxReactIosPickerEntry","loop","SANDBOX_REGEX_IOS_PICKER_LOOP","sandboxInjectIosPickerLoop","PUBLIC","CSS","JS","IMAGES","ICONS_BY_LABEL","VANILLA_JS","VANILLA_TS","REACT_JS","REACT_TS","RadioLabelContent","RadioLabelSvg","SandboxSelectionInput","framework","createSandboxVanillaTsDeclarations","SANDBOX_SCRIPT_SRC_REGEX","SANDBOX_CODE_REGEX","createSandboxVanillaEntry","languageExtension","carouselHtml","scriptSrc","SANDBOX_VANILLA_FOLDERS","IMG_SRC_WITH_HASH_REGEX","IMG_SLIDE_WITH_NUMBER_REGEX","createSandboxVanillaImagePaths","slideWithNumber","createSandboxVanilla","formatHtml","resolutions","createSandboxVanillaPackageJson","sourceMap","allowJs","rootDir","moduleResolution","createSandboxVanillaOptions","SANDBOX_IMAGE_URLS","arrayFromNumber","pathToImageFolder","reduce","allImages","imageUrl","SANDBOX_WRAPPER_STYLES","SANDBOX_CAROUSEL_STYLES","SANDBOX_HEADER_STYLES","SANDBOX_FOOTER_STYLES","THEME_STYLES","RESET_STYLES","FONT_STYLES","Seo","lang","siteMetadata","useSiteMetadata","pageTitle","metaDescription","rel","href","removeProtocol","siteUrl","author","SANDBOX_LABELS","JAVASCRIPT","TYPESCRIPT","SANDBOX_PLUGINS","AUTOPLAY","CLASS_NAMES","SANDBOX_SELECTION_SPACING","number","Array","from","keys","isBrowser","THEME_KEYS","lightThemeClass","document","documentElement","classList","contains","string","separator","replaceString","toUpperCase","PRETTIER_CONFIG","prettierrc","prettier","htmlParser","cssParser","babelParser","prettierHtmlParser","parser","prettierCssParser","prettierBabelParser","prettierBabeTsParser","prettierFormatSafe","subject","formattedString","format","error","console","warn","html","formatJs","js","formatTs","ts","createSandboxFunctionsWithLabels","createSandboxFunction","sandboxLabelKey","createSandbox","label","addSandboxPlugins","pluginNames","isArray","allPlugins","pluginName","stylesList","allStyles","join","isRecord","prototype","call","isObject","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpoints","every","valueA","valueB","sortAndMapPluginToOptions","concat","plugin","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","startAt","_","i","object","objectA","objectB","mergedObjects","currentObject","forEach","areObjects","objectsMergeDeep","evt","ownerWindow","MouseEvent","EventStore","listeners","self","add","node","handler","removeListener","passive","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","timeStep","lastTimeStamp","lag","animationFrame","animate","timeStamp","elapsed","lagOffset","requestAnimationFrame","stop","cancelAnimationFrame","init","hidden","destroy","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loopEnd","counter","withinLimit","get","clone","set","DragHandler","direction","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","cross","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","measure","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","move","lastScroll","readPoint","lastCross","diffScroll","deltaAbs","diffCross","cancelable","up","diff","pointerMove","useFriction","useDuration","apply","preventDefault","targetChanged","byDistance","rawForce","pointerUp","force","baseForce","distance","byIndex","allowedForce","forceFactor","factorAbs","speed","friction","emit","click","stopPropagation","emblaApi","downIfAllowed","isMouseEvt","isMouseEvent","button","nodeName","includes","isFocusNode","buttons","pointerDown","addDragEvents","down","DragTracker","startEvent","lastEvent","readTime","evtAxis","coord","scroll","touches","expired","diffDrag","diffTime","ResizeHandler","container","watchResize","nodeRects","resizeObserver","containerSize","slideSizes","destroyed","readSize","measureSize","ResizeObserver","entries","isContainer","slideIndex","indexOf","lastSize","reInit","defaultCallback","observe","disconnect","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","edge","diffToEdge","diffToTarget","subtract","useBaseFriction","toggleActive","active","ScrollLooper","contentSize","offsetLocation","vectors","shouldLoop","loopDistance","v","ScrollTarget","scrollSnaps","targetVector","minDistance","distances","shortcut","targets","matchingTargets","t","snap","targetSnapDistance","ascDiffsToSnaps","scrollSnap","diffToSnap","d1","d2","findTargetSnap","reachedBound","Vector1D","initialValue","normalizeInput","Translate","translate","containerStyle","style","transform","getAttribute","removeAttribute","SlideLooper","viewSize","slideSizesWithGaps","snaps","ascItems","descItems","reverse","loopPoints","gap","findLoopPoints","slidesInGap","startPoints","endPoints","removeSlideSizes","indexes","offset","isEndEdge","slideBounds","end","findSlideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","shiftLocation","SlidesHandler","watchSlides","mutationObserver","MutationObserver","mutations","mutation","childList","SlidesInView","threshold","intersectionEntryMap","intersectionObserver","inViewCache","notInViewCache","IntersectionObserver","root","parentElement","slide","inView","slideIndexes","list","parseInt","isIntersecting","createInViewList","SlidesToScroll","slidesToScroll","containerRect","slideRects","startGap","endGap","pixelTolerance","startEdge","endEdge","groupByNumber","groupSlides","groupSize","slice","byNumber","groups","rectB","rectA","isFirst","isLast","edgeA","edgeB","gapA","currentSize","previousSize","bySize","Engine","align","scrollAxis","contentDirection","startIndex","duration","inViewThreshold","containScroll","offsetTop","offsetLeft","offsetWidth","offsetHeight","top","right","bottom","left","width","height","Direction","nodeRect","Axis","PercentOfView","alignment","predefined","center","Alignment","containSnaps","readEdgeGap","withEdgeGap","slideRect","measureStartGap","getComputedStyle","parseFloat","getPropertyValue","measureEndGap","rect","rects","arrayIsLastIndex","SlideSizes","snapsAligned","alignments","g","ScrollSnaps","snapsContained","scrollContainLimit","scrollBounds","snapsBounded","snapAligned","scrollBound","toFixed","startSnap","endSnap","lastIndexOf","findScrollContainLimit","measureContained","ScrollContain","ScrollLimit","indexPrevious","dragHandler","seek","engine","scrollLooper","slideLooper","velocity","hasSettled","settled","startLocation","baseDuration","bodyVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","directionDiff","useBaseDuration","ScrollBody","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","scrollProgress","ScrollProgress","eventStore","slidesInView","slideRegistry","groupedSlideIndexes","doNotContain","group","createSlideRegistry","SlideRegistry","slideFocus","lastTabPressTime","registerTabPress","event","code","Date","getTime","addSlideFocusEvent","focus","scrollLeft","findIndex","capture","SlideFocus","resizeHandler","scrollSnapList","slidesHandler","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","EmblaCarousel","userOptions","userPlugins","defaultView","optionsHandler","pluginsHandler","activePlugins","PluginsHandler","mediaHandlers","api","getListeners","e","off","cb","on","EventHandler","reActivate","pluginApis","optionsBase","globalOptions","pluginList","createEngine","activate","withOptions","withPlugins","userContainer","userSlides","customContainer","querySelector","customSlides","querySelectorAll","storeElements","query","offsetParent","selectedScrollSnap","deActivate","jump","canScrollNext","canScrollPrev","containerNode","internalEngine","previousScrollSnap","scrollNext","scrollPrev","slideNodes","slidesNotInView","setTimeout","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","window","createElement","newEmblaApi","undefined","pluginsA","pluginsB","optionA","arePluginsEqual","f","String","fromCharCode","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","res","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","result","c","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","hasOwnProperty","pow","resetValue","getNextValue","w","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","data","val","position"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_gatsby/slices/_gatsby-scripts-1.html b/docs/_gatsby/slices/_gatsby-scripts-1.html index cc9ce4178..ba07fbb25 100644 --- a/docs/_gatsby/slices/_gatsby-scripts-1.html +++ b/docs/_gatsby/slices/_gatsby-scripts-1.html @@ -2,6 +2,6 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/api/events/index.html b/docs/api/events/index.html index fc8fb2e8a..69ad27d62 100644 --- a/docs/api/events/index.html +++ b/docs/api/events/index.html @@ -555,37 +555,37 @@ } } } -

Events

+

Events

Embla Carousel exposes custom events that can be hooked on to. Listening to events allows for extending the carousel.


Usage

You need an initialized carousel in order to make use of events. Events will only be fired during the lifecycle of a carousel and added event listeners will persist even when you hard reset the carousel with the reInit method.

Adding event listeners

After initializing a carousel, we're going to subscribe to the select event in the following example:

-
import EmblaCarousel from 'embla-carousel'
+
import EmblaCarousel from 'embla-carousel'
 const emblaApi = EmblaCarousel(emblaNode, { loop: true })
 const onSelect = (emblaApi, eventName) => {  console.log(`Embla just triggered ${eventName}!`)}
-emblaApi.on('select', onSelect)

Removing event listeners

In order to remove an event listener, you'll have to call the off method and make sure to pass the same callback reference you passed to the on method:

-
import EmblaCarousel from 'embla-carousel'
+
import EmblaCarousel from 'embla-carousel'
 const emblaApi = EmblaCarousel(emblaNode, { loop: true })
 const onSelect = (emblaApi, eventName) => {  console.log(`Embla just triggered ${eventName}!`)}
 const removeOnSelectListener = () => {  emblaApi.off('select', onSelect)}
-emblaApi.on('select', onSelect)