@asante-org/atlascopco-vt-litesitegenerator 3.6.19 → 3.6.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +359 -545
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.scss +295 -552
- package/dist/index.js +361 -543
- package/dist/index.js.map +1 -1
- package/dist/index.scss +295 -552
- package/dist/lsg-clientlib.css +2106 -0
- package/dist/lsg-clientlib.css.map +1 -0
- package/dist/lsg-clientlib.js +524 -0
- package/dist/lsg-clientlib.js.map +1 -0
- package/dist/src/components/lsg/LsgCarousel/LsgCarousel.d.ts +12 -33
- package/dist/src/components/lsg/LsgCarousel/LsgCarousel.stories.d.ts +3 -18
- package/dist/src/components/lsg/LsgCarousel/LsgCarouselController.d.ts +1 -46
- package/dist/src/components/lsg/LsgCarousel/bootLsgCarousel.d.ts +9 -2
- package/dist/src/components/lsg/LsgTable/LsgTable.d.ts +19 -0
- package/dist/src/components/lsg/LsgTable/LsgTable.stories.d.ts +8 -0
- package/dist/src/components/lsg/LsgTable/index.d.ts +2 -0
- package/dist/src/components/lsg/index.d.ts +2 -0
- package/dist/src/index.d.ts +5 -5
- package/dist/src/themes/createThemeComponents.d.ts +1 -0
- package/dist/src/themes/theme-1/components.d.ts +2 -1
- package/dist/src/themes/theme-2/components.d.ts +2 -1
- package/dist/src/themes/theme-3/components.d.ts +2 -1
- package/dist/themes/theme-1.css +645 -298
- package/dist/themes/theme-1.css.map +1 -1
- package/dist/themes/theme-1.js +49 -217
- package/dist/themes/theme-1.js.map +1 -1
- package/dist/themes/theme-2.css +362 -479
- package/dist/themes/theme-2.css.map +1 -1
- package/dist/themes/theme-2.js +49 -217
- package/dist/themes/theme-2.js.map +1 -1
- package/dist/themes/theme-3.css +268 -495
- package/dist/themes/theme-3.css.map +1 -1
- package/dist/themes/theme-3.js +49 -217
- package/dist/themes/theme-3.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-3.js","sources":["../../node_modules/tslib/tslib.es6.js","../../../src/utils/lsgIconPaths.ts","../../node_modules/embla-carousel/esm/embla-carousel.esm.js","../../node_modules/embla-carousel-fade/esm/embla-carousel-fade.esm.js","../../../src/components/lsg/LsgHero/LsgHeroController.ts","../../../src/components/lsg/lsg-clientlib-runtime.ts","../../../src/components/lsg/LsgCarousel/LsgCarouselController.ts","../../../src/components/lsg/LsgCarousel/bootLsgCarousel.ts","../../../src/themes/theme-3/applyTheme3PillRadius.ts","../../../src/themes/theme-3/theme-clientlib.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","export type LsgIconName =\n | \"bars\"\n | \"chevronLeft\"\n | \"chevronRight\"\n | \"close\"\n | \"globe\"\n | \"home\"\n | \"search\";\n\nexport const LSG_ICON_PATHS: Record<LsgIconName, string> = {\n bars:\n \"M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z\",\n chevronLeft:\n \"M169.4 297.4C156.9 309.9 156.9 330.2 169.4 342.7L361.4 534.7C373.9 547.2 394.2 547.2 406.7 534.7C419.2 522.2 419.2 501.9 406.7 489.4L237.3 320L406.6 150.6C419.1 138.1 419.1 117.8 406.6 105.3C394.1 92.8 373.8 92.8 361.3 105.3L169.3 297.3z\",\n chevronRight:\n \"M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z\",\n close:\n \"M504.6 148.5C515.9 134.9 514.1 114.7 500.5 103.4C486.9 92.1 466.7 93.9 455.4 107.5L320 270L184.6 107.5C173.3 93.9 153.1 92.1 139.5 103.4C125.9 114.7 124.1 134.9 135.4 148.5L278.3 320L135.4 491.5C124.1 505.1 125.9 525.3 139.5 536.6C153.1 547.9 173.3 546.1 184.6 532.5L320 370L455.4 532.5C466.7 546.1 486.9 547.9 500.5 536.6C514.1 525.3 515.9 505.1 504.6 491.5L361.7 320L504.6 148.5z\",\n globe:\n \"M367.2 477C345.7 520.7 325.8 528 320 528C314.2 528 294.3 520.7 272.8 477C255.8 442.5 243.6 395.4 240.7 344L399.3 344C396.3 395.5 384.1 442.6 367.2 477zM399.3 296L240.7 296C243.7 244.5 255.9 197.4 272.8 163C294.3 119.3 314.2 112 320 112C325.8 112 345.7 119.3 367.2 163C384.2 197.5 396.4 244.6 399.3 296zM447.4 344L526.6 344C518 418.6 469.9 481.3 403.8 510.4C427.8 467.6 444.1 408 447.4 344zM526.6 296L447.4 296C444.1 232 427.8 172.4 403.8 129.6C469.9 158.8 518 221.4 526.6 296zM192.6 296L113.4 296C122 221.4 170.1 158.7 236.2 129.6C212.2 172.4 195.9 232 192.6 296zM113.4 344L192.6 344C195.9 408 212.2 467.6 236.2 510.4C170.1 481.2 122 418.6 113.4 344zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576z\",\n home: \"M96 320L320 128L544 320H480V528H352V384H288V528H160V320H96z\",\n search:\n \"M480 272C480 317.9 465.1 360.3 440 394.7L566.6 521.4C579.1 533.9 579.1 554.2 566.6 566.7C554.1 579.2 533.8 579.2 521.3 566.7L394.7 440C360.3 465.1 317.9 480 272 480C157.1 480 64 386.9 64 272C64 157.1 157.1 64 272 64C386.9 64 480 157.1 480 272zM272 416C351.5 416 416 351.5 416 272C416 192.5 351.5 128 272 128C192.5 128 128 192.5 128 272C128 351.5 192.5 416 272 416z\",\n};\n\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\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 listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\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 function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\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 function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\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 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 scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\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(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\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 function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\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 return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\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 if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\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 function shouldConstrain() {\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 function constrain(pointerDown) {\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 target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\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 function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\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 const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\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 if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\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 return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\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 mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = 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 function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.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 }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\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 watchFocus\n } = options;\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 axis = Axis(scrollAxis, direction);\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 {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\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 watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\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 {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\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 function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\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 activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","function clampNumber(number, min, max) {\n return Math.min(Math.max(number, min), max);\n}\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction Fade(userOptions = {}) {\n const fullOpacity = 1;\n const noOpacity = 0;\n const fadeFriction = 0.68;\n let emblaApi;\n let opacities = [];\n let fadeToNextDistance;\n let distanceFromPointerDown = 0;\n let fadeVelocity = 0;\n let progress = 0;\n let shouldFadePair = false;\n let defaultSettledBehaviour;\n let defaultProgressBehaviour;\n function init(emblaApiInstance) {\n emblaApi = emblaApiInstance;\n const selectedSnap = emblaApi.selectedScrollSnap();\n const {\n scrollBody,\n containerRect,\n axis\n } = emblaApi.internalEngine();\n const containerSize = axis.measureSize(containerRect);\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500);\n shouldFadePair = false;\n opacities = emblaApi.scrollSnapList().map((_, index) => index === selectedSnap ? fullOpacity : noOpacity);\n defaultSettledBehaviour = scrollBody.settled;\n defaultProgressBehaviour = emblaApi.scrollProgress;\n scrollBody.settled = settled;\n emblaApi.scrollProgress = scrollProgress;\n emblaApi.on('select', select).on('slideFocus', fadeToSelectedSnapInstantly).on('pointerDown', pointerDown).on('pointerUp', pointerUp);\n disableScroll();\n fadeToSelectedSnapInstantly();\n }\n function destroy() {\n const {\n scrollBody\n } = emblaApi.internalEngine();\n scrollBody.settled = defaultSettledBehaviour;\n emblaApi.scrollProgress = defaultProgressBehaviour;\n emblaApi.off('select', select).off('slideFocus', fadeToSelectedSnapInstantly).off('pointerDown', pointerDown).off('pointerUp', pointerUp);\n emblaApi.slideNodes().forEach(slideNode => {\n const slideStyle = slideNode.style;\n slideStyle.opacity = '';\n slideStyle.transform = '';\n slideStyle.pointerEvents = '';\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style');\n });\n }\n function fadeToSelectedSnapInstantly() {\n const selectedSnap = emblaApi.selectedScrollSnap();\n setOpacities(selectedSnap, fullOpacity);\n }\n function pointerUp() {\n shouldFadePair = false;\n }\n function pointerDown() {\n shouldFadePair = false;\n distanceFromPointerDown = 0;\n fadeVelocity = 0;\n }\n function select() {\n const duration = emblaApi.internalEngine().scrollBody.duration();\n fadeVelocity = duration ? 0 : fullOpacity;\n shouldFadePair = true;\n if (!duration) fadeToSelectedSnapInstantly();\n }\n function getSlideTransform(position) {\n const {\n axis\n } = emblaApi.internalEngine();\n const translateAxis = axis.scroll.toUpperCase();\n return `translate${translateAxis}(${axis.direction(position)}px)`;\n }\n function disableScroll() {\n const {\n translate,\n slideLooper\n } = emblaApi.internalEngine();\n translate.clear();\n translate.toggleActive(false);\n slideLooper.loopPoints.forEach(({\n translate\n }) => {\n translate.clear();\n translate.toggleActive(false);\n });\n }\n function lockExcessiveScroll(fadeIndex) {\n const {\n scrollSnaps,\n location,\n target\n } = emblaApi.internalEngine();\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return;\n location.set(scrollSnaps[fadeIndex]);\n target.set(location);\n }\n function setOpacities(fadeIndex, velocity) {\n const scrollSnaps = emblaApi.scrollSnapList();\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity);\n const currentOpacity = opacities[indexA];\n const isFadeIndex = indexA === fadeIndex;\n const nextOpacity = isFadeIndex ? currentOpacity + absVelocity : currentOpacity - absVelocity;\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity);\n opacities[indexA] = clampedOpacity;\n const fadePair = isFadeIndex && shouldFadePair;\n const indexB = emblaApi.previousScrollSnap();\n if (fadePair) opacities[indexB] = 1 - clampedOpacity;\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity);\n setOpacity(indexA);\n });\n }\n function setOpacity(index) {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index];\n const {\n scrollSnaps,\n containerRect\n } = emblaApi.internalEngine();\n const opacity = opacities[index];\n slidesInSnap.forEach(slideIndex => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style;\n const roundedOpacity = parseFloat(opacity.toFixed(2));\n const hasOpacity = roundedOpacity > noOpacity;\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2;\n const transform = getSlideTransform(position);\n if (hasOpacity) slideStyle.transform = transform;\n slideStyle.opacity = roundedOpacity.toString();\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none';\n if (!hasOpacity) slideStyle.transform = transform;\n });\n }\n function setProgress(fadeIndex, opacity) {\n const {\n index,\n dragHandler,\n scrollSnaps\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const snapFraction = 1 / (scrollSnaps.length - 1);\n let indexA = fadeIndex;\n let indexB = pointerDown ? emblaApi.selectedScrollSnap() : emblaApi.previousScrollSnap();\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1;\n indexA = indexB;\n indexB = index.clone().set(indexB).add(reverseSign).get();\n }\n const currentPosition = indexB * snapFraction;\n const diffPosition = (indexA - indexB) * snapFraction;\n progress = currentPosition + diffPosition * opacity;\n }\n function getFadeIndex() {\n const {\n dragHandler,\n index,\n scrollBody\n } = emblaApi.internalEngine();\n const selectedSnap = emblaApi.selectedScrollSnap();\n if (!dragHandler.pointerDown()) return selectedSnap;\n const directionSign = Math.sign(scrollBody.velocity());\n const distanceSign = Math.sign(distanceFromPointerDown);\n const nextSnap = index.clone().set(selectedSnap).add(directionSign * -1).get();\n if (!directionSign || !distanceSign) return null;\n return distanceSign === directionSign ? nextSnap : selectedSnap;\n }\n function fade(emblaApi) {\n const {\n dragHandler,\n scrollBody\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const velocity = scrollBody.velocity();\n const duration = scrollBody.duration();\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n if (pointerDown) {\n if (!velocity) return;\n distanceFromPointerDown += velocity;\n fadeVelocity = Math.abs(velocity / fadeToNextDistance);\n lockExcessiveScroll(fadeIndex);\n }\n if (!pointerDown) {\n if (!duration || noFadeIndex) return;\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration;\n fadeVelocity *= fadeFriction;\n }\n if (noFadeIndex) return;\n setOpacities(fadeIndex, fadeVelocity);\n }\n function settled() {\n const {\n target,\n location\n } = emblaApi.internalEngine();\n const diffToTarget = target.get() - location.get();\n const notReachedTarget = Math.abs(diffToTarget) >= 1;\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n fade(emblaApi);\n if (noFadeIndex || notReachedTarget) return false;\n return opacities[fadeIndex] > 0.999;\n }\n function scrollProgress() {\n return progress;\n }\n const self = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n };\n return self;\n}\nFade.globalOptions = undefined;\n\nexport { Fade as default };\n//# sourceMappingURL=embla-carousel-fade.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\nimport EmblaCarouselFade from \"embla-carousel-fade\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroController — shared vanilla JS carousel controller\n// ─────────────────────────────────────────────────────────────────────────────\n//\n// Single source of truth for carousel behaviour. Used by:\n// 1. The React LsgHero component (via useEffect + refs)\n// 2. The AEM clientlib initHero function (directly on server-rendered DOM)\n//\n// This means carousel logic is written once and behaves identically in both\n// Storybook and AEM — no React-specific wrappers, no divergence.\n//\n// Usage:\n// const controller = new LsgHeroController(viewportEl, elements, options);\n// // later when unmounting:\n// controller.destroy();\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroControllerTransition = \"slide\" | \"fade\";\n\nexport interface LsgHeroControllerOptions {\n /** Slide transition style. Defaults to \"slide\". */\n transition?: LsgHeroControllerTransition;\n /** Enable autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n}\n\nexport interface LsgHeroControllerElements {\n /** Previous-slide button. */\n prevBtn?: HTMLElement | null;\n /** Next-slide button. */\n nextBtn?: HTMLElement | null;\n /** Scroll-down trigger button. */\n scrollDownBtn?: HTMLElement | null;\n /** Element to scroll into view when scroll-down is triggered. */\n scrollDownTarget?: HTMLElement | null;\n}\n\nexport class LsgHeroController {\n private embla: EmblaCarouselType | null = null;\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private contentObserver: ResizeObserver | null = null;\n private rafId: ReturnType<typeof requestAnimationFrame> | null = null;\n private readonly opts: Required<LsgHeroControllerOptions>;\n private readonly els: LsgHeroControllerElements;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgHeroControllerElements = {},\n options: LsgHeroControllerOptions = {}\n ) {\n this.opts = {\n transition: options.transition ?? \"slide\",\n autoplay: options.autoplay ?? true,\n autoplayInterval: options.autoplayInterval ?? 5000,\n };\n this.els = elements;\n this.mount(viewport);\n }\n\n private mount(viewport: HTMLElement): void {\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.addEventListener(\"click\", this.handleScrollDown);\n\n // First frame lets React's initial paint settle; second guarantees that\n // async-injected stylesheets (e.g. --lsg-hero-axis) have been computed.\n this.rafId = requestAnimationFrame(() => {\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n if (!viewport.isConnected) return;\n\n const section = viewport.closest<HTMLElement>(\"[data-lsg-is='hero']\");\n const axis: \"x\" | \"y\" =\n section && getComputedStyle(section).getPropertyValue(\"--lsg-hero-axis\").trim() === \"y\"\n ? \"y\"\n : \"x\";\n\n const plugins = this.opts.transition === \"fade\" ? [EmblaCarouselFade()] : [];\n this.embla = EmblaCarousel(viewport, { loop: true, axis }, plugins);\n\n if (this.opts.autoplay) {\n this.startAutoplay();\n this.embla.on(\"pointerDown\", this.stopAutoplay);\n this.embla.on(\"pointerUp\", this.startAutoplay);\n }\n\n // Sync the first slide's content-wrapper height to a CSS custom property\n // on the section root so the controls column can match it dynamically.\n const contentWrapper = section?.querySelector<HTMLElement>(\".lsg-hero-card__content-wrapper\");\n if (section && contentWrapper && typeof ResizeObserver !== \"undefined\") {\n const setHeight = (el: Element): void => {\n (section as HTMLElement).style.setProperty(\n \"--lsg-hero-content-height\",\n `${(el as HTMLElement).offsetHeight}px`\n );\n };\n setHeight(contentWrapper);\n this.contentObserver = new ResizeObserver((entries) => {\n setHeight(entries[0].target);\n });\n this.contentObserver.observe(contentWrapper);\n }\n\n // For vertical carousels the section height (100svh) cascades from a\n // useEffect-set data-lsg-theme attribute, which may land one frame after\n // this RAF. Re-measure so Embla has the correct slide dimensions.\n if (axis === \"y\") {\n requestAnimationFrame(() => {\n if (viewport.isConnected) this.embla?.reInit();\n });\n }\n });\n });\n }\n\n readonly scrollPrev = (): void => {\n this.embla?.scrollPrev();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n readonly scrollNext = (): void => {\n this.embla?.scrollNext();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n private readonly handleScrollDown = (): void => {\n this.els.scrollDownTarget?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n /** Start the autoplay interval (resets any existing timer). */\n readonly startAutoplay = (): void => {\n this.stopAutoplay();\n this.autoplayTimer = setInterval(this.scrollNext, this.opts.autoplayInterval);\n };\n\n /** Clear the autoplay interval. */\n readonly stopAutoplay = (): void => {\n if (this.autoplayTimer !== null) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n };\n\n /** Direct access to the underlying Embla instance for advanced usage. */\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n /** Tear down event listeners, autoplay, and the Embla instance. */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.stopAutoplay();\n this.contentObserver?.disconnect();\n this.contentObserver = null;\n if (this.embla) {\n this.embla.off(\"pointerDown\", this.stopAutoplay);\n this.embla.off(\"pointerUp\", this.startAutoplay);\n this.embla.destroy();\n this.embla = null;\n }\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.removeEventListener(\"click\", this.handleScrollDown);\n }\n}\n","import { LSG_ICON_PATHS } from \"../../utils/lsgIconPaths\";\nimport type { LsgIconName } from \"../../utils/lsgIconPaths\";\nimport { LsgHeroController } from \"./LsgHero/LsgHeroController\";\n\nconst LANGUAGE_SWITCHER_SELECTOR = \"[data-lsg-lang-switcher]\";\nconst SEARCH_TRIGGER_SELECTOR = \"[data-lsg-search-trigger]\";\nconst SEARCH_OVERLAY_SELECTOR = \"[data-lsg-search-overlay]\";\nconst MENU_TRIGGER_SELECTOR = \"[data-lsg-menu-trigger], .lsg-header__menu-trigger\";\nconst MOBILE_MEDIA_QUERY = \"(max-width: 767px)\";\n\nconst createIconSvg = (name: LsgIconName, className: string): string =>\n `<svg class=\"${className}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" aria-hidden=\"true\" focusable=\"false\"><path d=\"${LSG_ICON_PATHS[name]}\" /></svg>`;\n\nconst hasSvgIcon = (element: Element | null): boolean => Boolean(element?.querySelector(\"svg\"));\n\ninterface NavNode {\n label: string;\n href: string;\n current: boolean;\n children: NavNode[];\n}\n\nfunction buildNavTree(header: HTMLElement): NavNode[] {\n const megaPanel = header.querySelector<HTMLElement>(\".lsg-header__mega-panel\");\n if (megaPanel) {\n const topCol = megaPanel.querySelector<HTMLUListElement>(\n \".lsg-header__mega-inner > ul.lsg-header__mega-column\"\n );\n if (topCol) return parseMegaColumn(topCol);\n }\n\n const navList = header.querySelector<HTMLUListElement>(\".lsg-header__nav .lsg-nav__list\");\n if (navList) return parseNavList(navList);\n return [];\n}\n\nfunction parseMegaColumn(ul: Element): NavNode[] {\n return Array.from(ul.children).map((li) => {\n const link = li.querySelector<HTMLAnchorElement>(\":scope > a.lsg-header__mega-link\");\n const childUl = li.querySelector<HTMLUListElement>(\":scope > ul.lsg-header__mega-column\");\n let label = \"\";\n\n if (link) {\n const textSpan = link.querySelector<HTMLElement>(\n 'span:not([class*=\"lsg-header__icon\"])'\n );\n label = (textSpan ?? link).textContent?.trim() ?? \"\";\n }\n\n return {\n label,\n href: link?.getAttribute(\"href\") ?? \"#\",\n current: (li as HTMLElement).classList.contains(\"lsg-header__mega-item--active\"),\n children: childUl ? parseMegaColumn(childUl) : [],\n };\n });\n}\n\nfunction parseNavList(ul: Element): NavNode[] {\n return Array.from(ul.children).map((li) => {\n const link = li.querySelector<HTMLAnchorElement>(\":scope > a.lsg-nav__link\");\n const dropdown = li.querySelector<HTMLUListElement>(\":scope > ul.lsg-nav__dropdown\");\n const p = link?.querySelector(\"p\");\n\n return {\n label: (p ?? link)?.textContent?.trim() ?? \"\",\n href: link?.getAttribute(\"href\") ?? \"#\",\n current: (li as HTMLElement).classList.contains(\"lsg-nav__item--current\"),\n children: dropdown ? parseNavList(dropdown) : [],\n };\n });\n}\n\nfunction renderMobilePanel(\n panel: HTMLElement,\n nodes: NavNode[],\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): void {\n panel.innerHTML = \"\";\n\n if (path.length > 0) {\n panel.appendChild(renderMobileBack(path, onDrill));\n }\n\n panel.appendChild(renderMobileList(nodes, path, onDrill));\n}\n\nfunction renderMobileBack(\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): HTMLElement {\n const nav = document.createElement(\"nav\");\n nav.className = \"lsg-header__mobile-back\";\n nav.setAttribute(\"aria-label\", \"Menu navigation\");\n\n const parent = path[path.length - 1];\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = \"lsg-header__mobile-back-button\";\n button.setAttribute(\"aria-label\", `Back to ${parent.label}`);\n button.innerHTML =\n createIconSvg(\"chevronRight\", \"lsg-header__icon lsg-header__icon--chevronRight\") +\n `<span>Back to ${escHtml(parent.label)}</span>`;\n button.addEventListener(\"click\", () => onDrill(path.slice(0, -1)));\n nav.appendChild(button);\n\n return nav;\n}\n\nfunction renderMobileList(\n nodes: NavNode[],\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): HTMLUListElement {\n const ul = document.createElement(\"ul\");\n ul.className = \"lsg-header__mobile-list\";\n ul.setAttribute(\"role\", \"list\");\n\n nodes.forEach((node) => {\n const hasChildren = node.children.length > 0;\n const li = document.createElement(\"li\");\n li.className = [\n \"lsg-header__mobile-item\",\n hasChildren ? \"lsg-header__mobile-item--has-children\" : \"\",\n node.current ? \"lsg-header__mobile-item--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const a = document.createElement(\"a\");\n a.className = \"lsg-header__mobile-link\";\n a.href = node.href;\n a.innerHTML =\n `<span>${escHtml(node.label)}</span>` +\n (hasChildren\n ? createIconSvg(\"chevronRight\", \"lsg-header__icon lsg-header__icon--chevronRight\")\n : \"\");\n\n if (hasChildren) {\n a.addEventListener(\"click\", (event) => {\n event.preventDefault();\n onDrill([...path, node]);\n });\n }\n\n li.appendChild(a);\n ul.appendChild(li);\n });\n\n return ul;\n}\n\nfunction escHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nfunction hydrateStaticIcons(root: Window): void {\n root.document.querySelectorAll<HTMLElement>(\".lsg-nav__chevron\").forEach((chevron) => {\n if (!hasSvgIcon(chevron)) {\n chevron.innerHTML = createIconSvg(\"chevronRight\", \"lsg-nav__chevron-svg\");\n }\n });\n\n root.document\n .querySelectorAll<HTMLButtonElement>(\".lsg-lang-switcher__trigger\")\n .forEach((trigger) => {\n if (!trigger.querySelector(\".lsg-lang-switcher__globe\")) {\n trigger.insertAdjacentHTML(\n \"afterbegin\",\n createIconSvg(\"globe\", \"lsg-lang-switcher__globe\")\n );\n }\n });\n}\n\nfunction initLangSwitchers(root: Window): void {\n const switchers = root.document.querySelectorAll<HTMLElement>(LANGUAGE_SWITCHER_SELECTOR);\n\n switchers.forEach((switcher) => {\n const trigger = switcher.querySelector<HTMLButtonElement>(\".lsg-lang-switcher__trigger\");\n const dropdown = switcher.querySelector<HTMLElement>(\".lsg-lang-switcher__dropdown\");\n\n if (!trigger || !dropdown) {\n return;\n }\n\n const open = (): void => {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n dropdown.removeAttribute(\"hidden\");\n };\n\n const close = (): void => {\n trigger.setAttribute(\"aria-expanded\", \"false\");\n dropdown.setAttribute(\"hidden\", \"\");\n };\n\n close();\n\n trigger.addEventListener(\"click\", () => {\n const expanded = trigger.getAttribute(\"aria-expanded\") === \"true\";\n if (expanded) {\n close();\n } else {\n open();\n }\n });\n\n root.document.addEventListener(\"click\", (event: MouseEvent) => {\n if (!switcher.contains(event.target as Node)) {\n close();\n }\n });\n\n root.document.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n close();\n }\n });\n });\n}\n\nfunction initSearchOverlay(root: Window): void {\n const triggers = root.document.querySelectorAll<HTMLButtonElement>(SEARCH_TRIGGER_SELECTOR);\n const overlays = root.document.querySelectorAll<HTMLElement>(SEARCH_OVERLAY_SELECTOR);\n\n if (!triggers.length || !overlays.length) {\n return;\n }\n\n const openOverlay = (overlay: HTMLElement): void => {\n overlay.classList.add(\"lsg-search-overlay--open\");\n const input = overlay.querySelector<HTMLInputElement>(\".lsg-search-overlay__input\");\n input?.focus();\n };\n\n const closeOverlay = (overlay: HTMLElement): void => {\n overlay.classList.remove(\"lsg-search-overlay--open\");\n };\n\n triggers.forEach((trigger) => {\n trigger.addEventListener(\"click\", () => {\n const targetId = trigger.getAttribute(\"aria-controls\");\n const target = targetId\n ? (root.document.getElementById(targetId) as HTMLElement | null)\n : overlays[0];\n\n if (target) {\n openOverlay(target as HTMLElement);\n }\n });\n });\n\n overlays.forEach((overlay) => {\n const closeBtn = overlay.querySelector<HTMLButtonElement>(\".lsg-search-overlay__close\");\n closeBtn?.addEventListener(\"click\", () => closeOverlay(overlay));\n\n const backdrop = overlay.querySelector<HTMLElement>(\".lsg-search-overlay__backdrop\");\n backdrop?.addEventListener(\"click\", () => closeOverlay(overlay));\n });\n\n root.document.addEventListener(\"mousedown\", (event: MouseEvent) => {\n overlays.forEach((overlay) => {\n if (!overlay.classList.contains(\"lsg-search-overlay--open\")) {\n return;\n }\n\n const panel = overlay.querySelector<HTMLElement>(\".lsg-search-overlay__panel\");\n const clickedTrigger = Array.from(triggers).some((trigger) =>\n trigger.contains(event.target as Node)\n );\n\n if (!clickedTrigger && panel && !panel.contains(event.target as Node)) {\n closeOverlay(overlay);\n }\n });\n });\n\n root.document.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n overlays.forEach((overlay) => closeOverlay(overlay));\n }\n });\n}\n\nfunction setMenuTriggerIcon(trigger: HTMLButtonElement, open: boolean): void {\n const icon = trigger.querySelector<HTMLElement>(\".lsg-header__icon\");\n const path = icon?.querySelector<SVGPathElement>(\"path\");\n\n if (path) {\n path.setAttribute(\"d\", open ? LSG_ICON_PATHS.close : LSG_ICON_PATHS.bars);\n } else if (icon) {\n icon.innerHTML = createIconSvg(open ? \"close\" : \"bars\", \"lsg-header__icon-svg\");\n }\n\n const label = Array.from(trigger.children).find(\n (child) => !child.classList.contains(\"lsg-header__icon\")\n );\n if (label) {\n label.textContent = open ? \"CLOSE\" : \"MENU\";\n }\n}\n\nfunction clearMegaMenuBranch(scope: ParentNode): void {\n if (scope instanceof HTMLElement) {\n scope.classList.remove(\"lsg-header__mega-item--open\");\n scope.classList.remove(\"lsg-header__mega-column--open\");\n }\n\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--open\").forEach((item) => {\n item.classList.remove(\"lsg-header__mega-item--open\");\n });\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-column--open\").forEach((column) => {\n column.classList.remove(\"lsg-header__mega-column--open\");\n });\n}\n\nfunction activateMegaMenuItem(item: HTMLElement): void {\n const parentColumn = item.parentElement;\n\n if (parentColumn) {\n Array.from(parentColumn.children).forEach((openItem) => {\n if (openItem !== item) {\n clearMegaMenuBranch(openItem as HTMLElement);\n }\n });\n }\n\n item.classList.add(\"lsg-header__mega-item--open\");\n item\n .querySelector<HTMLElement>(\":scope > .lsg-header__mega-column\")\n ?.classList.add(\"lsg-header__mega-column--open\");\n}\n\nfunction ensureMobileDropdownMarkup(header: HTMLElement, mobilePanel: HTMLElement): void {\n if (mobilePanel.querySelector(\".lsg-nav--dropdown\")) {\n return;\n }\n\n const desktopDropdown = header.querySelector<HTMLElement>(\n \".lsg-header__nav .lsg-nav--dropdown\"\n );\n\n if (desktopDropdown) {\n mobilePanel.appendChild(desktopDropdown.cloneNode(true));\n }\n}\n\nfunction initHeaders(root: Window): void {\n const isMobile = (): boolean => root.matchMedia(MOBILE_MEDIA_QUERY).matches;\n\n root.document.querySelectorAll<HTMLElement>(\".lsg-header\").forEach((header) => {\n const isDropdownHeader = header.classList.contains(\"lsg-header--dropdown\");\n const explicitMenuTriggers = header.querySelectorAll<HTMLButtonElement>(MENU_TRIGGER_SELECTOR);\n const inferredMobileMenuTriggers = header.querySelectorAll<HTMLButtonElement>(\n \".lsg-header__mobile-actions .lsg-header__icon-button[aria-expanded]\"\n );\n const menuTriggers = Array.from(\n new Set([...Array.from(explicitMenuTriggers), ...Array.from(inferredMobileMenuTriggers)])\n );\n\n const mobilePanel = header.querySelector<HTMLElement>(\n \"#lsg-mobile-panel, .lsg-header__mobile-panel\"\n );\n\n if (isDropdownHeader && mobilePanel) {\n ensureMobileDropdownMarkup(header, mobilePanel);\n }\n\n const navTree = mobilePanel ? buildNavTree(header) : [];\n let mobileActivePath: NavNode[] = [];\n\n const setMobileLevel = (n: number): void => {\n header.className =\n header.className.replace(/lsg-header--mobile-level-\\d+/g, \"\").trim() +\n ` lsg-header--mobile-level-${n}`;\n };\n\n const drillTo = (newPath: NavNode[]): void => {\n if (!mobilePanel) {\n return;\n }\n\n mobileActivePath = newPath;\n const nodes =\n newPath.length === 0 ? navTree : newPath[newPath.length - 1].children;\n renderMobilePanel(mobilePanel, nodes, newPath, drillTo);\n setMobileLevel(newPath.length + 1);\n };\n\n const setMenuOpen = (open: boolean): void => {\n header.classList.toggle(\"lsg-header--menu-open\", open);\n\n if (open) {\n if (mobilePanel) {\n mobilePanel.removeAttribute(\"hidden\");\n\n if (isMobile() && isDropdownHeader) {\n setMobileLevel(1);\n } else {\n mobileActivePath = [];\n drillTo([]);\n }\n }\n } else {\n clearMegaMenuBranch(header);\n if (mobilePanel) {\n mobilePanel.setAttribute(\"hidden\", \"\");\n mobileActivePath = [];\n setMobileLevel(0);\n }\n }\n\n menuTriggers.forEach((trigger) => {\n trigger.setAttribute(\"aria-expanded\", String(open));\n trigger.setAttribute(\"aria-label\", open ? \"Close menu\" : \"Open menu\");\n setMenuTriggerIcon(trigger, open);\n });\n };\n\n const closeDropdownItems = (scope: ParentNode = header): void => {\n scope.querySelectorAll<HTMLElement>(\".lsg-nav__item--open\").forEach((openItem) => {\n openItem.classList.remove(\"lsg-nav__item--open\");\n openItem\n .querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\")\n ?.setAttribute(\"aria-expanded\", \"false\");\n });\n };\n\n setMenuOpen(false);\n\n menuTriggers.forEach((trigger) => {\n trigger.addEventListener(\"click\", () => {\n setMenuOpen(!header.classList.contains(\"lsg-header--menu-open\"));\n });\n });\n\n header.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--has-children\").forEach((item) => {\n item.addEventListener(\"mouseenter\", () => {\n if (!isMobile()) {\n activateMegaMenuItem(item);\n }\n });\n\n item.addEventListener(\"focusin\", () => {\n if (!isMobile()) {\n activateMegaMenuItem(item);\n }\n });\n });\n\n header\n .querySelectorAll<HTMLElement>(\".lsg-nav--dropdown .lsg-nav__item--has-children\")\n .forEach((item) => {\n const link = item.querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\");\n\n if (!link) {\n return;\n }\n\n const setItemOpen = (open: boolean): void => {\n item.parentElement\n ?.querySelectorAll<HTMLElement>(\":scope > .lsg-nav__item--open\")\n .forEach((openItem) => {\n if (openItem !== item) {\n openItem.classList.remove(\"lsg-nav__item--open\");\n openItem\n .querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\")\n ?.setAttribute(\"aria-expanded\", \"false\");\n }\n });\n item.classList.toggle(\"lsg-nav__item--open\", open);\n link.setAttribute(\"aria-expanded\", String(open));\n };\n\n item.addEventListener(\"mouseenter\", () => {\n if (!isMobile()) {\n setItemOpen(true);\n }\n });\n\n item.addEventListener(\"mouseleave\", () => {\n if (!isMobile()) {\n setItemOpen(false);\n }\n });\n\n link.addEventListener(\"click\", (event) => {\n const isMobilePanelLink = Boolean(link.closest(\".lsg-header__mobile-panel\"));\n\n if (!isMobile() && !isMobilePanelLink) {\n return;\n }\n\n event.preventDefault();\n setItemOpen(!item.classList.contains(\"lsg-nav__item--open\"));\n });\n });\n\n root.document.addEventListener(\"mousedown\", (event: MouseEvent) => {\n if (!header.contains(event.target as Node)) {\n setMenuOpen(false);\n closeDropdownItems();\n }\n });\n });\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hero\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction initHero(root: Window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-is='hero']\").forEach((hero) => {\n const isCarousel = hero.dataset.lsgCarousel === \"true\";\n const transition = (hero.dataset.lsgTransition ?? \"slide\") as \"slide\" | \"fade\";\n const showArrows = hero.dataset.lsgArrows === \"true\";\n\n const viewport = hero.querySelector<HTMLElement>(\".lsg-hero__viewport\");\n if (!viewport) return;\n\n new LsgHeroController(\n viewport,\n {\n prevBtn: showArrows ? hero.querySelector<HTMLElement>(\".lsg-hero__prev\") : undefined,\n nextBtn: showArrows ? hero.querySelector<HTMLElement>(\".lsg-hero__next\") : undefined,\n scrollDownBtn: hero.querySelector<HTMLElement>(\".lsg-hero__scroll-down-btn\"),\n // AEM wraps the section in a decoration div; fall back to the parent's next sibling.\n scrollDownTarget: (hero.nextElementSibling ?? hero.parentElement?.nextElementSibling) as HTMLElement | null,\n },\n { transition, autoplay: isCarousel },\n );\n\n // DAM video fade-in on canplay\n hero.querySelectorAll<HTMLVideoElement>(\".lsg-hero__video\").forEach((video) => {\n video.addEventListener(\"canplay\", () => {\n video.classList.add(\"lsg-hero__video--ready\");\n }, { once: true });\n });\n });\n}\n\nexport function bootLsgAccordion(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-accordion]\").forEach((accordion) => {\n const allowMultiple = accordion.hasAttribute(\"data-lsg-accordion-multi\");\n\n accordion.querySelectorAll<HTMLButtonElement>(\"[data-lsg-accordion-header]\").forEach((header) => {\n header.addEventListener(\"click\", () => {\n const item = header.closest<HTMLElement>(\"[data-lsg-accordion-item]\");\n if (!item) return;\n\n const panelId = header.getAttribute(\"aria-controls\");\n const panel = panelId ? root.document.getElementById(panelId) : null;\n if (!panel) return;\n\n const isOpen = item.classList.contains(\"lsg-accordion__item--open\");\n\n if (!allowMultiple) {\n accordion.querySelectorAll<HTMLElement>(\"[data-lsg-accordion-item]\").forEach((otherItem) => {\n if (otherItem === item) return;\n const otherHeader = otherItem.querySelector<HTMLButtonElement>(\"[data-lsg-accordion-header]\");\n const otherPanelId = otherHeader?.getAttribute(\"aria-controls\");\n const otherPanel = otherPanelId ? root.document.getElementById(otherPanelId) : null;\n otherItem.classList.remove(\"lsg-accordion__item--open\");\n otherPanel?.classList.remove(\"lsg-accordion__panel--open\");\n otherHeader?.setAttribute(\"aria-expanded\", \"false\");\n otherHeader?.querySelector(\"[data-lsg-accordion-icon]\")?.classList.remove(\"lsg-accordion__icon--open\");\n });\n }\n\n if (!isOpen) {\n item.classList.add(\"lsg-accordion__item--open\");\n panel.classList.add(\"lsg-accordion__panel--open\");\n header.setAttribute(\"aria-expanded\", \"true\");\n header.querySelector(\"[data-lsg-accordion-icon]\")?.classList.add(\"lsg-accordion__icon--open\");\n } else if (allowMultiple) {\n item.classList.remove(\"lsg-accordion__item--open\");\n panel.classList.remove(\"lsg-accordion__panel--open\");\n header.setAttribute(\"aria-expanded\", \"false\");\n header.querySelector(\"[data-lsg-accordion-icon]\")?.classList.remove(\"lsg-accordion__icon--open\");\n }\n });\n });\n });\n}\n\nexport function bootLsgTabs(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-tabs]\").forEach((tabs) => {\n // Author edit mode: AEM emits data-panelcontainer, and core's panel selector owns which\n // panel is shown (it toggles cmp-tabs__tabpanel--active). The theme clientlib loads in\n // edit mode too, so without this guard the two would fight over the active panel.\n // LsgTabs.scss has a matching [data-panelcontainer] block for the same reason.\n if (tabs.hasAttribute(\"data-panelcontainer\")) return;\n\n const tabStrip = tabs.querySelector<HTMLElement>(\".lsg-tabs__tablist\");\n const tabList = Array.from(tabs.querySelectorAll<HTMLElement>(\"[data-lsg-tabs-tab]\"));\n const panels = Array.from(tabs.querySelectorAll<HTMLElement>(\"[data-lsg-tabs-panel]\"));\n if (!tabList.length) return;\n\n const isVertical = tabs.classList.contains(\"lsg-tabs--vertical\");\n\n // Below the mobile breakpoint LsgTabs.scss restyles this as a single-open\n // accordion, where re-pressing the open header collapses it. Collapsing is a\n // separate class rather than \"no tab selected\", so exactly one tab stays\n // selected at every width and resizing back to desktop needs no handling.\n const isMobile = (): boolean => root.matchMedia(MOBILE_MEDIA_QUERY).matches;\n\n const syncExpanded = (): void => {\n const mobile = isMobile();\n tabList.forEach((tab, i) => {\n if (!mobile) {\n // Desktop is a tab strip — aria-selected carries the state, and the\n // collapsed class has no styling, so aria-expanded would be misleading.\n tab.removeAttribute(\"aria-expanded\");\n return;\n }\n const panel = panels[i];\n const open =\n tab.classList.contains(\"lsg-tabs__tab--active\") &&\n !panel?.classList.contains(\"lsg-tabs__panel--collapsed\");\n tab.setAttribute(\"aria-expanded\", String(open));\n });\n };\n\n // ── Scroll arrows ───────────────────────────────────────────────────────\n // The arrows are ::before / ::after on the root (see LsgTabs.scss), so no DOM\n // is added. All this has to do is say whether there is anything left to\n // reveal in each direction; the classes below are what make them visible.\n const SCROLL_EPSILON = 1; // sub-pixel layout rounding\n const START_CLASS = \"lsg-tabs--scroll-start\";\n const END_CLASS = \"lsg-tabs--scroll-end\";\n\n const updateArrows = (): void => {\n // Below the breakpoint the strip is an accordion — nothing scrolls, so the\n // arrows must not be offered. Owning that here keeps CSS out of a\n // specificity fight with the vertical variant's arrow rules.\n if (!tabStrip || isMobile()) {\n tabs.classList.remove(START_CLASS, END_CLASS);\n return;\n }\n\n const offset = isVertical ? tabStrip.scrollTop : tabStrip.scrollLeft;\n const visible = isVertical ? tabStrip.clientHeight : tabStrip.clientWidth;\n const total = isVertical ? tabStrip.scrollHeight : tabStrip.scrollWidth;\n\n tabs.classList.toggle(START_CLASS, offset > SCROLL_EPSILON);\n tabs.classList.toggle(END_CLASS, offset + visible < total - SCROLL_EPSILON);\n };\n\n const scrollStrip = (direction: -1 | 1): void => {\n if (!tabStrip) return;\n // A step just under one viewport keeps a sliver of context in view\n const visible = isVertical ? tabStrip.clientHeight : tabStrip.clientWidth;\n const step = Math.max(visible * 0.8, 1);\n if (isVertical) {\n tabStrip.scrollTop += direction * step;\n } else {\n tabStrip.scrollLeft += direction * step;\n }\n };\n\n const activate = (index: number, moveFocus: boolean): void => {\n const target = tabList[index];\n if (!target) return;\n\n tabList.forEach((tab, i) => {\n const isActive = i === index;\n tab.classList.toggle(\"lsg-tabs__tab--active\", isActive);\n tab.classList.toggle(\"cmp-tabs__tab--active\", isActive);\n tab.setAttribute(\"aria-selected\", String(isActive));\n // Roving tabindex — only the active tab is in the tab order\n tab.setAttribute(\"tabindex\", isActive ? \"0\" : \"-1\");\n });\n\n panels.forEach((panel, i) => {\n const isActive = i === index;\n panel.classList.toggle(\"lsg-tabs__panel--active\", isActive);\n panel.classList.toggle(\"cmp-tabs__tabpanel--active\", isActive);\n panel.classList.remove(\"lsg-tabs__panel--collapsed\");\n });\n\n syncExpanded();\n // Arrow-key navigation can land on a tab that is scrolled out of the strip\n target.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n updateArrows();\n if (moveFocus) target.focus();\n };\n\n const currentIndex = (): number => {\n const found = tabList.findIndex((tab) =>\n tab.classList.contains(\"lsg-tabs__tab--active\")\n );\n return found === -1 ? 0 : found;\n };\n\n const press = (index: number): void => {\n if (isMobile() && index === currentIndex()) {\n panels[index]?.classList.toggle(\"lsg-tabs__panel--collapsed\");\n syncExpanded();\n return;\n }\n activate(index, false);\n };\n\n // Crossing the breakpoint switches between tab strip and accordion, which\n // changes both the aria model and whether the arrows apply at all.\n root.matchMedia(MOBILE_MEDIA_QUERY).addEventListener(\"change\", () => {\n syncExpanded();\n updateArrows();\n });\n\n tabStrip?.addEventListener(\"scroll\", updateArrows, { passive: true });\n\n const ResizeObserverCtor = (\n root as Window & { ResizeObserver?: typeof ResizeObserver }\n ).ResizeObserver;\n\n if (typeof ResizeObserverCtor !== \"undefined\") {\n // The strip can start overflowing because its container changed, with no\n // viewport resize at all — an AEM column layout, or a panel opening above.\n const observer = new ResizeObserverCtor(() => updateArrows());\n observer.observe(tabs);\n if (tabStrip) observer.observe(tabStrip);\n } else {\n root.addEventListener(\"resize\", updateArrows);\n }\n\n // The arrows are pseudo-elements painted above the strip, so a click on one\n // hit-tests to the root rather than to a tab or panel. Nothing else on the\n // root is clickable, which is what makes this unambiguous.\n tabs.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.target !== tabs || !tabStrip) return;\n\n const rect = tabStrip.getBoundingClientRect();\n const beforeMidpoint = isVertical\n ? event.clientY < rect.top + rect.height / 2\n : event.clientX < rect.left + rect.width / 2;\n\n scrollStrip(beforeMidpoint ? -1 : 1);\n });\n\n syncExpanded();\n updateArrows();\n\n // A late web-font swap widens the labels, growing scrollWidth without changing\n // the strip's own box — so ResizeObserver may never fire. Re-measure once the\n // fonts have settled, otherwise the arrows can be stale on first paint.\n root.document.fonts?.ready.then(() => updateArrows());\n\n tabList.forEach((tab, index) => {\n tab.addEventListener(\"click\", () => press(index));\n\n // role=\"tab\" requires arrow-key navigation, and these are <li> not <button>,\n // so there is no native keyboard behaviour to fall back on.\n tab.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n const last = tabList.length - 1;\n const from = currentIndex();\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n activate(from === last ? 0 : from + 1, true);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n activate(from === 0 ? last : from - 1, true);\n break;\n case \"Home\":\n event.preventDefault();\n activate(0, true);\n break;\n case \"End\":\n event.preventDefault();\n activate(last, true);\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n press(index);\n break;\n default:\n break;\n }\n });\n });\n });\n}\n\nfunction buildEmbedUrl(videoUrl: string, opts: { autoplay: boolean; loop: boolean; muted: boolean }): string | null {\n try {\n const url = new URL(videoUrl);\n const host = url.hostname.replace(/^www\\./, \"\");\n const path = url.pathname;\n\n if (host === \"youtube.com\" || host === \"youtube-nocookie.com\" || host === \"youtu.be\") {\n let id: string | null = null;\n if (host === \"youtu.be\") {\n id = path.slice(1);\n } else if (path.startsWith(\"/embed/\") || path.startsWith(\"/shorts/\")) {\n id = path.split(\"/\")[2];\n } else if (path === \"/watch\") {\n id = url.searchParams.get(\"v\");\n }\n if (id && /^[A-Za-z0-9_-]{11}$/.test(id)) {\n const baseHost = host === \"youtube-nocookie.com\" ? \"youtube-nocookie.com\" : \"youtube.com\";\n const embedUrl = new URL(`https://www.${baseHost}/embed/${id}`);\n embedUrl.searchParams.set(\"autoplay\", \"1\");\n embedUrl.searchParams.set(\"mute\", opts.muted ? \"1\" : \"0\");\n embedUrl.searchParams.set(\"rel\", \"0\");\n if (opts.loop) {\n embedUrl.searchParams.set(\"loop\", \"1\");\n embedUrl.searchParams.set(\"playlist\", id);\n }\n return embedUrl.toString();\n }\n }\n\n if (host === \"vimeo.com\" || host === \"player.vimeo.com\") {\n let id: string | null = null;\n if (host === \"player.vimeo.com\" && path.startsWith(\"/video/\")) {\n id = path.split(\"/\")[2];\n } else {\n const match = path.match(/^\\/(\\d+)$/);\n if (match) id = match[1];\n }\n if (id && /^\\d+$/.test(id)) {\n const embedUrl = new URL(`https://player.vimeo.com/video/${id}`);\n embedUrl.searchParams.set(\"autoplay\", \"1\");\n embedUrl.searchParams.set(\"muted\", opts.muted ? \"1\" : \"0\");\n embedUrl.searchParams.set(\"loop\", opts.loop ? \"1\" : \"0\");\n return embedUrl.toString();\n }\n }\n } catch {\n // relative / DAM path — native source\n }\n return null;\n}\n\nexport function bootLsgVideo(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-video]\").forEach((video) => {\n const playBtn = video.querySelector<HTMLButtonElement>(\"button.lsg-video__play\");\n if (!playBtn) return;\n\n const rawUrl = video.dataset.lsgVideoUrl;\n if (!rawUrl) return;\n\n const autoplay = video.dataset.lsgVideoAutoplay === \"true\";\n const loop = video.dataset.lsgVideoLoop === \"true\";\n const muted = video.dataset.lsgVideoMuted === \"true\";\n\n playBtn.addEventListener(\"click\", () => {\n const media = video.querySelector<HTMLElement>(\".lsg-video__media\");\n if (!media) return;\n\n const embedUrl = buildEmbedUrl(rawUrl, { autoplay, loop, muted });\n media.innerHTML = \"\";\n\n if (embedUrl) {\n const wrap = root.document.createElement(\"div\");\n wrap.className = \"lsg-video__embed\";\n const iframe = root.document.createElement(\"iframe\");\n iframe.className = \"lsg-video__iframe\";\n iframe.src = embedUrl;\n iframe.setAttribute(\"allow\", \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\");\n iframe.setAttribute(\"referrerpolicy\", \"strict-origin-when-cross-origin\");\n iframe.setAttribute(\"allowfullscreen\", \"\");\n iframe.setAttribute(\"loading\", \"lazy\");\n iframe.title = video.querySelector(\".lsg-video__title\")?.textContent ?? \"Video\";\n wrap.appendChild(iframe);\n media.appendChild(wrap);\n } else {\n const videoEl = root.document.createElement(\"video\");\n videoEl.className = \"lsg-video__native\";\n videoEl.controls = true;\n videoEl.autoplay = true;\n videoEl.playsInline = true;\n if (loop) videoEl.loop = true;\n if (muted) videoEl.muted = true;\n const source = root.document.createElement(\"source\");\n source.src = rawUrl;\n videoEl.appendChild(source);\n media.appendChild(videoEl);\n videoEl.play().catch(() => {\n // ignore autoplay policy\n });\n }\n });\n });\n}\n\nexport function bootLsgClientlib(themeName: string, root: Window = window): void {\n const init = (): void => {\n root.document.documentElement.dataset.lsgTheme = themeName;\n hydrateStaticIcons(root);\n initHeaders(root);\n initLangSwitchers(root);\n initSearchOverlay(root);\n initHero(root);\n bootLsgAccordion(root);\n bootLsgTabs(root);\n bootLsgVideo(root);\n };\n\n if (root.document.readyState === \"loading\") {\n root.document.addEventListener(\"DOMContentLoaded\", init, { once: true });\n return;\n }\n\n init();\n}","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\nimport EmblaCarouselFade from \"embla-carousel-fade\";\n\n/**\n * Framework-agnostic Embla controller shared by the React carousel and the AEM\n * clientlib runtime. Keep behaviour here so Storybook and server-rendered HTL\n * use exactly the same navigation and selected-state logic.\n *\n * The carousel drives TWO Embla instances from a single index:\n *\n * media - the peek / three-up track. Owns drag, arrows and dots.\n * content - a 100%-wide crossfade track holding one text block per item.\n * Index-driven only; never a source of truth.\n *\n * Both tracks are generated from the same authored item list with no filtering,\n * so index i always means the same item in both. See `syncSelectedState`.\n */\nexport interface LsgCarouselControllerElements {\n prevBtn?: HTMLElement | null;\n nextBtn?: HTMLElement | null;\n paginationBtns?: Iterable<HTMLElement> | null;\n /**\n * Root of the crossfade text track. Omit for a media-only carousel; the\n * controller then behaves exactly as it did before the text track existed.\n */\n contentViewport?: HTMLElement | null;\n}\n\nexport type LsgCarouselDirection = \"ltr\" | \"rtl\";\n\nexport interface LsgCarouselControllerOptions {\n loop?: boolean;\n /**\n * Embla content direction. Media-left variants use RTL so the active media is\n * anchored on the right edge of the viewport and the adjacent slide peeks in\n * from the left, matching the mirrored Figma compositions.\n *\n * Embla requires the viewport/track CSS direction to match this value. The\n * React component sets `dir` on the viewport and the AEM boot path mirrors it.\n *\n * Only the media track is mirrored. The text track crossfades in place, so it\n * has no spatial direction and always stays LTR.\n */\n direction?: LsgCarouselDirection;\n}\n\nconst MOBILE_MEDIA_QUERY = \"(max-width: 767px)\";\n\n/** Media track slides. Also the dot/aria-label source of truth. */\nconst MEDIA_ITEM_SELECTOR = \"[data-lsg-carousel-item]\";\n/** Text track slides, one per media slide. */\nconst CONTENT_ITEM_SELECTOR = \"[data-lsg-carousel-content-item]\";\n\nconst directChildren = (\n container: HTMLElement | null,\n selector: string,\n): HTMLElement[] =>\n container\n ? Array.from(container.children).filter((el): el is HTMLElement =>\n el instanceof HTMLElement && el.matches(selector),\n )\n : [];\n\nexport class LsgCarouselController {\n private media: EmblaCarouselType | null = null;\n private content: EmblaCarouselType | null = null;\n private syncing = false;\n private readonly mediaViewport: HTMLElement;\n private readonly contentSlides: HTMLElement[];\n private readonly els: LsgCarouselControllerElements;\n private readonly paginationBtns: HTMLElement[];\n private readonly paginationHandlers: Array<() => void>;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgCarouselControllerElements = {},\n options: LsgCarouselControllerOptions = {},\n ) {\n this.els = elements;\n this.mediaViewport = viewport;\n this.paginationBtns = elements.paginationBtns\n ? Array.from(elements.paginationBtns)\n : [];\n\n const mediaTrack = viewport.firstElementChild as HTMLElement | null;\n const mediaSlides = directChildren(mediaTrack, MEDIA_ITEM_SELECTOR);\n\n // Embla resolves `container` as `root.children[0]` and `slides` as its\n // element children. Passing both explicitly instead makes the instance\n // immune to AEM injecting its own nodes (e.g. the edit-mode\n // `div.new.section.aem-Grid-newComponent` drop target) into the track.\n this.media = EmblaCarousel(\n viewport,\n {\n align: \"start\",\n // Every authored media item owns a pagination dot. `trimSnaps` can remove\n // the final snap when two-up/peek layouts do not have enough overflow,\n // leaving the last authored item only partially reachable. Keep all snaps\n // so dot/item indexes stay 1:1 for 2, 3, 4, ... media items.\n //\n // This is ALSO load-bearing for the text/media sync: `containSnaps` is\n // `!loop && !!containScroll`, so with this `false` the snap list is\n // always `snapsAligned` - one snap per slide, whatever the slide's\n // flex-basis. That is the only reason a 380px peek track and a 100%-wide\n // crossfade track can share one index. Reverting this to `trimSnaps`\n // drops trailing snaps on the media track alone and desyncs the tail.\n containScroll: false,\n direction: options.direction ?? \"ltr\",\n loop: options.loop ?? true,\n skipSnaps: false,\n slidesToScroll: 1,\n container: mediaTrack ?? undefined,\n slides: mediaSlides.length ? mediaSlides : undefined,\n // All layouts collapse to the same mobile stack, which is never\n // mirrored. Embla restores the selected index when a breakpoint\n // re-activates, so the flip is not visible to the reader.\n breakpoints: { [MOBILE_MEDIA_QUERY]: { direction: \"ltr\" } },\n },\n );\n\n const contentViewport = elements.contentViewport ?? null;\n const contentTrack = contentViewport?.firstElementChild as HTMLElement | null;\n this.contentSlides = directChildren(contentTrack, CONTENT_ITEM_SELECTOR);\n\n // Unequal counts are the one remaining way the two tracks can desync, and a\n // text block silently paired with the wrong image is worse than no text\n // animation at all. Degrade to media-only rather than risk it.\n const countsMatch =\n mediaSlides.length > 0 && this.contentSlides.length === mediaSlides.length;\n\n if (contentViewport && contentTrack && countsMatch) {\n this.content = EmblaCarousel(\n contentViewport,\n {\n align: \"start\",\n // Must match the media track's snap arithmetic - see above.\n containScroll: false,\n // The text crossfades in place, so there is nothing to mirror.\n direction: \"ltr\",\n // Inert on a fade instance: the plugin calls `disableScroll()`, which\n // deactivates the translate and every loop point. Set for config\n // symmetry with the media track, not for behaviour.\n loop: options.loop ?? true,\n skipSnaps: false,\n slidesToScroll: 1,\n // The reader drags the media, never the text. Without this the text\n // track would fight the media track for the same pointer.\n watchDrag: false,\n container: contentTrack,\n slides: this.contentSlides,\n },\n [EmblaCarouselFade()],\n );\n }\n\n this.paginationHandlers = this.paginationBtns.map((_, index) => () => {\n this.media?.scrollTo(index);\n });\n\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.addEventListener(\"click\", this.paginationHandlers[index]);\n });\n\n this.media.on(\"select\", this.handleMediaSelect);\n this.media.on(\"reInit\", this.handleResync);\n this.media.on(\"slidesChanged\", this.handleResync);\n this.content?.on(\"select\", this.handleContentSelect);\n\n // Initial alignment is a hard cut - there is nothing to crossfade from.\n this.handleResync();\n }\n\n /**\n * Embla automatically falls back to non-looping mode when there is not enough\n * slide content to create a safe loop (most noticeable with two-up layouts and\n * only 2–3 authored items). Keep the arrow contract cyclic in that fallback:\n * when there is no native previous snap, jump to the final authored snap.\n */\n readonly scrollPrev = (): void => {\n if (!this.media) return;\n\n if (this.media.canScrollPrev()) {\n this.media.scrollPrev();\n return;\n }\n\n const lastSnap = this.media.scrollSnapList().length - 1;\n if (lastSnap >= 0) this.media.scrollTo(lastSnap);\n };\n\n /** See `scrollPrev` for why the explicit wrap fallback is required. */\n readonly scrollNext = (): void => {\n if (!this.media) return;\n\n if (this.media.canScrollNext()) {\n this.media.scrollNext();\n return;\n }\n\n if (this.media.scrollSnapList().length > 0) this.media.scrollTo(0);\n };\n\n /**\n * Drive the text track from the media index.\n *\n * `jump` skips the crossfade (Embla sets duration 0, and the fade plugin then\n * snaps opacity instantly). Use it only for re-measure events, never for\n * reader-initiated navigation, or the text hard-cuts instead of fading.\n */\n private pushToContent(jump = false): void {\n if (!this.media || !this.content || this.syncing) return;\n\n const target = this.media.selectedScrollSnap();\n if (this.content.selectedScrollSnap() === target) return;\n\n this.syncing = true;\n try {\n this.content.scrollTo(target, jump);\n } finally {\n this.syncing = false;\n }\n }\n\n /**\n * The text track never initiates navigation, but it owns its own resize and\n * mutation observers. If one instance re-measures without the other, this pulls\n * the media track back onto the text track's index rather than letting them drift.\n */\n private readonly handleContentSelect = (): void => {\n if (!this.media || !this.content || this.syncing) return;\n\n const target = this.content.selectedScrollSnap();\n if (this.media.selectedScrollSnap() === target) return;\n\n this.syncing = true;\n try {\n this.media.scrollTo(target, true);\n } finally {\n this.syncing = false;\n }\n };\n\n /** Reader-initiated navigation: repaint state, then crossfade the text. */\n private readonly handleMediaSelect = (): void => {\n this.syncSelectedState();\n this.pushToContent();\n };\n\n /**\n * Re-measure events (breakpoint flip, resize, authored items added/removed).\n * The text is realigned with a hard cut because nothing moved for the reader.\n */\n private readonly handleResync = (): void => {\n this.syncSelectedState();\n this.pushToContent(true);\n };\n\n /** Repaints dot/arrow/a11y state from the media index. Never navigates. */\n private readonly syncSelectedState = (): void => {\n const selected = this.media?.selectedScrollSnap() ?? 0;\n const snapCount = this.media?.scrollSnapList().length ?? 0;\n\n this.paginationBtns.forEach((button, index) => {\n const active = index === selected;\n button.classList.toggle(\"lsg-carousel__dot--active\", active);\n button.setAttribute(\"aria-current\", active ? \"true\" : \"false\");\n });\n\n // Cosmetic only. Looping plus the cyclic wrap above mean both arrows always\n // act, so `disabled`/`aria-disabled` would misreport them to assistive tech.\n // Themes use these classes to mute the leading/trailing half of the pill.\n this.els.prevBtn?.classList.toggle(\n \"lsg-carousel__arrow--at-start\",\n selected === 0,\n );\n this.els.nextBtn?.classList.toggle(\n \"lsg-carousel__arrow--at-end\",\n snapCount > 0 && selected === snapCount - 1,\n );\n\n // The fade plugin only sets opacity and pointer-events, so without this every\n // faded-out text block keeps its heading in the accessibility tree and its CTA\n // in the tab order - N copies of the same landmark for a sighted-equivalent\n // view of one.\n this.contentSlides.forEach((slide, index) => {\n const active = index === selected;\n slide.toggleAttribute(\"inert\", !active);\n if (active) slide.removeAttribute(\"aria-hidden\");\n else slide.setAttribute(\"aria-hidden\", \"true\");\n });\n };\n\n get emblaApi(): EmblaCarouselType | null {\n return this.media;\n }\n\n /** Text track handle. Exposed for the index-parity checks in the test plan. */\n get contentApi(): EmblaCarouselType | null {\n return this.content;\n }\n\n destroy(): void {\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.removeEventListener(\"click\", this.paginationHandlers[index]);\n });\n\n // Content first: its plugin restores the inline opacity/transform it wrote,\n // and it reads `internalEngine()` while doing so.\n if (this.content) {\n this.content.off(\"select\", this.handleContentSelect);\n this.content.destroy();\n this.content = null;\n }\n\n if (this.media) {\n this.media.off(\"select\", this.handleMediaSelect);\n this.media.off(\"reInit\", this.handleResync);\n this.media.off(\"slidesChanged\", this.handleResync);\n this.media.destroy();\n this.media = null;\n }\n\n // Embla restores what Embla wrote. Everything below is ours, and leaving it\n // behind would make server-rendered markup re-initialise into a stale state.\n this.paginationBtns.forEach((button) => {\n button.classList.remove(\"lsg-carousel__dot--active\");\n button.removeAttribute(\"aria-current\");\n });\n this.els.prevBtn?.classList.remove(\"lsg-carousel__arrow--at-start\");\n this.els.nextBtn?.classList.remove(\"lsg-carousel__arrow--at-end\");\n this.contentSlides.forEach((slide) => {\n slide.removeAttribute(\"inert\");\n slide.removeAttribute(\"aria-hidden\");\n });\n }\n}\n","import { LsgCarouselController } from \"./LsgCarouselController\";\nimport type { LsgCarouselDirection } from \"./LsgCarouselController\";\n\n/**\n * Initialise server-rendered LSG carousel markup (AEM/clientlib mode).\n * React uses the same LsgCarouselController directly.\n *\n * The controller needs the media viewport, its slides, the optional text\n * viewport and the optional navigation controls. Everything is addressed by\n * `data-lsg-carousel-*` attribute rather than by class so the AEM HTL can carry\n * its own styling hooks without pinning this lookup to a class name.\n */\n\ninterface LsgCarouselHost extends HTMLElement {\n __lsgCarousel?: LsgCarouselController;\n}\n\nexport function bootLsgCarousel(root: Window = window): void {\n root.document\n .querySelectorAll<HTMLElement>(\"[data-lsg-is='carousel']\")\n .forEach((carousel) => {\n if (carousel.dataset.lsgCarouselReady === \"true\") return;\n\n // The class fallback keeps a not-yet-redeployed HTL booting: the theme JS\n // and the HTL ship from different repos and are copied across by hand.\n const viewport =\n carousel.querySelector<HTMLElement>(\"[data-lsg-carousel-media-viewport]\") ??\n carousel.querySelector<HTMLElement>(\".lsg-carousel__viewport\");\n const slides = carousel.querySelectorAll<HTMLElement>(\n \"[data-lsg-carousel-item]\",\n );\n if (!viewport || slides.length < 2) return;\n\n const layout = carousel.dataset.lsgCarouselLayout;\n const direction = (\n carousel.dataset.lsgCarouselDirection ?? (layout === \"media-left\" ? \"rtl\" : \"ltr\")\n ) as LsgCarouselDirection;\n\n // Embla requires its logical direction and the rendered viewport direction to\n // agree. Setting `dir` here also makes server-rendered HTL resilient if the\n // attribute was omitted while authoring/edit markup is being composed.\n viewport.setAttribute(\"dir\", direction);\n\n // AEM's EditableActions.REFRESH replaces a component's markup in place. The\n // replacement has no `data-lsg-carousel-ready`, so it re-inits here - and the\n // previous controller would otherwise keep two Embla instances (and their\n // resize/mutation observers) alive on detached nodes.\n const host = carousel as LsgCarouselHost;\n host.__lsgCarousel?.destroy();\n\n host.__lsgCarousel = new LsgCarouselController(\n viewport,\n {\n prevBtn: carousel.querySelector<HTMLElement>(\"[data-lsg-carousel-prev]\"),\n nextBtn: carousel.querySelector<HTMLElement>(\"[data-lsg-carousel-next]\"),\n paginationBtns: carousel.querySelectorAll<HTMLElement>(\n \"[data-lsg-carousel-dot]\",\n ),\n contentViewport: carousel.querySelector<HTMLElement>(\n \"[data-lsg-carousel-content-viewport]\",\n ),\n },\n { loop: true, direction },\n );\n\n carousel.dataset.lsgCarouselReady = \"true\";\n });\n}\n\n/** Tear down every carousel booted by `bootLsgCarousel` under `root`. */\nexport function destroyLsgCarousels(root: Window = window): void {\n root.document\n .querySelectorAll<HTMLElement>(\"[data-lsg-is='carousel']\")\n .forEach((carousel) => {\n const host = carousel as LsgCarouselHost;\n host.__lsgCarousel?.destroy();\n delete host.__lsgCarousel;\n delete carousel.dataset.lsgCarouselReady;\n });\n}\n","// Theme 3 wears its pill much rounder than the rest of the system.\n//\n// AEM ships a single token whose value varies — Styles.java maps the author's\n// Square / Rounded / Pill choice to --lsg-theme-radius: 0px | 10px | 25px in the\n// style block injected into the page head. The token name never changes, so the\n// only way to recognise \"the author picked Pill\" at runtime is by its value.\n// Square and Rounded are deliberately left alone.\n//\n// Shared by theme-3/theme-clientlib.ts (AEM) and .storybook/preview.tsx, so the\n// 80px lives in one place rather than being restated per environment.\n\n/** The value Styles.java emits for the \"Pill\" shape. */\nconst AEM_PILL_RADIUS = \"25px\";\n\n/** What Pill means for theme 3. */\nconst THEME_3_PILL_RADIUS = \"80px\";\n\n/**\n * Re-points --lsg-theme-radius at theme 3's pill when the page is set to Pill.\n *\n * Idempotent and reversible: the previous override is always cleared before the\n * value is read. That matters for Storybook, where one document serves all three\n * themes and both toolbars change live — without the reset, an inline 80px would\n * mask the incoming value and the override could never be re-evaluated. On an AEM\n * page neither the theme nor the shape changes after load, so it runs once.\n *\n * @param active Whether theme 3 is the active theme. Always true in AEM, where\n * theme-3.js only loads on theme-3 pages; the Storybook toolbar drives it.\n */\nexport function applyTheme3PillRadius(root: HTMLElement, active = true, targetElement?: HTMLElement[]): void {\n root.style.removeProperty(\"--lsg-theme-radius\");\n\n if (!active) {\n return;\n }\n\n // Reads the cascade with the override gone, so this is the injected value.\n const radius = getComputedStyle(root).getPropertyValue(\"--lsg-theme-radius\").trim();\n\n if (radius === AEM_PILL_RADIUS) {\n // root.style.setProperty(\"--lsg-theme-radius\", THEME_3_PILL_RADIUS);\n // foreach each element in the targetElement array, set its --lsg-theme-radius to THEME_3_PILL_RADIUS.\n (targetElement ?? [root.querySelector(\"header\")].filter(Boolean) as HTMLElement[]).forEach(element => {\n element.style.setProperty(\"--lsg-theme-radius\", THEME_3_PILL_RADIUS);\n });\n\n }\n}\n","import { bootLsgClientlib } from \"../../components/lsg/lsg-clientlib-runtime\";\nimport { bootLsgCarousel } from \"../../components/lsg/LsgCarousel/bootLsgCarousel\";\nimport { applyTheme3PillRadius } from \"./applyTheme3PillRadius\";\n\nbootLsgClientlib(\"theme-3\");\n\n// Deliberately synchronous rather than deferred to bootLsgClientlib's\n// DOMContentLoaded init: the head's injected style block is already parsed by the\n// time this footer script runs, so the radius is readable now and waiting would\n// only widen the window in which the page shows the un-overridden 25px.\napplyTheme3PillRadius(document.documentElement, true, [document.querySelector(\"header\")].filter(Boolean) as HTMLElement[]);\n\nbootLsgCarousel();"],"names":["isNumber","EmblaCarouselFade","MOBILE_MEDIA_QUERY"],"mappings":"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","x_google_ignoreList":[0,2,3]}
|
|
1
|
+
{"version":3,"file":"theme-3.js","sources":["../../node_modules/tslib/tslib.es6.js","../../../src/utils/lsgIconPaths.ts","../../node_modules/embla-carousel/esm/embla-carousel.esm.js","../../node_modules/embla-carousel-fade/esm/embla-carousel-fade.esm.js","../../../src/components/lsg/LsgHero/LsgHeroController.ts","../../../src/components/lsg/lsg-clientlib-runtime.ts","../../../src/components/lsg/LsgCarousel/LsgCarouselController.ts","../../../src/components/lsg/LsgCarousel/bootLsgCarousel.ts","../../../src/themes/theme-3/applyTheme3PillRadius.ts","../../../src/themes/theme-3/theme-clientlib.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","export type LsgIconName =\n | \"bars\"\n | \"chevronLeft\"\n | \"chevronRight\"\n | \"close\"\n | \"globe\"\n | \"home\"\n | \"search\";\n\nexport const LSG_ICON_PATHS: Record<LsgIconName, string> = {\n bars:\n \"M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z\",\n chevronLeft:\n \"M169.4 297.4C156.9 309.9 156.9 330.2 169.4 342.7L361.4 534.7C373.9 547.2 394.2 547.2 406.7 534.7C419.2 522.2 419.2 501.9 406.7 489.4L237.3 320L406.6 150.6C419.1 138.1 419.1 117.8 406.6 105.3C394.1 92.8 373.8 92.8 361.3 105.3L169.3 297.3z\",\n chevronRight:\n \"M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z\",\n close:\n \"M504.6 148.5C515.9 134.9 514.1 114.7 500.5 103.4C486.9 92.1 466.7 93.9 455.4 107.5L320 270L184.6 107.5C173.3 93.9 153.1 92.1 139.5 103.4C125.9 114.7 124.1 134.9 135.4 148.5L278.3 320L135.4 491.5C124.1 505.1 125.9 525.3 139.5 536.6C153.1 547.9 173.3 546.1 184.6 532.5L320 370L455.4 532.5C466.7 546.1 486.9 547.9 500.5 536.6C514.1 525.3 515.9 505.1 504.6 491.5L361.7 320L504.6 148.5z\",\n globe:\n \"M367.2 477C345.7 520.7 325.8 528 320 528C314.2 528 294.3 520.7 272.8 477C255.8 442.5 243.6 395.4 240.7 344L399.3 344C396.3 395.5 384.1 442.6 367.2 477zM399.3 296L240.7 296C243.7 244.5 255.9 197.4 272.8 163C294.3 119.3 314.2 112 320 112C325.8 112 345.7 119.3 367.2 163C384.2 197.5 396.4 244.6 399.3 296zM447.4 344L526.6 344C518 418.6 469.9 481.3 403.8 510.4C427.8 467.6 444.1 408 447.4 344zM526.6 296L447.4 296C444.1 232 427.8 172.4 403.8 129.6C469.9 158.8 518 221.4 526.6 296zM192.6 296L113.4 296C122 221.4 170.1 158.7 236.2 129.6C212.2 172.4 195.9 232 192.6 296zM113.4 344L192.6 344C195.9 408 212.2 467.6 236.2 510.4C170.1 481.2 122 418.6 113.4 344zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576z\",\n home: \"M96 320L320 128L544 320H480V528H352V384H288V528H160V320H96z\",\n search:\n \"M480 272C480 317.9 465.1 360.3 440 394.7L566.6 521.4C579.1 533.9 579.1 554.2 566.6 566.7C554.1 579.2 533.8 579.2 521.3 566.7L394.7 440C360.3 465.1 317.9 480 272 480C157.1 480 64 386.9 64 272C64 157.1 157.1 64 272 64C386.9 64 480 157.1 480 272zM272 416C351.5 416 416 351.5 416 272C416 192.5 351.5 128 272 128C192.5 128 128 192.5 128 272C128 351.5 192.5 416 272 416z\",\n};\n\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\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 listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\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 function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\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 function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\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 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 scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\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(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\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 function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\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 return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\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 if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\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 function shouldConstrain() {\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 function constrain(pointerDown) {\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 target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\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 function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\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 const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\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 if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\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 return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\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 mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = 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 function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.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 }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\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 watchFocus\n } = options;\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 axis = Axis(scrollAxis, direction);\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 {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\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 watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\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 {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\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 function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\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 activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","function clampNumber(number, min, max) {\n return Math.min(Math.max(number, min), max);\n}\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction Fade(userOptions = {}) {\n const fullOpacity = 1;\n const noOpacity = 0;\n const fadeFriction = 0.68;\n let emblaApi;\n let opacities = [];\n let fadeToNextDistance;\n let distanceFromPointerDown = 0;\n let fadeVelocity = 0;\n let progress = 0;\n let shouldFadePair = false;\n let defaultSettledBehaviour;\n let defaultProgressBehaviour;\n function init(emblaApiInstance) {\n emblaApi = emblaApiInstance;\n const selectedSnap = emblaApi.selectedScrollSnap();\n const {\n scrollBody,\n containerRect,\n axis\n } = emblaApi.internalEngine();\n const containerSize = axis.measureSize(containerRect);\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500);\n shouldFadePair = false;\n opacities = emblaApi.scrollSnapList().map((_, index) => index === selectedSnap ? fullOpacity : noOpacity);\n defaultSettledBehaviour = scrollBody.settled;\n defaultProgressBehaviour = emblaApi.scrollProgress;\n scrollBody.settled = settled;\n emblaApi.scrollProgress = scrollProgress;\n emblaApi.on('select', select).on('slideFocus', fadeToSelectedSnapInstantly).on('pointerDown', pointerDown).on('pointerUp', pointerUp);\n disableScroll();\n fadeToSelectedSnapInstantly();\n }\n function destroy() {\n const {\n scrollBody\n } = emblaApi.internalEngine();\n scrollBody.settled = defaultSettledBehaviour;\n emblaApi.scrollProgress = defaultProgressBehaviour;\n emblaApi.off('select', select).off('slideFocus', fadeToSelectedSnapInstantly).off('pointerDown', pointerDown).off('pointerUp', pointerUp);\n emblaApi.slideNodes().forEach(slideNode => {\n const slideStyle = slideNode.style;\n slideStyle.opacity = '';\n slideStyle.transform = '';\n slideStyle.pointerEvents = '';\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style');\n });\n }\n function fadeToSelectedSnapInstantly() {\n const selectedSnap = emblaApi.selectedScrollSnap();\n setOpacities(selectedSnap, fullOpacity);\n }\n function pointerUp() {\n shouldFadePair = false;\n }\n function pointerDown() {\n shouldFadePair = false;\n distanceFromPointerDown = 0;\n fadeVelocity = 0;\n }\n function select() {\n const duration = emblaApi.internalEngine().scrollBody.duration();\n fadeVelocity = duration ? 0 : fullOpacity;\n shouldFadePair = true;\n if (!duration) fadeToSelectedSnapInstantly();\n }\n function getSlideTransform(position) {\n const {\n axis\n } = emblaApi.internalEngine();\n const translateAxis = axis.scroll.toUpperCase();\n return `translate${translateAxis}(${axis.direction(position)}px)`;\n }\n function disableScroll() {\n const {\n translate,\n slideLooper\n } = emblaApi.internalEngine();\n translate.clear();\n translate.toggleActive(false);\n slideLooper.loopPoints.forEach(({\n translate\n }) => {\n translate.clear();\n translate.toggleActive(false);\n });\n }\n function lockExcessiveScroll(fadeIndex) {\n const {\n scrollSnaps,\n location,\n target\n } = emblaApi.internalEngine();\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return;\n location.set(scrollSnaps[fadeIndex]);\n target.set(location);\n }\n function setOpacities(fadeIndex, velocity) {\n const scrollSnaps = emblaApi.scrollSnapList();\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity);\n const currentOpacity = opacities[indexA];\n const isFadeIndex = indexA === fadeIndex;\n const nextOpacity = isFadeIndex ? currentOpacity + absVelocity : currentOpacity - absVelocity;\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity);\n opacities[indexA] = clampedOpacity;\n const fadePair = isFadeIndex && shouldFadePair;\n const indexB = emblaApi.previousScrollSnap();\n if (fadePair) opacities[indexB] = 1 - clampedOpacity;\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity);\n setOpacity(indexA);\n });\n }\n function setOpacity(index) {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index];\n const {\n scrollSnaps,\n containerRect\n } = emblaApi.internalEngine();\n const opacity = opacities[index];\n slidesInSnap.forEach(slideIndex => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style;\n const roundedOpacity = parseFloat(opacity.toFixed(2));\n const hasOpacity = roundedOpacity > noOpacity;\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2;\n const transform = getSlideTransform(position);\n if (hasOpacity) slideStyle.transform = transform;\n slideStyle.opacity = roundedOpacity.toString();\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none';\n if (!hasOpacity) slideStyle.transform = transform;\n });\n }\n function setProgress(fadeIndex, opacity) {\n const {\n index,\n dragHandler,\n scrollSnaps\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const snapFraction = 1 / (scrollSnaps.length - 1);\n let indexA = fadeIndex;\n let indexB = pointerDown ? emblaApi.selectedScrollSnap() : emblaApi.previousScrollSnap();\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1;\n indexA = indexB;\n indexB = index.clone().set(indexB).add(reverseSign).get();\n }\n const currentPosition = indexB * snapFraction;\n const diffPosition = (indexA - indexB) * snapFraction;\n progress = currentPosition + diffPosition * opacity;\n }\n function getFadeIndex() {\n const {\n dragHandler,\n index,\n scrollBody\n } = emblaApi.internalEngine();\n const selectedSnap = emblaApi.selectedScrollSnap();\n if (!dragHandler.pointerDown()) return selectedSnap;\n const directionSign = Math.sign(scrollBody.velocity());\n const distanceSign = Math.sign(distanceFromPointerDown);\n const nextSnap = index.clone().set(selectedSnap).add(directionSign * -1).get();\n if (!directionSign || !distanceSign) return null;\n return distanceSign === directionSign ? nextSnap : selectedSnap;\n }\n function fade(emblaApi) {\n const {\n dragHandler,\n scrollBody\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const velocity = scrollBody.velocity();\n const duration = scrollBody.duration();\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n if (pointerDown) {\n if (!velocity) return;\n distanceFromPointerDown += velocity;\n fadeVelocity = Math.abs(velocity / fadeToNextDistance);\n lockExcessiveScroll(fadeIndex);\n }\n if (!pointerDown) {\n if (!duration || noFadeIndex) return;\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration;\n fadeVelocity *= fadeFriction;\n }\n if (noFadeIndex) return;\n setOpacities(fadeIndex, fadeVelocity);\n }\n function settled() {\n const {\n target,\n location\n } = emblaApi.internalEngine();\n const diffToTarget = target.get() - location.get();\n const notReachedTarget = Math.abs(diffToTarget) >= 1;\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n fade(emblaApi);\n if (noFadeIndex || notReachedTarget) return false;\n return opacities[fadeIndex] > 0.999;\n }\n function scrollProgress() {\n return progress;\n }\n const self = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n };\n return self;\n}\nFade.globalOptions = undefined;\n\nexport { Fade as default };\n//# sourceMappingURL=embla-carousel-fade.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\nimport EmblaCarouselFade from \"embla-carousel-fade\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroController — shared vanilla JS carousel controller\n// ─────────────────────────────────────────────────────────────────────────────\n//\n// Single source of truth for carousel behaviour. Used by:\n// 1. The React LsgHero component (via useEffect + refs)\n// 2. The AEM clientlib initHero function (directly on server-rendered DOM)\n//\n// This means carousel logic is written once and behaves identically in both\n// Storybook and AEM — no React-specific wrappers, no divergence.\n//\n// Usage:\n// const controller = new LsgHeroController(viewportEl, elements, options);\n// // later when unmounting:\n// controller.destroy();\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroControllerTransition = \"slide\" | \"fade\";\n\nexport interface LsgHeroControllerOptions {\n /** Slide transition style. Defaults to \"slide\". */\n transition?: LsgHeroControllerTransition;\n /** Enable autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n}\n\nexport interface LsgHeroControllerElements {\n /** Previous-slide button. */\n prevBtn?: HTMLElement | null;\n /** Next-slide button. */\n nextBtn?: HTMLElement | null;\n /** Scroll-down trigger button. */\n scrollDownBtn?: HTMLElement | null;\n /** Element to scroll into view when scroll-down is triggered. */\n scrollDownTarget?: HTMLElement | null;\n}\n\nexport class LsgHeroController {\n private embla: EmblaCarouselType | null = null;\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private contentObserver: ResizeObserver | null = null;\n private rafId: ReturnType<typeof requestAnimationFrame> | null = null;\n private readonly opts: Required<LsgHeroControllerOptions>;\n private readonly els: LsgHeroControllerElements;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgHeroControllerElements = {},\n options: LsgHeroControllerOptions = {}\n ) {\n this.opts = {\n transition: options.transition ?? \"slide\",\n autoplay: options.autoplay ?? true,\n autoplayInterval: options.autoplayInterval ?? 5000,\n };\n this.els = elements;\n this.mount(viewport);\n }\n\n private mount(viewport: HTMLElement): void {\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.addEventListener(\"click\", this.handleScrollDown);\n\n // First frame lets React's initial paint settle; second guarantees that\n // async-injected stylesheets (e.g. --lsg-hero-axis) have been computed.\n this.rafId = requestAnimationFrame(() => {\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n if (!viewport.isConnected) return;\n\n const section = viewport.closest<HTMLElement>(\"[data-lsg-is='hero']\");\n const axis: \"x\" | \"y\" =\n section && getComputedStyle(section).getPropertyValue(\"--lsg-hero-axis\").trim() === \"y\"\n ? \"y\"\n : \"x\";\n\n const plugins = this.opts.transition === \"fade\" ? [EmblaCarouselFade()] : [];\n this.embla = EmblaCarousel(viewport, { loop: true, axis }, plugins);\n\n if (this.opts.autoplay) {\n this.startAutoplay();\n this.embla.on(\"pointerDown\", this.stopAutoplay);\n this.embla.on(\"pointerUp\", this.startAutoplay);\n }\n\n // Sync the first slide's content-wrapper height to a CSS custom property\n // on the section root so the controls column can match it dynamically.\n const contentWrapper = section?.querySelector<HTMLElement>(\".lsg-hero-card__content-wrapper\");\n if (section && contentWrapper && typeof ResizeObserver !== \"undefined\") {\n const setHeight = (el: Element): void => {\n (section as HTMLElement).style.setProperty(\n \"--lsg-hero-content-height\",\n `${(el as HTMLElement).offsetHeight}px`\n );\n };\n setHeight(contentWrapper);\n this.contentObserver = new ResizeObserver((entries) => {\n setHeight(entries[0].target);\n });\n this.contentObserver.observe(contentWrapper);\n }\n\n // For vertical carousels the section height (100svh) cascades from a\n // useEffect-set data-lsg-theme attribute, which may land one frame after\n // this RAF. Re-measure so Embla has the correct slide dimensions.\n if (axis === \"y\") {\n requestAnimationFrame(() => {\n if (viewport.isConnected) this.embla?.reInit();\n });\n }\n });\n });\n }\n\n readonly scrollPrev = (): void => {\n this.embla?.scrollPrev();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n readonly scrollNext = (): void => {\n this.embla?.scrollNext();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n private readonly handleScrollDown = (): void => {\n this.els.scrollDownTarget?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n /** Start the autoplay interval (resets any existing timer). */\n readonly startAutoplay = (): void => {\n this.stopAutoplay();\n this.autoplayTimer = setInterval(this.scrollNext, this.opts.autoplayInterval);\n };\n\n /** Clear the autoplay interval. */\n readonly stopAutoplay = (): void => {\n if (this.autoplayTimer !== null) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n };\n\n /** Direct access to the underlying Embla instance for advanced usage. */\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n /** Tear down event listeners, autoplay, and the Embla instance. */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.stopAutoplay();\n this.contentObserver?.disconnect();\n this.contentObserver = null;\n if (this.embla) {\n this.embla.off(\"pointerDown\", this.stopAutoplay);\n this.embla.off(\"pointerUp\", this.startAutoplay);\n this.embla.destroy();\n this.embla = null;\n }\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.removeEventListener(\"click\", this.handleScrollDown);\n }\n}\n","import { LSG_ICON_PATHS } from \"../../utils/lsgIconPaths\";\nimport type { LsgIconName } from \"../../utils/lsgIconPaths\";\nimport { LsgHeroController } from \"./LsgHero/LsgHeroController\";\n\nconst LANGUAGE_SWITCHER_SELECTOR = \"[data-lsg-lang-switcher]\";\nconst SEARCH_TRIGGER_SELECTOR = \"[data-lsg-search-trigger]\";\nconst SEARCH_OVERLAY_SELECTOR = \"[data-lsg-search-overlay]\";\nconst MENU_TRIGGER_SELECTOR = \"[data-lsg-menu-trigger], .lsg-header__menu-trigger\";\nconst MOBILE_MEDIA_QUERY = \"(max-width: 767px)\";\n\nconst createIconSvg = (name: LsgIconName, className: string): string =>\n `<svg class=\"${className}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" aria-hidden=\"true\" focusable=\"false\"><path d=\"${LSG_ICON_PATHS[name]}\" /></svg>`;\n\nconst hasSvgIcon = (element: Element | null): boolean => Boolean(element?.querySelector(\"svg\"));\n\ninterface NavNode {\n label: string;\n href: string;\n current: boolean;\n children: NavNode[];\n}\n\nfunction buildNavTree(header: HTMLElement): NavNode[] {\n const megaPanel = header.querySelector<HTMLElement>(\".lsg-header__mega-panel\");\n if (megaPanel) {\n const topCol = megaPanel.querySelector<HTMLUListElement>(\n \".lsg-header__mega-inner > ul.lsg-header__mega-column\"\n );\n if (topCol) return parseMegaColumn(topCol);\n }\n\n const navList = header.querySelector<HTMLUListElement>(\".lsg-header__nav .lsg-nav__list\");\n if (navList) return parseNavList(navList);\n return [];\n}\n\nfunction parseMegaColumn(ul: Element): NavNode[] {\n return Array.from(ul.children).map((li) => {\n const link = li.querySelector<HTMLAnchorElement>(\":scope > a.lsg-header__mega-link\");\n const childUl = li.querySelector<HTMLUListElement>(\":scope > ul.lsg-header__mega-column\");\n let label = \"\";\n\n if (link) {\n const textSpan = link.querySelector<HTMLElement>(\n 'span:not([class*=\"lsg-header__icon\"])'\n );\n label = (textSpan ?? link).textContent?.trim() ?? \"\";\n }\n\n return {\n label,\n href: link?.getAttribute(\"href\") ?? \"#\",\n current: (li as HTMLElement).classList.contains(\"lsg-header__mega-item--active\"),\n children: childUl ? parseMegaColumn(childUl) : [],\n };\n });\n}\n\nfunction parseNavList(ul: Element): NavNode[] {\n return Array.from(ul.children).map((li) => {\n const link = li.querySelector<HTMLAnchorElement>(\":scope > a.lsg-nav__link\");\n const dropdown = li.querySelector<HTMLUListElement>(\":scope > ul.lsg-nav__dropdown\");\n const p = link?.querySelector(\"p\");\n\n return {\n label: (p ?? link)?.textContent?.trim() ?? \"\",\n href: link?.getAttribute(\"href\") ?? \"#\",\n current: (li as HTMLElement).classList.contains(\"lsg-nav__item--current\"),\n children: dropdown ? parseNavList(dropdown) : [],\n };\n });\n}\n\nfunction renderMobilePanel(\n panel: HTMLElement,\n nodes: NavNode[],\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): void {\n panel.innerHTML = \"\";\n\n if (path.length > 0) {\n panel.appendChild(renderMobileBack(path, onDrill));\n }\n\n panel.appendChild(renderMobileList(nodes, path, onDrill));\n}\n\nfunction renderMobileBack(\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): HTMLElement {\n const nav = document.createElement(\"nav\");\n nav.className = \"lsg-header__mobile-back\";\n nav.setAttribute(\"aria-label\", \"Menu navigation\");\n\n const parent = path[path.length - 1];\n const button = document.createElement(\"button\");\n button.type = \"button\";\n button.className = \"lsg-header__mobile-back-button\";\n button.setAttribute(\"aria-label\", `Back to ${parent.label}`);\n button.innerHTML =\n createIconSvg(\"chevronRight\", \"lsg-header__icon lsg-header__icon--chevronRight\") +\n `<span>Back to ${escHtml(parent.label)}</span>`;\n button.addEventListener(\"click\", () => onDrill(path.slice(0, -1)));\n nav.appendChild(button);\n\n return nav;\n}\n\nfunction renderMobileList(\n nodes: NavNode[],\n path: NavNode[],\n onDrill: (newPath: NavNode[]) => void\n): HTMLUListElement {\n const ul = document.createElement(\"ul\");\n ul.className = \"lsg-header__mobile-list\";\n ul.setAttribute(\"role\", \"list\");\n\n nodes.forEach((node) => {\n const hasChildren = node.children.length > 0;\n const li = document.createElement(\"li\");\n li.className = [\n \"lsg-header__mobile-item\",\n hasChildren ? \"lsg-header__mobile-item--has-children\" : \"\",\n node.current ? \"lsg-header__mobile-item--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n\n const a = document.createElement(\"a\");\n a.className = \"lsg-header__mobile-link\";\n a.href = node.href;\n a.innerHTML =\n `<span>${escHtml(node.label)}</span>` +\n (hasChildren\n ? createIconSvg(\"chevronRight\", \"lsg-header__icon lsg-header__icon--chevronRight\")\n : \"\");\n\n if (hasChildren) {\n a.addEventListener(\"click\", (event) => {\n event.preventDefault();\n onDrill([...path, node]);\n });\n }\n\n li.appendChild(a);\n ul.appendChild(li);\n });\n\n return ul;\n}\n\nfunction escHtml(str: string): string {\n return str\n .replace(/&/g, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\");\n}\n\nfunction hydrateStaticIcons(root: Window): void {\n root.document.querySelectorAll<HTMLElement>(\".lsg-nav__chevron\").forEach((chevron) => {\n if (!hasSvgIcon(chevron)) {\n chevron.innerHTML = createIconSvg(\"chevronRight\", \"lsg-nav__chevron-svg\");\n }\n });\n\n root.document\n .querySelectorAll<HTMLButtonElement>(\".lsg-lang-switcher__trigger\")\n .forEach((trigger) => {\n if (!trigger.querySelector(\".lsg-lang-switcher__globe\")) {\n trigger.insertAdjacentHTML(\n \"afterbegin\",\n createIconSvg(\"globe\", \"lsg-lang-switcher__globe\")\n );\n }\n });\n}\n\nfunction initLangSwitchers(root: Window): void {\n const switchers = root.document.querySelectorAll<HTMLElement>(LANGUAGE_SWITCHER_SELECTOR);\n\n switchers.forEach((switcher) => {\n const trigger = switcher.querySelector<HTMLButtonElement>(\".lsg-lang-switcher__trigger\");\n const dropdown = switcher.querySelector<HTMLElement>(\".lsg-lang-switcher__dropdown\");\n\n if (!trigger || !dropdown) {\n return;\n }\n\n const open = (): void => {\n trigger.setAttribute(\"aria-expanded\", \"true\");\n dropdown.removeAttribute(\"hidden\");\n };\n\n const close = (): void => {\n trigger.setAttribute(\"aria-expanded\", \"false\");\n dropdown.setAttribute(\"hidden\", \"\");\n };\n\n close();\n\n trigger.addEventListener(\"click\", () => {\n const expanded = trigger.getAttribute(\"aria-expanded\") === \"true\";\n if (expanded) {\n close();\n } else {\n open();\n }\n });\n\n root.document.addEventListener(\"click\", (event: MouseEvent) => {\n if (!switcher.contains(event.target as Node)) {\n close();\n }\n });\n\n root.document.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n close();\n }\n });\n });\n}\n\nfunction initSearchOverlay(root: Window): void {\n const triggers = root.document.querySelectorAll<HTMLButtonElement>(SEARCH_TRIGGER_SELECTOR);\n const overlays = root.document.querySelectorAll<HTMLElement>(SEARCH_OVERLAY_SELECTOR);\n\n if (!triggers.length || !overlays.length) {\n return;\n }\n\n const openOverlay = (overlay: HTMLElement): void => {\n overlay.classList.add(\"lsg-search-overlay--open\");\n const input = overlay.querySelector<HTMLInputElement>(\".lsg-search-overlay__input\");\n input?.focus();\n };\n\n const closeOverlay = (overlay: HTMLElement): void => {\n overlay.classList.remove(\"lsg-search-overlay--open\");\n };\n\n triggers.forEach((trigger) => {\n trigger.addEventListener(\"click\", () => {\n const targetId = trigger.getAttribute(\"aria-controls\");\n const target = targetId\n ? (root.document.getElementById(targetId) as HTMLElement | null)\n : overlays[0];\n\n if (target) {\n openOverlay(target as HTMLElement);\n }\n });\n });\n\n overlays.forEach((overlay) => {\n const closeBtn = overlay.querySelector<HTMLButtonElement>(\".lsg-search-overlay__close\");\n closeBtn?.addEventListener(\"click\", () => closeOverlay(overlay));\n\n const backdrop = overlay.querySelector<HTMLElement>(\".lsg-search-overlay__backdrop\");\n backdrop?.addEventListener(\"click\", () => closeOverlay(overlay));\n });\n\n root.document.addEventListener(\"mousedown\", (event: MouseEvent) => {\n overlays.forEach((overlay) => {\n if (!overlay.classList.contains(\"lsg-search-overlay--open\")) {\n return;\n }\n\n const panel = overlay.querySelector<HTMLElement>(\".lsg-search-overlay__panel\");\n const clickedTrigger = Array.from(triggers).some((trigger) =>\n trigger.contains(event.target as Node)\n );\n\n if (!clickedTrigger && panel && !panel.contains(event.target as Node)) {\n closeOverlay(overlay);\n }\n });\n });\n\n root.document.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n overlays.forEach((overlay) => closeOverlay(overlay));\n }\n });\n}\n\nfunction setMenuTriggerIcon(trigger: HTMLButtonElement, open: boolean): void {\n const icon = trigger.querySelector<HTMLElement>(\".lsg-header__icon\");\n const path = icon?.querySelector<SVGPathElement>(\"path\");\n\n if (path) {\n path.setAttribute(\"d\", open ? LSG_ICON_PATHS.close : LSG_ICON_PATHS.bars);\n } else if (icon) {\n icon.innerHTML = createIconSvg(open ? \"close\" : \"bars\", \"lsg-header__icon-svg\");\n }\n\n const label = Array.from(trigger.children).find(\n (child) => !child.classList.contains(\"lsg-header__icon\")\n );\n if (label) {\n label.textContent = open ? \"CLOSE\" : \"MENU\";\n }\n}\n\nfunction clearMegaMenuBranch(scope: ParentNode): void {\n if (scope instanceof HTMLElement) {\n scope.classList.remove(\"lsg-header__mega-item--open\");\n scope.classList.remove(\"lsg-header__mega-column--open\");\n }\n\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--open\").forEach((item) => {\n item.classList.remove(\"lsg-header__mega-item--open\");\n });\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-column--open\").forEach((column) => {\n column.classList.remove(\"lsg-header__mega-column--open\");\n });\n}\n\nfunction activateMegaMenuItem(item: HTMLElement): void {\n const parentColumn = item.parentElement;\n\n if (parentColumn) {\n Array.from(parentColumn.children).forEach((openItem) => {\n if (openItem !== item) {\n clearMegaMenuBranch(openItem as HTMLElement);\n }\n });\n }\n\n item.classList.add(\"lsg-header__mega-item--open\");\n item\n .querySelector<HTMLElement>(\":scope > .lsg-header__mega-column\")\n ?.classList.add(\"lsg-header__mega-column--open\");\n}\n\nfunction ensureMobileDropdownMarkup(header: HTMLElement, mobilePanel: HTMLElement): void {\n if (mobilePanel.querySelector(\".lsg-nav--dropdown\")) {\n return;\n }\n\n const desktopDropdown = header.querySelector<HTMLElement>(\n \".lsg-header__nav .lsg-nav--dropdown\"\n );\n\n if (desktopDropdown) {\n mobilePanel.appendChild(desktopDropdown.cloneNode(true));\n }\n}\n\nfunction initHeaders(root: Window): void {\n const isMobile = (): boolean => root.matchMedia(MOBILE_MEDIA_QUERY).matches;\n\n root.document.querySelectorAll<HTMLElement>(\".lsg-header\").forEach((header) => {\n const isDropdownHeader = header.classList.contains(\"lsg-header--dropdown\");\n const explicitMenuTriggers = header.querySelectorAll<HTMLButtonElement>(MENU_TRIGGER_SELECTOR);\n const inferredMobileMenuTriggers = header.querySelectorAll<HTMLButtonElement>(\n \".lsg-header__mobile-actions .lsg-header__icon-button[aria-expanded]\"\n );\n const menuTriggers = Array.from(\n new Set([...Array.from(explicitMenuTriggers), ...Array.from(inferredMobileMenuTriggers)])\n );\n\n const mobilePanel = header.querySelector<HTMLElement>(\n \"#lsg-mobile-panel, .lsg-header__mobile-panel\"\n );\n\n if (isDropdownHeader && mobilePanel) {\n ensureMobileDropdownMarkup(header, mobilePanel);\n }\n\n const navTree = mobilePanel ? buildNavTree(header) : [];\n let mobileActivePath: NavNode[] = [];\n\n const setMobileLevel = (n: number): void => {\n header.className =\n header.className.replace(/lsg-header--mobile-level-\\d+/g, \"\").trim() +\n ` lsg-header--mobile-level-${n}`;\n };\n\n const drillTo = (newPath: NavNode[]): void => {\n if (!mobilePanel) {\n return;\n }\n\n mobileActivePath = newPath;\n const nodes =\n newPath.length === 0 ? navTree : newPath[newPath.length - 1].children;\n renderMobilePanel(mobilePanel, nodes, newPath, drillTo);\n setMobileLevel(newPath.length + 1);\n };\n\n const setMenuOpen = (open: boolean): void => {\n header.classList.toggle(\"lsg-header--menu-open\", open);\n\n if (open) {\n if (mobilePanel) {\n mobilePanel.removeAttribute(\"hidden\");\n\n if (isMobile() && isDropdownHeader) {\n setMobileLevel(1);\n } else {\n mobileActivePath = [];\n drillTo([]);\n }\n }\n } else {\n clearMegaMenuBranch(header);\n if (mobilePanel) {\n mobilePanel.setAttribute(\"hidden\", \"\");\n mobileActivePath = [];\n setMobileLevel(0);\n }\n }\n\n menuTriggers.forEach((trigger) => {\n trigger.setAttribute(\"aria-expanded\", String(open));\n trigger.setAttribute(\"aria-label\", open ? \"Close menu\" : \"Open menu\");\n setMenuTriggerIcon(trigger, open);\n });\n };\n\n const closeDropdownItems = (scope: ParentNode = header): void => {\n scope.querySelectorAll<HTMLElement>(\".lsg-nav__item--open\").forEach((openItem) => {\n openItem.classList.remove(\"lsg-nav__item--open\");\n openItem\n .querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\")\n ?.setAttribute(\"aria-expanded\", \"false\");\n });\n };\n\n setMenuOpen(false);\n\n menuTriggers.forEach((trigger) => {\n trigger.addEventListener(\"click\", () => {\n setMenuOpen(!header.classList.contains(\"lsg-header--menu-open\"));\n });\n });\n\n header.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--has-children\").forEach((item) => {\n item.addEventListener(\"mouseenter\", () => {\n if (!isMobile()) {\n activateMegaMenuItem(item);\n }\n });\n\n item.addEventListener(\"focusin\", () => {\n if (!isMobile()) {\n activateMegaMenuItem(item);\n }\n });\n });\n\n header\n .querySelectorAll<HTMLElement>(\".lsg-nav--dropdown .lsg-nav__item--has-children\")\n .forEach((item) => {\n const link = item.querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\");\n\n if (!link) {\n return;\n }\n\n const setItemOpen = (open: boolean): void => {\n item.parentElement\n ?.querySelectorAll<HTMLElement>(\":scope > .lsg-nav__item--open\")\n .forEach((openItem) => {\n if (openItem !== item) {\n openItem.classList.remove(\"lsg-nav__item--open\");\n openItem\n .querySelector<HTMLAnchorElement>(\":scope > .lsg-nav__link\")\n ?.setAttribute(\"aria-expanded\", \"false\");\n }\n });\n item.classList.toggle(\"lsg-nav__item--open\", open);\n link.setAttribute(\"aria-expanded\", String(open));\n };\n\n item.addEventListener(\"mouseenter\", () => {\n if (!isMobile()) {\n setItemOpen(true);\n }\n });\n\n item.addEventListener(\"mouseleave\", () => {\n if (!isMobile()) {\n setItemOpen(false);\n }\n });\n\n link.addEventListener(\"click\", (event) => {\n const isMobilePanelLink = Boolean(link.closest(\".lsg-header__mobile-panel\"));\n\n if (!isMobile() && !isMobilePanelLink) {\n return;\n }\n\n event.preventDefault();\n setItemOpen(!item.classList.contains(\"lsg-nav__item--open\"));\n });\n });\n\n root.document.addEventListener(\"mousedown\", (event: MouseEvent) => {\n if (!header.contains(event.target as Node)) {\n setMenuOpen(false);\n closeDropdownItems();\n }\n });\n });\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Hero\n// ─────────────────────────────────────────────────────────────────────────────\n\nfunction initHero(root: Window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-is='hero']\").forEach((hero) => {\n const isCarousel = hero.dataset.lsgCarousel === \"true\";\n const transition = (hero.dataset.lsgTransition ?? \"slide\") as \"slide\" | \"fade\";\n const showArrows = hero.dataset.lsgArrows === \"true\";\n\n const viewport = hero.querySelector<HTMLElement>(\".lsg-hero__viewport\");\n if (!viewport) return;\n\n new LsgHeroController(\n viewport,\n {\n prevBtn: showArrows ? hero.querySelector<HTMLElement>(\".lsg-hero__prev\") : undefined,\n nextBtn: showArrows ? hero.querySelector<HTMLElement>(\".lsg-hero__next\") : undefined,\n scrollDownBtn: hero.querySelector<HTMLElement>(\".lsg-hero__scroll-down-btn\"),\n // AEM wraps the section in a decoration div; fall back to the parent's next sibling.\n scrollDownTarget: (hero.nextElementSibling ?? hero.parentElement?.nextElementSibling) as HTMLElement | null,\n },\n { transition, autoplay: isCarousel },\n );\n\n // DAM video fade-in on canplay\n hero.querySelectorAll<HTMLVideoElement>(\".lsg-hero__video\").forEach((video) => {\n video.addEventListener(\"canplay\", () => {\n video.classList.add(\"lsg-hero__video--ready\");\n }, { once: true });\n });\n });\n}\n\nexport function bootLsgAccordion(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-accordion]\").forEach((accordion) => {\n const allowMultiple = accordion.hasAttribute(\"data-lsg-accordion-multi\");\n\n accordion.querySelectorAll<HTMLButtonElement>(\"[data-lsg-accordion-header]\").forEach((header) => {\n header.addEventListener(\"click\", () => {\n const item = header.closest<HTMLElement>(\"[data-lsg-accordion-item]\");\n if (!item) return;\n\n const panelId = header.getAttribute(\"aria-controls\");\n const panel = panelId ? root.document.getElementById(panelId) : null;\n if (!panel) return;\n\n const isOpen = item.classList.contains(\"lsg-accordion__item--open\");\n\n if (!allowMultiple) {\n accordion.querySelectorAll<HTMLElement>(\"[data-lsg-accordion-item]\").forEach((otherItem) => {\n if (otherItem === item) return;\n const otherHeader = otherItem.querySelector<HTMLButtonElement>(\"[data-lsg-accordion-header]\");\n const otherPanelId = otherHeader?.getAttribute(\"aria-controls\");\n const otherPanel = otherPanelId ? root.document.getElementById(otherPanelId) : null;\n otherItem.classList.remove(\"lsg-accordion__item--open\");\n otherPanel?.classList.remove(\"lsg-accordion__panel--open\");\n otherHeader?.setAttribute(\"aria-expanded\", \"false\");\n otherHeader?.querySelector(\"[data-lsg-accordion-icon]\")?.classList.remove(\"lsg-accordion__icon--open\");\n });\n }\n\n if (!isOpen) {\n item.classList.add(\"lsg-accordion__item--open\");\n panel.classList.add(\"lsg-accordion__panel--open\");\n header.setAttribute(\"aria-expanded\", \"true\");\n header.querySelector(\"[data-lsg-accordion-icon]\")?.classList.add(\"lsg-accordion__icon--open\");\n } else if (allowMultiple) {\n item.classList.remove(\"lsg-accordion__item--open\");\n panel.classList.remove(\"lsg-accordion__panel--open\");\n header.setAttribute(\"aria-expanded\", \"false\");\n header.querySelector(\"[data-lsg-accordion-icon]\")?.classList.remove(\"lsg-accordion__icon--open\");\n }\n });\n });\n });\n}\n\nexport function bootLsgTabs(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-tabs]\").forEach((tabs) => {\n // Author edit mode: AEM emits data-panelcontainer, and core's panel selector owns which\n // panel is shown (it toggles cmp-tabs__tabpanel--active). The theme clientlib loads in\n // edit mode too, so without this guard the two would fight over the active panel.\n // LsgTabs.scss has a matching [data-panelcontainer] block for the same reason.\n if (tabs.hasAttribute(\"data-panelcontainer\")) return;\n\n const tabStrip = tabs.querySelector<HTMLElement>(\".lsg-tabs__tablist\");\n const tabList = Array.from(tabs.querySelectorAll<HTMLElement>(\"[data-lsg-tabs-tab]\"));\n const panels = Array.from(tabs.querySelectorAll<HTMLElement>(\"[data-lsg-tabs-panel]\"));\n if (!tabList.length) return;\n\n const isVertical = tabs.classList.contains(\"lsg-tabs--vertical\");\n\n // Below the mobile breakpoint LsgTabs.scss restyles this as a single-open\n // accordion, where re-pressing the open header collapses it. Collapsing is a\n // separate class rather than \"no tab selected\", so exactly one tab stays\n // selected at every width and resizing back to desktop needs no handling.\n const isMobile = (): boolean => root.matchMedia(MOBILE_MEDIA_QUERY).matches;\n\n const syncExpanded = (): void => {\n const mobile = isMobile();\n tabList.forEach((tab, i) => {\n if (!mobile) {\n // Desktop is a tab strip — aria-selected carries the state, and the\n // collapsed class has no styling, so aria-expanded would be misleading.\n tab.removeAttribute(\"aria-expanded\");\n return;\n }\n const panel = panels[i];\n const open =\n tab.classList.contains(\"lsg-tabs__tab--active\") &&\n !panel?.classList.contains(\"lsg-tabs__panel--collapsed\");\n tab.setAttribute(\"aria-expanded\", String(open));\n });\n };\n\n // ── Scroll arrows ───────────────────────────────────────────────────────\n // The arrows are ::before / ::after on the root (see LsgTabs.scss), so no DOM\n // is added. All this has to do is say whether there is anything left to\n // reveal in each direction; the classes below are what make them visible.\n const SCROLL_EPSILON = 1; // sub-pixel layout rounding\n const START_CLASS = \"lsg-tabs--scroll-start\";\n const END_CLASS = \"lsg-tabs--scroll-end\";\n\n const updateArrows = (): void => {\n // Below the breakpoint the strip is an accordion — nothing scrolls, so the\n // arrows must not be offered. Owning that here keeps CSS out of a\n // specificity fight with the vertical variant's arrow rules.\n if (!tabStrip || isMobile()) {\n tabs.classList.remove(START_CLASS, END_CLASS);\n return;\n }\n\n const offset = isVertical ? tabStrip.scrollTop : tabStrip.scrollLeft;\n const visible = isVertical ? tabStrip.clientHeight : tabStrip.clientWidth;\n const total = isVertical ? tabStrip.scrollHeight : tabStrip.scrollWidth;\n\n tabs.classList.toggle(START_CLASS, offset > SCROLL_EPSILON);\n tabs.classList.toggle(END_CLASS, offset + visible < total - SCROLL_EPSILON);\n };\n\n const scrollStrip = (direction: -1 | 1): void => {\n if (!tabStrip) return;\n // A step just under one viewport keeps a sliver of context in view\n const visible = isVertical ? tabStrip.clientHeight : tabStrip.clientWidth;\n const step = Math.max(visible * 0.8, 1);\n if (isVertical) {\n tabStrip.scrollTop += direction * step;\n } else {\n tabStrip.scrollLeft += direction * step;\n }\n };\n\n const activate = (index: number, moveFocus: boolean): void => {\n const target = tabList[index];\n if (!target) return;\n\n tabList.forEach((tab, i) => {\n const isActive = i === index;\n tab.classList.toggle(\"lsg-tabs__tab--active\", isActive);\n tab.classList.toggle(\"cmp-tabs__tab--active\", isActive);\n tab.setAttribute(\"aria-selected\", String(isActive));\n // Roving tabindex — only the active tab is in the tab order\n tab.setAttribute(\"tabindex\", isActive ? \"0\" : \"-1\");\n });\n\n panels.forEach((panel, i) => {\n const isActive = i === index;\n panel.classList.toggle(\"lsg-tabs__panel--active\", isActive);\n panel.classList.toggle(\"cmp-tabs__tabpanel--active\", isActive);\n panel.classList.remove(\"lsg-tabs__panel--collapsed\");\n });\n\n syncExpanded();\n // Arrow-key navigation can land on a tab that is scrolled out of the strip\n target.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n updateArrows();\n if (moveFocus) target.focus();\n };\n\n const currentIndex = (): number => {\n const found = tabList.findIndex((tab) =>\n tab.classList.contains(\"lsg-tabs__tab--active\")\n );\n return found === -1 ? 0 : found;\n };\n\n const press = (index: number): void => {\n if (isMobile() && index === currentIndex()) {\n panels[index]?.classList.toggle(\"lsg-tabs__panel--collapsed\");\n syncExpanded();\n return;\n }\n activate(index, false);\n };\n\n // Crossing the breakpoint switches between tab strip and accordion, which\n // changes both the aria model and whether the arrows apply at all.\n root.matchMedia(MOBILE_MEDIA_QUERY).addEventListener(\"change\", () => {\n syncExpanded();\n updateArrows();\n });\n\n tabStrip?.addEventListener(\"scroll\", updateArrows, { passive: true });\n\n const ResizeObserverCtor = (\n root as Window & { ResizeObserver?: typeof ResizeObserver }\n ).ResizeObserver;\n\n if (typeof ResizeObserverCtor !== \"undefined\") {\n // The strip can start overflowing because its container changed, with no\n // viewport resize at all — an AEM column layout, or a panel opening above.\n const observer = new ResizeObserverCtor(() => updateArrows());\n observer.observe(tabs);\n if (tabStrip) observer.observe(tabStrip);\n } else {\n root.addEventListener(\"resize\", updateArrows);\n }\n\n // The arrows are pseudo-elements painted above the strip, so a click on one\n // hit-tests to the root rather than to a tab or panel. Nothing else on the\n // root is clickable, which is what makes this unambiguous.\n tabs.addEventListener(\"click\", (event: MouseEvent) => {\n if (event.target !== tabs || !tabStrip) return;\n\n const rect = tabStrip.getBoundingClientRect();\n const beforeMidpoint = isVertical\n ? event.clientY < rect.top + rect.height / 2\n : event.clientX < rect.left + rect.width / 2;\n\n scrollStrip(beforeMidpoint ? -1 : 1);\n });\n\n syncExpanded();\n updateArrows();\n\n // A late web-font swap widens the labels, growing scrollWidth without changing\n // the strip's own box — so ResizeObserver may never fire. Re-measure once the\n // fonts have settled, otherwise the arrows can be stale on first paint.\n root.document.fonts?.ready.then(() => updateArrows());\n\n tabList.forEach((tab, index) => {\n tab.addEventListener(\"click\", () => press(index));\n\n // role=\"tab\" requires arrow-key navigation, and these are <li> not <button>,\n // so there is no native keyboard behaviour to fall back on.\n tab.addEventListener(\"keydown\", (event: KeyboardEvent) => {\n const last = tabList.length - 1;\n const from = currentIndex();\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n activate(from === last ? 0 : from + 1, true);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n activate(from === 0 ? last : from - 1, true);\n break;\n case \"Home\":\n event.preventDefault();\n activate(0, true);\n break;\n case \"End\":\n event.preventDefault();\n activate(last, true);\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n press(index);\n break;\n default:\n break;\n }\n });\n });\n });\n}\n\nfunction buildEmbedUrl(videoUrl: string, opts: { autoplay: boolean; loop: boolean; muted: boolean }): string | null {\n try {\n const url = new URL(videoUrl);\n const host = url.hostname.replace(/^www\\./, \"\");\n const path = url.pathname;\n\n if (host === \"youtube.com\" || host === \"youtube-nocookie.com\" || host === \"youtu.be\") {\n let id: string | null = null;\n if (host === \"youtu.be\") {\n id = path.slice(1);\n } else if (path.startsWith(\"/embed/\") || path.startsWith(\"/shorts/\")) {\n id = path.split(\"/\")[2];\n } else if (path === \"/watch\") {\n id = url.searchParams.get(\"v\");\n }\n if (id && /^[A-Za-z0-9_-]{11}$/.test(id)) {\n const baseHost = host === \"youtube-nocookie.com\" ? \"youtube-nocookie.com\" : \"youtube.com\";\n const embedUrl = new URL(`https://www.${baseHost}/embed/${id}`);\n embedUrl.searchParams.set(\"autoplay\", \"1\");\n embedUrl.searchParams.set(\"mute\", opts.muted ? \"1\" : \"0\");\n embedUrl.searchParams.set(\"rel\", \"0\");\n if (opts.loop) {\n embedUrl.searchParams.set(\"loop\", \"1\");\n embedUrl.searchParams.set(\"playlist\", id);\n }\n return embedUrl.toString();\n }\n }\n\n if (host === \"vimeo.com\" || host === \"player.vimeo.com\") {\n let id: string | null = null;\n if (host === \"player.vimeo.com\" && path.startsWith(\"/video/\")) {\n id = path.split(\"/\")[2];\n } else {\n const match = path.match(/^\\/(\\d+)$/);\n if (match) id = match[1];\n }\n if (id && /^\\d+$/.test(id)) {\n const embedUrl = new URL(`https://player.vimeo.com/video/${id}`);\n embedUrl.searchParams.set(\"autoplay\", \"1\");\n embedUrl.searchParams.set(\"muted\", opts.muted ? \"1\" : \"0\");\n embedUrl.searchParams.set(\"loop\", opts.loop ? \"1\" : \"0\");\n return embedUrl.toString();\n }\n }\n } catch {\n // relative / DAM path — native source\n }\n return null;\n}\n\nexport function bootLsgVideo(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-video]\").forEach((video) => {\n const playBtn = video.querySelector<HTMLButtonElement>(\"button.lsg-video__play\");\n if (!playBtn) return;\n\n const rawUrl = video.dataset.lsgVideoUrl;\n if (!rawUrl) return;\n\n const autoplay = video.dataset.lsgVideoAutoplay === \"true\";\n const loop = video.dataset.lsgVideoLoop === \"true\";\n const muted = video.dataset.lsgVideoMuted === \"true\";\n\n playBtn.addEventListener(\"click\", () => {\n const media = video.querySelector<HTMLElement>(\".lsg-video__media\");\n if (!media) return;\n\n const embedUrl = buildEmbedUrl(rawUrl, { autoplay, loop, muted });\n media.innerHTML = \"\";\n\n if (embedUrl) {\n const wrap = root.document.createElement(\"div\");\n wrap.className = \"lsg-video__embed\";\n const iframe = root.document.createElement(\"iframe\");\n iframe.className = \"lsg-video__iframe\";\n iframe.src = embedUrl;\n iframe.setAttribute(\"allow\", \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\");\n iframe.setAttribute(\"referrerpolicy\", \"strict-origin-when-cross-origin\");\n iframe.setAttribute(\"allowfullscreen\", \"\");\n iframe.setAttribute(\"loading\", \"lazy\");\n iframe.title = video.querySelector(\".lsg-video__title\")?.textContent ?? \"Video\";\n wrap.appendChild(iframe);\n media.appendChild(wrap);\n } else {\n const videoEl = root.document.createElement(\"video\");\n videoEl.className = \"lsg-video__native\";\n videoEl.controls = true;\n videoEl.autoplay = true;\n videoEl.playsInline = true;\n if (loop) videoEl.loop = true;\n if (muted) videoEl.muted = true;\n const source = root.document.createElement(\"source\");\n source.src = rawUrl;\n videoEl.appendChild(source);\n media.appendChild(videoEl);\n videoEl.play().catch(() => {\n // ignore autoplay policy\n });\n }\n });\n });\n}\n\nexport function bootLsgClientlib(themeName: string, root: Window = window): void {\n const init = (): void => {\n root.document.documentElement.dataset.lsgTheme = themeName;\n hydrateStaticIcons(root);\n initHeaders(root);\n initLangSwitchers(root);\n initSearchOverlay(root);\n initHero(root);\n bootLsgAccordion(root);\n bootLsgTabs(root);\n bootLsgVideo(root);\n };\n\n if (root.document.readyState === \"loading\") {\n root.document.addEventListener(\"DOMContentLoaded\", init, { once: true });\n return;\n }\n\n init();\n}","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\n\n/**\n * Framework-agnostic Embla controller shared by the React carousel and the AEM\n * clientlib runtime. Keep behaviour here so Storybook and server-rendered HTL\n * use exactly the same navigation and selected-state logic.\n */\nexport interface LsgCarouselControllerElements {\n prevBtn?: HTMLElement | null;\n nextBtn?: HTMLElement | null;\n paginationBtns?: Iterable<HTMLElement> | null;\n}\n\nexport type LsgCarouselDirection = \"ltr\" | \"rtl\";\n\nexport interface LsgCarouselControllerOptions {\n loop?: boolean;\n /**\n * Embla content direction. Media-left variants use RTL so the active media is\n * anchored on the right edge of the viewport and the adjacent slide peeks in\n * from the left, matching the mirrored Figma compositions.\n *\n * Embla requires the viewport/track CSS direction to match this value. The\n * React component sets `dir` on the viewport and the AEM boot path mirrors it.\n */\n direction?: LsgCarouselDirection;\n}\n\nexport class LsgCarouselController {\n private embla: EmblaCarouselType | null = null;\n private readonly els: LsgCarouselControllerElements;\n private readonly paginationBtns: HTMLElement[];\n private readonly paginationHandlers: Array<() => void>;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgCarouselControllerElements = {},\n options: LsgCarouselControllerOptions = {},\n ) {\n this.els = elements;\n this.paginationBtns = elements.paginationBtns\n ? Array.from(elements.paginationBtns)\n : [];\n\n this.embla = EmblaCarousel(viewport, {\n align: \"start\",\n // Every authored media item owns a pagination dot. `trimSnaps` can remove\n // the final snap when two-up/peek layouts do not have enough overflow,\n // leaving the last authored item only partially reachable. Keep all snaps\n // so dot/item indexes stay 1:1 for 2, 3, 4, ... media items.\n containScroll: false,\n direction: options.direction ?? \"ltr\",\n loop: options.loop ?? true,\n skipSnaps: false,\n slidesToScroll: 1,\n });\n\n this.paginationHandlers = this.paginationBtns.map((_, index) => () => {\n this.embla?.scrollTo(index);\n });\n\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.addEventListener(\"click\", this.paginationHandlers[index]);\n });\n\n this.embla.on(\"select\", this.syncSelectedState);\n this.embla.on(\"reInit\", this.syncSelectedState);\n this.syncSelectedState();\n }\n\n /**\n * Embla automatically falls back to non-looping mode when there is not enough\n * slide content to create a safe loop (most noticeable with two-up layouts and\n * only 2–3 authored items). Keep the arrow contract cyclic in that fallback:\n * when there is no native previous snap, jump to the final authored snap.\n */\n readonly scrollPrev = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollPrev()) {\n this.embla.scrollPrev();\n return;\n }\n\n const lastSnap = this.embla.scrollSnapList().length - 1;\n if (lastSnap >= 0) this.embla.scrollTo(lastSnap);\n };\n\n /** See `scrollPrev` for why the explicit wrap fallback is required. */\n readonly scrollNext = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollNext()) {\n this.embla.scrollNext();\n return;\n }\n\n if (this.embla.scrollSnapList().length > 0) this.embla.scrollTo(0);\n };\n\n private readonly syncSelectedState = (): void => {\n const selected = this.embla?.selectedScrollSnap() ?? 0;\n this.paginationBtns.forEach((button, index) => {\n const active = index === selected;\n button.classList.toggle(\"lsg-carousel__dot--active\", active);\n button.setAttribute(\"aria-current\", active ? \"true\" : \"false\");\n });\n };\n\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n destroy(): void {\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.removeEventListener(\"click\", this.paginationHandlers[index]);\n });\n if (this.embla) {\n this.embla.off(\"select\", this.syncSelectedState);\n this.embla.off(\"reInit\", this.syncSelectedState);\n this.embla.destroy();\n this.embla = null;\n }\n }\n}\n","import { LsgCarouselController } from \"./LsgCarouselController\";\nimport type { LsgCarouselDirection } from \"./LsgCarouselController\";\n\n/**\n * Initialise server-rendered LSG carousel markup (AEM/clientlib mode).\n * React uses the same LsgCarouselController directly.\n *\n * AEM can layer these LSG hooks/classes onto the existing Core Carousel content\n * and item elements; the controller only requires a viewport, slide elements and\n * optional navigation controls, so authoring/Core Carousel markup does not need\n * to be replaced by a React-specific structure.\n */\nexport function bootLsgCarousel(root: Window = window): void {\n root.document.querySelectorAll<HTMLElement>(\"[data-lsg-is='carousel']\").forEach((carousel) => {\n if (carousel.dataset.lsgCarouselReady === \"true\") return;\n\n const viewport = carousel.querySelector<HTMLElement>(\".lsg-carousel__viewport\");\n const slides = carousel.querySelectorAll<HTMLElement>(\".lsg-carousel__slide\");\n if (!viewport || slides.length < 2) return;\n\n const layout = carousel.dataset.lsgCarouselLayout;\n const direction = (\n carousel.dataset.lsgCarouselDirection ?? (layout === \"media-left\" ? \"rtl\" : \"ltr\")\n ) as LsgCarouselDirection;\n\n // Embla requires its logical direction and the rendered viewport direction to\n // agree. Setting `dir` here also makes server-rendered HTL resilient if the\n // attribute was omitted while authoring/edit markup is being composed.\n viewport.setAttribute(\"dir\", direction);\n\n new LsgCarouselController(\n viewport,\n {\n prevBtn: carousel.querySelector<HTMLElement>(\"[data-lsg-carousel-prev]\"),\n nextBtn: carousel.querySelector<HTMLElement>(\"[data-lsg-carousel-next]\"),\n paginationBtns: carousel.querySelectorAll<HTMLElement>(\"[data-lsg-carousel-dot]\"),\n },\n { loop: true, direction },\n );\n\n carousel.dataset.lsgCarouselReady = \"true\";\n });\n}\n","// Theme 3 wears its pill much rounder than the rest of the system.\n//\n// AEM ships a single token whose value varies — Styles.java maps the author's\n// Square / Rounded / Pill choice to --lsg-theme-radius: 0px | 10px | 25px in the\n// style block injected into the page head. The token name never changes, so the\n// only way to recognise \"the author picked Pill\" at runtime is by its value.\n// Square and Rounded are deliberately left alone.\n//\n// Shared by theme-3/theme-clientlib.ts (AEM) and .storybook/preview.tsx, so the\n// 80px lives in one place rather than being restated per environment.\n\n/** The value Styles.java emits for the \"Pill\" shape. */\nconst AEM_PILL_RADIUS = \"25px\";\n\n/** What Pill means for theme 3. */\nconst THEME_3_PILL_RADIUS = \"80px\";\n\n/**\n * Re-points --lsg-theme-radius at theme 3's pill when the page is set to Pill.\n *\n * Idempotent and reversible: the previous override is always cleared before the\n * value is read. That matters for Storybook, where one document serves all three\n * themes and both toolbars change live — without the reset, an inline 80px would\n * mask the incoming value and the override could never be re-evaluated. On an AEM\n * page neither the theme nor the shape changes after load, so it runs once.\n *\n * @param active Whether theme 3 is the active theme. Always true in AEM, where\n * theme-3.js only loads on theme-3 pages; the Storybook toolbar drives it.\n */\nexport function applyTheme3PillRadius(root: HTMLElement, active = true, targetElement?: HTMLElement[]): void {\n root.style.removeProperty(\"--lsg-theme-radius\");\n\n if (!active) {\n return;\n }\n\n // Reads the cascade with the override gone, so this is the injected value.\n const radius = getComputedStyle(root).getPropertyValue(\"--lsg-theme-radius\").trim();\n\n if (radius === AEM_PILL_RADIUS) {\n // root.style.setProperty(\"--lsg-theme-radius\", THEME_3_PILL_RADIUS);\n // foreach each element in the targetElement array, set its --lsg-theme-radius to THEME_3_PILL_RADIUS.\n (targetElement ?? [root.querySelector(\"header\")].filter(Boolean) as HTMLElement[]).forEach(element => {\n element.style.setProperty(\"--lsg-theme-radius\", THEME_3_PILL_RADIUS);\n });\n\n }\n}\n","import { bootLsgClientlib } from \"../../components/lsg/lsg-clientlib-runtime\";\nimport { bootLsgCarousel } from \"../../components/lsg/LsgCarousel/bootLsgCarousel\";\nimport { applyTheme3PillRadius } from \"./applyTheme3PillRadius\";\n\nbootLsgClientlib(\"theme-3\");\n\n// Deliberately synchronous rather than deferred to bootLsgClientlib's\n// DOMContentLoaded init: the head's injected style block is already parsed by the\n// time this footer script runs, so the radius is readable now and waiting would\n// only widen the window in which the page shows the un-overridden 25px.\napplyTheme3PillRadius(document.documentElement, true, [document.querySelector(\"header\")].filter(Boolean) as HTMLElement[]);\n\nbootLsgCarousel();"],"names":["isNumber","EmblaCarouselFade"],"mappings":"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","x_google_ignoreList":[0,2,3]}
|